Audiobus: Use your music apps together.

What is Audiobus?Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.

Download on the App Store

Audiobus is the app that makes the rest of your setup better.

Request new Mozaic Scripts *HERE*

12425262830

Comments

  • @TheOriginalPaulB said:
    @Tatobx
    Good luck with updating the button labels with the status descriptions of the 4 knobs. That’s exactly the issue I ran into with my fugue generator. Lack of string handling means that you need a different LabelPad call for every possible different combination of settings. That boils down to huge if/elseif trees that quickly run into the script length limitation. It’s fine if all you want to do is display numeric variables, it’s only strings that are a problem.

    Thanks @TheOriginalPaulB
    in fact updating pad labels is not a priority. It would be fine to have display numeric variables only.
    You could also have a visual match with the color and flashing of the Mozaic pad itself.

  • @Tatobx said:

    @TheOriginalPaulB said:
    @Tatobx
    Good luck with updating the button labels with the status descriptions of the 4 knobs. That’s exactly the issue I ran into with my fugue generator. Lack of string handling means that you need a different LabelPad call for every possible different combination of settings. That boils down to huge if/elseif trees that quickly run into the script length limitation. It’s fine if all you want to do is display numeric variables, it’s only strings that are a problem.

    Thanks @TheOriginalPaulB
    in fact updating pad labels is not a priority. It would be fine to have display numeric variables only.
    You could also have a visual match with the color and flashing of the Mozaic pad itself.

    Good idea. Anything that doesn’t involve the need to build strings would probably lead to less frustration.

  • edited November 2020

    :) :p B) :# :o This is a BIG request :o :# B) :p >:)

    Map between AUM or Audiobus and a Launchpad mk3. So the Ableton ‘session mode’ of mixing sliders, sends and returns, mutes, and solos is possible.

    I.e. https://github.com/git-moss/DrivenByMoss-Documentation/blob/master/Novation/Novation-LaunchkeyMiniMk3.md

    I can help.. testing (and a bit of coding).

  • Listen to the audio file, and if you like it I can upload the plugin so you can try it se how it works for you ( and you might even be able to improve it quite a bit, because I do not think it is very elegant.......you could possibly add some knobs to be able to reroute the Note On Velocity to other CC's).

    Holy moley, that sounds good, lovely playing!

    I would definitely give that a go, and it sounds like you’ve got it nicely dialled in... my code is as rough as can be so I wouldn’t worry :)

    Here is the code

    @OnLoad

    ShowLayout 0

    @End

    @OnMidiInput

    SendMIDIThruOnCh 1 // send everything to channel 2

    @End

    @OnMidiNoteOn // when Note On Velocity received do the following

    vel= MIDIVelocity //read velocity number
    SendMIDIOut 0xD1, vel //convert to ChannelPressure on Ch2
    SendMIDICC 1, 20,vel // send velocity to Sax Formant on           Ch2
    SendMIDICC 1, 22, (vel + 30 )//send reduced velocity to     Sax Growl ON-OFF on Ch2
    

    @End

    @OnMidiCC // if there are MIDI CC then...

    SendMIDIOut 0xE1  //send PitchBend on Ch2
    

    @End

  • _ki_ki
    edited November 2020

    @GeeBee You can make the code of your post more readable if you ‚edit‘ it again and add three backticks before and three more after the code.

    Backticks `are not easy to input on IOS, the simplest way to get 6 of them is by using the forums edit menu, open the Paragraph popdown (left of the smiley popdown) and press three times ‚Code‘ , Now you could select three of them and move them to the end of your listing. This creates an indented code block.

    .

    BTW: Your mp3 example was wonderfull - and if i understood correclty, you played the GeoSax using a guitar running through midiguitar to get midi notes from the audio and then additionally modified the midi using the above script to convert the expressions. Very cool :)

  • @GeeBee said:

    Listen to the audio file, and if you like it I can upload the plugin so you can try it se how it works for you ( and you might even be able to improve it quite a bit, because I do not think it is very elegant.......you could possibly add some knobs to be able to reroute the Note On Velocity to other CC's).

    Holy moley, that sounds good, lovely playing!

    I would definitely give that a go, and it sounds like you’ve got it nicely dialled in... my code is as rough as can be so I wouldn’t worry :)

    Here is the code

    @OnLoad

    ShowLayout 0

    @End

    @OnMidiInput

    SendMIDIThruOnCh 1 // send everything to channel 2

    @End

    @OnMidiNoteOn // when Note On Velocity received do the following

    vel= MIDIVelocity //read velocity number
    SendMIDIOut 0xD1, vel //convert to ChannelPressure on Ch2
    SendMIDICC 1, 20,vel // send velocity to Sax Formant on           Ch2
    

    SendMIDICC 1, 22, (vel + 30 )//send reduced velocity to Sax Growl ON-OFF on Ch2

    @End

    @OnMidiCC // if there are MIDI CC then...

    SendMIDIOut 0xE1  //send PitchBend on Ch2
    

    @End

    Works a treat, if only I’d spotted the SendMIDIThruOnCh, i might have saved myself a right nightmare... I’ll update my chord one with that!

    Cheers

  • @_ki said:
    @GeeBee You can make the code of your post more readable if you ‚edit‘ it again and add three backticks before and three more after the code.

    Backticks `are not easy to input on IOS, the simplest way to get 6 of them is by using the forums edit menu, open the Paragraph popdown (left of the smiley popdown) and press three times ‚Code‘ , Now you could select three of them and move them to the end of your listing. This creates an indented code block.

    .

    BTW: Your mp3 example was wonderfull - and if i understood correclty, you played the GeoSax using a guitar running through midiguitar to get midi notes from the audio and then additionally modified the midi using the above script to convert the expressions. Very cool :)

    Thank you for the compliments. The way you describe it, is the way I'm doing it. Just to clarify, the guitar is played live and there is no post editing whatsoever. I am really surprised on how well the Midi Guitar 2 iPad app tracks the string vibrations and converts them into midi data. ( Thanks for the tip on backtics i will try it out ...)

  • Code for the MidiGuitar 2 converterto play GeoSax SWAM ( with the backtics)

    @OnLoad 
    
      ShowLayout 0
    
    @End 
    
    @OnMidiInput
    
       SendMIDIThruOnCh 1 // send everything to channel 2
    
    @End 
    
    @OnMidiNoteOn // when Note On Velocity received do the following
    
        vel= MIDIVelocity  //read velocity number
        SendMIDIOut 0xD1, vel  //convert to ChannelPressure on Ch2
        SendMIDICC 1, 20,vel   //send velocity to Sax Formant on Ch2
        SendMIDICC 1, 22, (vel + 30 )  //send reduced velocity to Sax Growl ON-OFF on Ch2
    
    @End 
    
    @OnMidiCC // if there are MIDI CC then...
    
        SendMIDIOut 0xE1  //send PitchBend on Ch2
    
    @End
    
  • McDMcD
    edited November 2020

    REQUEST FOR SCRIPT: make a script that toggles rhythmic CC's to make a Channel in AUM "glitch" creating a rhythmic pulsing sound (like Perforator).

    Converting MIDI notes to CC 127 and 0 events.

    NOTE ON -> CC = 127 (or some settable level via variable or knob)
    NOTE OFF -> CC = 0 (or some settable level via variable or knob)

    If it exists or a script could be tweaked for this behavior.

    Ready... set... code!

    @Description
    
      Using Bram's Mozaic to emulate Bram's Perforator
      in the manner of Bram's Rozetta LFO
    
    @End
    
    @OnLoad
    
    @End
    
    
    @OnMidiInput
      if MIDICommand = 144
        SendMIDICC 0, 13, 127
        SendMIDICC 0, 13, 0, 30
      elseif
        SendMIDIThru
      endif
    @End
    

    This is what it does to an audio track.
    1. 7 seconds of Perfomatic processed audio
    2. after 7 seconds the DrumComputer source is added to the mix
    3. at the 20 second period you can hear the audio source without "holes"
    4. then ending with just perfomatic audio.

  • Hello everybody: I would need a simple script to do the following:
    When I play a given note ( say E1 for sake of argument ) I need to send a CC command ( say # 20 ) with a speed of 127 , to turn on a parameter and when I play that same note again later , send the same CC with speed 0 , to turn off the parameter. ( I tried several alternatives but only manage to get the "turn on " command, I gave up on turning it off ). Thanks in advance !!

  • McDMcD
    edited December 2020

    @GeeBee said:
    Hello everybody: I would need a simple script to do the following:
    When I play a given note ( say E1 for sake of argument ) I need to send a CC command ( say # 20 ) with a speed of 127 , to turn on a parameter and when I play that same note again later , send the same CC with speed 0 , to turn off the parameter. ( I tried several alternatives but only manage to get the "turn on " command, I gave up on turning it off ). Thanks in advance !!

    If you copy your script to this thread it will be easy to suggest the right changes to make the CC toggle with each Note input. It just takes a "state variable" so each input gets switched to send the correct statement to toggle the CC value between 127 or 0.

    You and a lot of lurkers will learn a very common programming pattern i Mozaic. That's the "teach a man to fish" model that's more powerful than the
    "give a man a fish" which is how PatchStorage works. PatchStorage is good for 9 course meals of fish, fowl, veggies, dessert, vino and a cigar.

    Your ask is a simple trout. You're very close to having written it all if you have the ON case solved.

  • @McD said:

    @GeeBee said:
    Hello everybody: I would need a simple script to do the following:
    When I play a given note ( say E1 for sake of argument ) I need to send a CC command ( say # 20 ) with a speed of 127 , to turn on a parameter and when I play that same note again later , send the same CC with speed 0 , to turn off the parameter. ( I tried several alternatives but only manage to get the "turn on " command, I gave up on turning it off ). Thanks in advance !!

    If you copy your script to this thread it will be easy to suggest the right changes to make the CC toggle with each Note input. It just takes a "state variable" so each input gets switched to send the correct statement to toggle the CC value between 127 or 0.

    You and a lot of lurkers will learn a very common programming pattern i Mozaic. That's the "teach a man to fish" model that's more powerful than the
    "give a man a fish" which is how PatchStorage works. PatchStorage is good for 9 course meals of fish, fowl, veggies, dessert, vino and a cigar.

    Your ask is a simple trout. You're very close to having written it all if you have the ON case solved.

    Thank you very much, here it goes:

    @OnMidiInput
    
    if MIDINote = 40
    
    SendMIDICC 1, 20 , 127
    
    endif
    
    @End  
    
  • @GeeBee said:
    Thank you very much, here it goes:

    I haven't tested this yet... But someone will correct me if I mess up.

    @Onload
    
       // preset the value of the ON/OFF Toggle to be used for CC = 20 changes.
       State = NO
    
    @End
    
    @OnMidiInput
    
    
    
    if MIDINote = 40
    
      // One of the SendMIDICC's below will be sent for this note occurrence.
      // They will alternate like a Toggle switch.
    
       if State = NO // Time to set CC = 20 on.
          SendMIDICC 1, 20 , 127
          State = YES
       elseif // State MUST be YES (on) now so do this.
          SendMIDI 1, 20, 0
          State = NO
       endif
    
    endif 
    
    @End  
    
  • edited December 2020

    @GeeBee That GeoSax track played on a guitar is mind-bendingly good. If I hadn't read how it was generated, I'd have no idea that it wasn't a real sax.

  • @lukesleepwalker said:
    @GeeBee That GeoSax track played on a guitar is mind-bendingly good. If I hadn't read how it was generated, I'd have no idea that it wasn't a real sax.

    Thank you very much ( I also posted another sample track in Youtube ). I am still working on the Mozaic plugin to see if I can improve some of the functions to be able to give the sound even more dynamics.

  • Impressive! Would love to get a screen shot of the MG settings. Obviously you have a good enough ear to understand what sax phrasing sounds like.

  • @McD said:

    @GeeBee said:
    Thank you very much, here it goes:

    I haven't tested this yet... But someone will correct me if I mess up.

    @Onload
    
       // preset the value of the ON/OFF Toggle to be used for CC = 20 changes.
       State = NO
    
    @End
    
    @OnMidiInput
    
    
     
    if MIDINote = 40
    
      // One of the SendMIDICC's below will be sent for this note occurrence.
      // They will alternate like a Toggle switch.
    
       if State = NO // Time to set CC = 20 on.
          SendMIDICC 1, 20 , 127
          State = YES
       elseif // State MUST be YES (on) now so do this.
          SendMIDI 1, 20, 0
          State = NO
       endif
    
    endif 
    
    @End
    

    Ok, thank you very much. I gave it a couple of runs but there's some trouble.

    I had to replace the "elseif" for an "else" , and also changed "SendMIDI" to "SendMIDICC".

    However what I get is that it does send the "ON" command alright when I play key 40 but then inmediately after it sends the "OFF" command. So it does not work as intended.
    So I changed the original "if MIDINote = 40 " for "if MIDICommand = 144, 40" , in this way it only responds to the Note On message each time , and it switches alternatively from "YES" to "NO" only when it gets the Note On message. Here is the complete code which I tested and works as intended.Thank you very much for the help and also for the learning. Cheers

    @Onload
    
       // preset the value of the ON/OFF Toggle to be used for CC = 20 changes.
       State = NO
    
    @End
    
    @OnMidiInput
    
    
    
    if MIDICommand  = 144 , 40
    
      // One of the SendMIDICC's below will be sent for this note on the "Note ON " occurrence.
      // They will alternate like a Toggle switch.
    
       if State = NO // Time to set CC = 20 on.
          SendMIDICC 1, 20 , 127
          State = YES
       else // State MUST be YES (on) now so do this.
          SendMIDICC 1, 20, 0 
          State = NO
       endif
    
    endif 
    
    @End
    
    
  • @GeeBee said:
    Thank you very much for the help and also for the learning. Cheers

    Feels pretty cool, right? That's what become addicting. Solving problems and making
    re-usable, shareable tools. Since it worked out... I'm glad I had errors in my solution.
    You learn a lot more when you found the right statements to enforce the toggle and the
    event detection.

    I started a tutorial thread that you could follow to pick up more cool tricks.

    https://forum.audiob.us/discussion/36604/learn-to-program-the-mozaic-workshop-to-create-midi-fx-and-controllers-you-could-learn-something/p1

  • edited December 2020

    You only need one SendMIDICC call.

    @OnLoad
    ccval = 127
    @End

    @OnMidiNoteOn

    if (MIDINote = 40)
    SendMIDICC 1, 20, ccval
    if (ccval > 0)
    ccval = 0
    else
    ccval = 127
    endif
    endif

    @End

  • @McD said:

    @GeeBee said:
    Thank you very much for the help and also for the learning. Cheers

    Feels pretty cool, right? That's what become addicting. Solving problems and making
    re-usable, shareable tools. Since it worked out... I'm glad I had errors in my solution.
    You learn a lot more when you found the right statements to enforce the toggle and the
    event detection.

    I started a tutorial thread that you could follow to pick up more cool tricks.

    https://forum.audiob.us/discussion/36604/learn-to-program-the-mozaic-workshop-to-create-midi-fx-and-controllers-you-could-learn-something/p1

    Thanks........I think I claimed victory too fast. The " if MIDICommand = 144 , 40" triggers when ANY Note On is played , not only when I play note 40 . So I had to replace it for:

    "if MIDICommand = 144 and MIDINote = 40 "

    Thanks again and I'll take a look at the thread

  • heshes
    edited December 2020

    @GeeBee

    Try changing back to McD's version, but with your changes of 'else' instead of 'elseif' and 'SendMIDICC' instead of 'SendMIDI'

    Then change '@OnMidiInput'

    to '@OnMidiNoteOn'

    The version that was turning on and off immediately was because '@OnMidiInput' gets called for both NoteOn and NoteOff events. So the CC was going to 127 when you pressed down on the note, and then switched to 0 when you let off the note. Using @OnMidiNoteOn event avoids that problem, gets called only when you press down on the note, not when you let up.

    EDIT: Whoops, just noticed your previous post where you're checking for MIDICommand = 144 in @OnMidiInput event. That should work, too, but making use of the separate event for @OnMidiNoteOn events only can make your code a little cleaner, no need to check for command type because only Midi On events get into @OnMidiNoteOn event.

    You may also want to retain @OnMidiInput, unless somewhere else in your code you're sending midi thru:

    @OnMidiInput
      SendMidiThru
    @END
    
  • On another issue:

    I am using the following command to send Channel Pressure ( on Ch 2) with attenuated pressure values so it does not fade away so quickly
    " SendMIDIOut 0xD1, TranslateCurve MIDIByte3 , 0.3 ,0 ,127 "

    (The MIDIByte3 is a value I get from the Aftertouch message).

    The TranslateCurve does the job of attenuating ( stretching ) the values but it starts at , say, 127 and drops gradually to 41 and stops at that value. That is, it does not go all the way down to 0. If I change the curve parameter from 0.3 to , say, 0.6, then the pressure values start also at the highest values, say 127, but drop to 13 and get stuck at that level and take a shorter time to do so. It is only when I use the curve parameter of 1 that the pressure values go all the way down to zero, but then , at this value the drop from 127 to 0 is very fast and defeats the purpose ( or at leas the idea that I have to make the Channel Pressure last longer )

    In other words, I must be mistaken.......I understood that TranslateCurve would let you "stretch" the timing from the moment a value hits 127 ( or the highest input value ) and goes down to zero. What is it that I am missing ( or am I misusing the TranslateCurve instruction ).

  • @lukesleepwalker said:
    Impressive! Would love to get a screen shot of the MG settings. Obviously you have a good enough ear to understand what sax phrasing sounds like.

    @lukesleepwalker said:
    Impressive! Would love to get a screen shot of the MG settings. Obviously you have a good enough ear to understand what sax phrasing sounds like.

    Thanks, I did play a bit of alto sax some time ago, but not enough to sound good. Then i discovered the combination of the Akai EWI and the Audio Modelling Sax Brothers, and have been playing mostly that over the past couple of years. But since i also play some guitar i decided to give it a try to Jam Origin's Midi Guitar software and see what could
    come out with the new Geoshred SWAM Tenor Sax. I think that if you listen to some jazz sax music you can easily get the idea of the phrasings and nuances. Just experiment fooling around with the guitar and sooner than later something pleasant can come out. I even combined the whole set with a Mozaic Patch that forces notes into a given scale and you can basically play any note on the guitar at a blazing speed .....and it will sound in tune. It's fun.
    Regarding the settings ,here I post a screen shot of mine, but be aware that they depend on the output of your guitar and the output of your interfase....so you will need to adjust the gain and noise gate accordingly (trial and error).

  • @hes said:
    @GeeBee

    Try changing back to McD's version, but with your changes of 'else' instead of 'elseif' and 'SendMIDICC' instead of 'SendMIDI'

    Then change '@OnMidiInput'

    to '@OnMidiNoteOn'

    The version that was turning on and off immediately was because '@OnMidiInput' gets called for both NoteOn and NoteOff events. So the CC was going to 127 when you pressed down on the note, and then switched to 0 when you let off the note. Using @OnMidiNoteOn event avoids that problem, gets called only when you press down on the note, not when you let up.

    EDIT: Whoops, just noticed your previous post where you're checking for MIDICommand = 144 in @OnMidiInput event. That should work, too, but making use of the separate event for @OnMidiNoteOn events only can make your code a little cleaner, no need to check for command type because only Midi On events get into @OnMidiNoteOn event.

    You may also want to retain @OnMidiInput, unless somewhere else in your code you're sending midi thru:

    @OnMidiInput
      SendMidiThru
    @END
    

    Thank you. Yes , to be honest, I am using like three or four plugins in parallel, because I am using the note velocity and/ or the aftertouch to drive different parameters..... and, since MIDI seems to be linear , I have not found a way of sending one MIDI data simultaneously to drive two actions on the same script. So, although very primitive, I program several of these individual plugins each one doing its own thing and place them all in parallel in AUM. One of them, as you point out, is the one that sends the MidiThru. When I finish the whole thing and I am satisfied as it sounds I'll post the scripts and instructions in Patchstorage.com

  • @GeeBee said:

    @hes said:
    @GeeBee

    Try changing back to McD's version, but with your changes of 'else' instead of 'elseif' and 'SendMIDICC' instead of 'SendMIDI'

    Then change '@OnMidiInput'

    to '@OnMidiNoteOn'

    The version that was turning on and off immediately was because '@OnMidiInput' gets called for both NoteOn and NoteOff events. So the CC was going to 127 when you pressed down on the note, and then switched to 0 when you let off the note. Using @OnMidiNoteOn event avoids that problem, gets called only when you press down on the note, not when you let up.

    EDIT: Whoops, just noticed your previous post where you're checking for MIDICommand = 144 in @OnMidiInput event. That should work, too, but making use of the separate event for @OnMidiNoteOn events only can make your code a little cleaner, no need to check for command type because only Midi On events get into @OnMidiNoteOn event.

    You may also want to retain @OnMidiInput, unless somewhere else in your code you're sending midi thru:

    @OnMidiInput
      SendMidiThru
    @END
    

    Thank you. Yes , to be honest, I am using like three or four plugins in parallel, because I am using the note velocity and/ or the aftertouch to drive different parameters..... and, since MIDI seems to be linear , I have not found a way of sending one MIDI data simultaneously to drive two actions on the same script. So, although very primitive, I program several of these individual plugins each one doing its own thing and place them all in parallel in AUM. One of them, as you point out, is the one that sends the MidiThru. When I finish the whole thing and I am satisfied as it sounds I'll post the scripts and instructions in Patchstorage.com

    What is it that you want to accomplish that you feel you can’t because of MIDI’s sequential nature?

  • @espiegel123 said:

    @GeeBee said:

    @hes said:
    @GeeBee

    Try changing back to McD's version, but with your changes of 'else' instead of 'elseif' and 'SendMIDICC' instead of 'SendMIDI'

    Then change '@OnMidiInput'

    to '@OnMidiNoteOn'

    The version that was turning on and off immediately was because '@OnMidiInput' gets called for both NoteOn and NoteOff events. So the CC was going to 127 when you pressed down on the note, and then switched to 0 when you let off the note. Using @OnMidiNoteOn event avoids that problem, gets called only when you press down on the note, not when you let up.

    EDIT: Whoops, just noticed your previous post where you're checking for MIDICommand = 144 in @OnMidiInput event. That should work, too, but making use of the separate event for @OnMidiNoteOn events only can make your code a little cleaner, no need to check for command type because only Midi On events get into @OnMidiNoteOn event.

    You may also want to retain @OnMidiInput, unless somewhere else in your code you're sending midi thru:

    @OnMidiInput
      SendMidiThru
    @END
    

    Thank you. Yes , to be honest, I am using like three or four plugins in parallel, because I am using the note velocity and/ or the aftertouch to drive different parameters..... and, since MIDI seems to be linear , I have not found a way of sending one MIDI data simultaneously to drive two actions on the same script. So, although very primitive, I program several of these individual plugins each one doing its own thing and place them all in parallel in AUM. One of them, as you point out, is the one that sends the MidiThru. When I finish the whole thing and I am satisfied as it sounds I'll post the scripts and instructions in Patchstorage.com

    What is it that you want to accomplish that you feel you can’t because of MIDI’s sequential nature?

    I am still working on the project , but this is a script to use the data coming out from Jam Origin's MidiGuitar 2 to be able to play the SWAM Tenor Saxophone on Geoshred. If you look on this thread I already managed to work out some solution and it works fairly well , but I keep experimenting to see if I can get more control over the sounds. Basically I get three streams of data from the MidiGuitar app. Note Velocity, Aftertouch and PitchBend , all routed thru Ch 1. On the other hand the Tenor Sax physical model has an Expression setting which is driven by Channel Pressure , it has a "Formant" sound parameter driven by CC20, Growl driven by CC22 and Flutter by CC21. Then the Geoshred app has tons of other instruments to play with, but they do not necessarily share the same midi commands to shape the sounds , some have over 20 parameters. Obviously it gets to a point where you have to be selective and cannot pretend to handle in real time that many variables just to shape a sound. So you have to settle on 3 or 4 or 5 of them and, to use them with the MidiGuitar software , they have to be driven with either Note Velocity , Aftertouch or Pitchbend. ( I hope you follow the explanation so far )
    All of this means that sometimes you might want to use Note Velocity to drive two or three commands simultaneously, say, Channel Pressure, CC113 and CC24 , or use the Aftertouch data for CC1 and CC20, or even get the Pitchbend info and send it to CC 25 and CC 27 , etc......I hope you get the idea. But all of this has to be done simultaneously . I tried to do it sequentially and for some reason it does not work or it is erratic at best. Either the information does not go through ( which I recon might be an issue of programming - I only started learning to code last week - ) or if it goes through it doesn't modify the sound in a timely fashion ( I get all sort of artifacts ).
    I keep working on it and so far the quickest and dirtiest solution was to have a module for each of the parameters i want to modify an run them in parallel so there are no glitches........let's say its a modular approach. When I eventually have a satisfactory arrangement I think I will ask for some help to put it together in only one script ....if it is possible.

  • edited December 2020

    @GeeBee
    Note velocity only occurs on note inception, so it is not suitable for translating to continuous controller data such as you’d need for a lot of the parameters you mentioned. Aftertouch (not sure how that’s generated from a guitar input) and pitchbend are suitable for continuous controllers, but conversely, are not typically available at note inception. It sounds like you’ll need a lot of flexibility to cater for and be able to experiment with all your case scenarios.

    I would recommend you use the 22 knob template, with each knob dedicated to a different output controller, CC20, CC22, etc., and have 4 possible settings on each knob for the input data, velocity, aftertouch, pitchbend and OFF. That way you can process the input data how you like for each SWAM instrument and try different configurations, etc.

  • edited December 2020

    On a related topic, I wrote a script for adding poly aftertouch to a MIDI stream. Any notes being played were dynamically assigned to faders until they stopped playing. Moving a fader applies poly aftertouch to the associated note. It works, for slow chordal parts where I want to highlight different notes over the duration of each chord, but it’s a bit of a kludge.

  • @Tatobx said:

    @wim said:
    Hey @Tatobx - that all seems possible, and you did a good job specifying how it works, which makes all the difference.

    I'm super distracted by a new rabbit hole - exploring making mini midi controllers with Arduino. But, sometimes I need a break, and this would be a good distraction

    ... unless someone else gets there first! B)

    Thanks @wim , for me waiting for you to come out sometimes of the hole is not a problem.
    Thinking about the project, the KNOB4 is better to do something else, i can save each preset separately and it would be better to dedicate a knob to the color of the noteOFF
    then:
    KNOB1 - NoteON Pad color (velocity = integer values from 0 to 127)
    KNOB2 - NoteOFF Pad color (velocity = integer values from 0 to 127)
    KNOB3 - Pad pulses or fixed (channel = 9 fixed / 11 pulse)
    KNOB3 - "Solo" mode (this works per row, pressing one pad the others on the same row turn off = Off, Row 1, Row 2, Row 1 & 2)

    Hi @wim , I hope you are having a good holiday. Did you have time to get your hands on this? My head keeps banging against useless attempts.

  • edited December 2020

    Request. ‘CC’ before ‘note on’ fix for the BopPad.
    Issue: the radius CC gets sent after the note on on the BopPad. So the radius position is heard on the subsequent note strike.

    Fix: change the note on/off order of the midi
    from:

    • note on
    • CC
    • note off

    to:

    • CC
    • note on
    • note off

    thanks!

Sign In or Register to comment.