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.

Mapping velocity to AUv3 parameter in AUM?

I'm new to iPad music, so forgive me if this question is basic. I just picked up AUM earlier this week.

Some of the sequencers I'm using – like Patterning 2 and SnakeBud – make it easy to configure the velocity of each note. But I run into trouble when I try to map the velocity onto the audio sources I'm using. I can't figure it out.

Does AUM offer a way to map velocity to particular AUv3 parameters?

The options AUM provides for mapping MIDI CC are impressive. But I can't figure out how to do the same for velocity. I don't know what I'm missing. Is velocity typically sent over a particular MIDI CC that I'm unaware of? Or is there perhaps a way to map velocity to MIDI CC, and then map that MIDI CC message to a parameter like filter cutoff?

Any help is appreciated!

Comments

  • Hi @aaa . The problem is that velocity is part of every note on and off message. Normally it affects the synth volume of that specific note. The problem with trying to convert it to a CC is that CCs apply to all notes, so which velocity would you choose? In a modular system like Drambo, you can use the velocity in each voice (note) to control parameters in that voice, including filter cutoff. Conventional synths may allow this via their Modulation Matrix; some offer extremely powerful options.

    What audio source are you using?

  • wimwim
    edited January 2022

    @aaa said:
    I'm new to iPad music, so forgive me if this question is basic. I just picked up AUM earlier this week.

    Some of the sequencers I'm using – like Patterning 2 and SnakeBud – make it easy to configure the velocity of each note. But I run into trouble when I try to map the velocity onto the audio sources I'm using. I can't figure it out.

    Does AUM offer a way to map velocity to particular AUv3 parameters?

    The options AUM provides for mapping MIDI CC are impressive. But I can't figure out how to do the same for velocity. I don't know what I'm missing. Is velocity typically sent over a particular MIDI CC that I'm unaware of? Or is there perhaps a way to map velocity to MIDI CC, and then map that MIDI CC message to a parameter like filter cutoff?

    Any help is appreciated!

    Velocity isn't like a MIDI CC. It's sent as part of the Note-On midi message (Note-Off too, but that's often ignored by synths). So, your challenge is to convert that note velocity to a MIDI CC. Streambyter and Mozaic can do this. Streambyter is free. It's scripting language is compact for these kind of things, but also a little hard for some to get their head around.

    Here's a quick example:

    # StreamByter Script Example
    # Convert note velocity to CC 20 (hex 14). Pass through the Note-On and Note Off
    9X XX XX = BX 14 XX +C
    

    There's a Mozaic script that can do this with no need for scripting: https://patchstorage.com/key-to-cc/

  • Oh that makes sense, TY. I'm using Steinberg Nanologue, AudioKit Synth One, the Moog Model D and Model 15, and I just picked up Cube Synth Pro. Those last two (Model 15 and Cube Synth Pro) are pretty confusing so I've mostly stuck to presets so far, but I'm looking forward to getting a chance to dive into learning how to use them.

    If you have any other synths you'd recommend for this type of velocity mapping, I'm curious to hear about it.

    @wim said:

    I'll download Streambyter and give this a shot. TY for hacking this together!

  • @ wim This is so awesome!

  • wimwim
    edited January 2022

    @aaa said:

    Oh that makes sense, TY. I'm using Steinberg Nanologue, AudioKit Synth One, the Moog Model D and Model 15, and I just picked up Cube Synth Pro. Those last two (Model 15 and Cube Synth Pro) are pretty confusing so I've mostly stuck to presets so far, but I'm looking forward to getting a chance to dive into learning how to use them.

    If you have any other synths you'd recommend for this type of velocity mapping, I'm curious to hear about it.

    @wim said:

    I'll download Streambyter and give this a shot. TY for hacking this together!

    That little one-line script is just an example. It will surely need to be refined for your use case. As @uncledave mentioned, you'll get a velocity for each note, so it may need to be limited to just one note, and/or have more lines added for added CC's. Also, you may not want to pass through the notes themselves.

    # Convert note 48 velocity to CC 20 value and pass through the note
    9X 30 XX = BX 14 XX +C
    
    # Convert note 50 velocity to CC 21 value and block the note
    9X 32 XX = BX 15 XX
    # We also need to block the note off
    8X 32 XX = XX +B 
    
  • Actually, mapping any parameter to a MIDI Note in AUM already does use the velocity to set the parameter value. But it's only for a specific note number, and it also sets value to 0 for note off, so it might not be what you're looking for.

  • @wim said:

    @aaa said:

    Oh that makes sense, TY. I'm using Steinberg Nanologue, AudioKit Synth One, the Moog Model D and Model 15, and I just picked up Cube Synth Pro. Those last two (Model 15 and Cube Synth Pro) are pretty confusing so I've mostly stuck to presets so far, but I'm looking forward to getting a chance to dive into learning how to use them.

    If you have any other synths you'd recommend for this type of velocity mapping, I'm curious to hear about it.

    @wim said:

    I'll download Streambyter and give this a shot. TY for hacking this together!

    That little one-line script is just an example. It will surely need to be refined for your use case. As @uncledave mentioned, you'll get a velocity for each note, so it may need to be limited to just one note, and/or have more lines added for added CC's. Also, you may not want to pass through the notes themselves.

    # Convert note 60 velocity to CC 20 value and pass through the note
    9X 30 XX = BX 14 XX +C
    
    # Convert note 62 velocity to CC 21 value and block the note
    9X 32 XX = BX 15 XX
    # We also need to block the note off
    8X 32 XX = XX +B 
    

    Just a little quibble here. MIDI note 60 is 3C in hex, the default number format in SB. So "30" should be "3C". Probably less confusing for the uninitiated to use decimal $60.

    The OP is safe with your original rule, provided he keeps the synths in monophonic (single note) mode. I checked AudioKitSynthOne and Model D, but neither has the sort of complex modulation routing scheme I was thinking of.

  • @aaa said:

    Oh that makes sense, TY. I'm using Steinberg Nanologue, AudioKit Synth One, the Moog Model D and Model 15, and I just picked up Cube Synth Pro. Those last two (Model 15 and Cube Synth Pro) are pretty confusing so I've mostly stuck to presets so far, but I'm looking forward to getting a chance to dive into learning how to use them.

    If you have any other synths you'd recommend for this type of velocity mapping, I'm curious to hear about it.

    @wim said:

    I'll download Streambyter and give this a shot. TY for hacking this together!

    I looked through a few of my synths and found the following:

    DRC is a polyphonic synth that allows direct velocity modulation of filter cutoff. You can also use a velocity-modulated envelope generator. Envelopes can also affect osc pitch, and VCA of course. Using a velocity-modulated envelope is a preferred way of opening the filter since it can open for the attack and back off. Simulates the way real instruments revert to the fundamental over time. DRC is a nice straightforward 2-osc synth.

    ID700 is a polyphonic synth that lets you modulate almost any parameter with velocity. Powerful, but a bit experimental.

    SynthMaster 2 and SynthMasterOne have universal mod matrices, making them ultra-configurable. Hugely powerful.

    Zeeon is similar and very nice to use. I'd recommend Zeeon as an excellent synth offering strong modulation capability.

  • @uncledave said:
    Just a little quibble here. MIDI note 60 is 3C in hex, the default number format in SB. So "30" should be "3C". Probably less confusing for the uninitiated to use decimal $60.

    Oops. I had changed the comments in the script but forgot to cut and paste the change into the post. Thanks. Fixed.

    I tried to use decimal in the script, but it would not work with the $ notation in the command, even though it should. I only reverted to hex because I had to.

  • @wim said:

    @uncledave said:
    Just a little quibble here. MIDI note 60 is 3C in hex, the default number format in SB. So "30" should be "3C". Probably less confusing for the uninitiated to use decimal $60.

    Oops. I had changed the comments in the script but forgot to cut and paste the change into the post. Thanks. Fixed.

    I tried to use decimal in the script, but it would not work with the $ notation in the command, even though it should. I only reverted to hex because I had to.

    Right. I guess those old rules are meant to be runic.

  • @j_liljedahl said:
    Actually, mapping any parameter to a MIDI Note in AUM already does use the velocity to set the parameter value. But it's only for a specific note number, and it also sets value to 0 for note off, so it might not be what you're looking for.

    Interesting! I just tried this out, and I agree that Note Off velocity = 0 messages sound a bit jarring. But I think there might be a relatively simple way to avoid this in monophonic sequences.

    I did some testing and figured out that if a Note Off message occurs at the exact same time as the next Note On message, the parameter modulation will not reset to 0. The Note On and Note Off messages need to be perfectly syned up. If they’re off by more than 1 sample, I would hear an audible click during my testing.

    I think it should be possible to create a StreamByter script to automatically extend the length of each MIDI Note until the next note starts. But I haven’t figured out how to do it.

    I wonder if there are other MIDI effect plugins that could achieve the same result. MIDI Tools? Cality? Rozeta Sequencer Suite? idk which might be the right tool for the job, so I haven’t purchased any of those plugins yet.

  • @aaa said:

    @j_liljedahl said:
    Actually, mapping any parameter to a MIDI Note in AUM already does use the velocity to set the parameter value. But it's only for a specific note number, and it also sets value to 0 for note off, so it might not be what you're looking for.

    Interesting! I just tried this out, and I agree that Note Off velocity = 0 messages sound a bit jarring. But I think there might be a relatively simple way to avoid this in monophonic sequences.

    I did some testing and figured out that if a Note Off message occurs at the exact same time as the next Note On message, the parameter modulation will not reset to 0. The Note On and Note Off messages need to be perfectly syned up. If they’re off by more than 1 sample, I would hear an audible click during my testing.

    I think it should be possible to create a StreamByter script to automatically extend the length of each MIDI Note until the next note starts. But I haven’t figured out how to do it.

    I wonder if there are other MIDI effect plugins that could achieve the same result. MIDI Tools? Cality? Rozeta Sequencer Suite? idk which might be the right tool for the job, so I haven’t purchased any of those plugins yet.

    I guess mapping midi note to a numeric value (and not a trigger or toggle) is quite unusual, so it might make sense to ignore note offs in that case. It would be an easy change to make.

  • edited January 2022

    @aaa said:

    @j_liljedahl said:
    Actually, mapping any parameter to a MIDI Note in AUM already does use the velocity to set the parameter value. But it's only for a specific note number, and it also sets value to 0 for note off, so it might not be what you're looking for.

    Interesting! I just tried this out, and I agree that Note Off velocity = 0 messages sound a bit jarring. But I think there might be a relatively simple way to avoid this in monophonic sequences.

    I did some testing and figured out that if a Note Off message occurs at the exact same time as the next Note On message, the parameter modulation will not reset to 0. The Note On and Note Off messages need to be perfectly syned up. If they’re off by more than 1 sample, I would hear an audible click during my testing.

    I think it should be possible to create a StreamByter script to automatically extend the length of each MIDI Note until the next note starts. But I haven’t figured out how to do it.

    I wonder if there are other MIDI effect plugins that could achieve the same result. MIDI Tools? Cality? Rozeta Sequencer Suite? idk which might be the right tool for the job, so I haven’t purchased any of those plugins yet.

    If you just want the velocity of the most recent Note On to be sent as a CC, this StreamByter script should work:

    9X XX XX = BX 02 X3 +C
    

    This responds to a Note On by sending CC# 02 with the velocity, on the same channel. Parsing this, 9X is Note On on some channel, XX XX is the rest of the Note On message, BX is CC on the same channel, 02 is the CC number (hex, alter as needed), X3 is the 3rd byte of input (note velocity), +C means clone (create a new message). Route your keyboard input through this and on to the synth. Also send it to Midi Control in AUM if you want to map the CC to an AUv3 parameter. This little script sends all MIDI inputs through, only adding the CC after every Note On. It never resets the CC value to zero, the CC just follows the last note played. If your controller has some buttons, you could map one of them to zero the CC.

    Edit: Reviewing the thread, I realized that this is what @wim posted initially. Why is this not a solution? It is not affected by note off, so the last velocity sent is held forever. If you want to put it only in the route to Midi Control, you could add

    NX XX XX = XX +B
    

    to block all notes (on and off), so only the velocity CC exits the script.

Sign In or Register to comment.