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.

Multiply CC values in AUM

edited January 2020 in Support and Feedback

Hi!

Is it possible to multiply incoming CC values from a midi controller by a chosen factor in AUM?

For example, I would like to assign a knob on my Novation Launch Control XL controller to a Bus Send in AUM, but instead of having to turn the knob all the way around, I would like to be able to just turn it 50% to have the send amount go from 0 to 100%. So, in this case the incoming CC value would have to be multiplied by 2.

I tried the Audioveek Midi Curve app (included in the Midi Tools bundle), but it seems this only handles midi note values, not CC.

Does anyone know of some other app to achieve this?

Comments

  • @Karax said:
    Hi!

    Is it possible to multiply incoming CC values from a midi controller by a chosen factor in AUM?

    For example, I would like to assign a knob on my Novation Launch Control XL controller to a Bus Send in AUM, but instead of having to turn the knob all the way around, I would like to be able to just turn it 50% to have the send amount go from 0 to 100%. So, in this case the incoming CC value would have to be multiplied by the factor 2.

    I tried the Audioveek Midi Curve app (included in the Midi Tools bundle), but it seems this only handles midi note values, not CC.

    Does anyone know of some other app to achieve this?

    You can do this with Mozaic or Streambyter.

  • wimwim
    edited January 2020

    A StreamByter or Mozaic script could do it. Did you want the knob to go from 0 to halfway to get the 100%? Or did you want to turn it between 25% and 75%?

  • Wow thanks, those apps seem really nice!

    @wim said:
    A StreamByter or Mozaic script could do it. Did you want the knob to go from 0 to halfway to get the 100%? Or did you want to turn it between 25% and 75%?

    Yes, I would like to turn the knob halfway to make the send go to 100%

  • wimwim
    edited January 2020

    Here’s the Mozaic script. I have to do something for a bit, but will dust off my Streambyter memory for fun a little later if nobody else beats me to it. B)

    NOTE: This is a very blunt-force way of doing it. Ideally the code should be much more restrictive, to act only on a certain channel and cc combination, but I wanted to keep it short.

    @Description
    Multiply incoming MIDI CC values by two. All other MIDI is passed through unchanged.
    @End
    
    @OnLoad
      SetShortName {ccMult}  
      ShowLayout 4
    @End
    
    @OnMidiInput
      if MIDICommand = 0xB0
        if MIDIByte3 <= 64
          SendMIDIOut, MIDIByte1, MIDIByte2, (Clip (MIDIByte3 * 2), 0, 127)
        endif
      else
        SendMIDIThru
      endif 
    @End
    
    @OnSysex
      SendSysexThru 
    @End 
    
  • edited January 2020

    @wim said:
    Here’s the Mozaic script. I have to do something for a bit, but will dust off my Streambyter memory for fun a little later if nobody else beats me to it. B)

    NOTE: This is a very blunt-force way of doing it. Ideally the code should be much more restrictive, to act only on a certain channel and cc combination, but I wanted to keep it short.

    @Description
    Multiply incoming MIDI CC values by two. All other MIDI is passed through unchanged.
    @End
    
    @OnLoad
      SetShortName {ccMult}  
      ShowLayout 4
    @End
    
    @OnMidiInput
      if MIDICommand = 0xB0
        if MIDIByte3 <= 64
          SendMIDIOut, MIDIByte1, MIDIByte2, (Clip (MIDIByte3 * 2), 0, 127)
        endif
      else
        SendMIDIThru
      endif 
    @End
    
    @OnSysex
      SendSysexThru 
    @End 
    

    Thanks a lot, wim, for the help!

    I bought Mozaic earlier and will check out your script and try to understand what everything does.

    I fiddled around a bit with the tutorial scripts in the app and actually just found out how to multiply the CC values myslef. Haven’t been programming so much before, but wow, this is really fun to learn :)

    @OnLoad
    LabelKnob 0, {Send %}
    @End

    @OnKnobChange
    if LastKnob = 0
    cc = GetKnobValue 0
    ccMult = cc *2
    SendMIDICC 0, 7, ccMult
    endif
    @End

  • wimwim
    edited January 2020

    That would work for sending cc’s from the Mozaic interface, but wouldn’t do anything for your controller.

    You probably should round the values to whole numbers. Mozaic reads decimal values from its knobs. ccMult = Round (cc * 2) would be better. And, you should follow that with a Clip ccMult, 0, 127 so that you’re not sending values over 127.

  • edited January 2020

    It works if I use the Learn function on Mozaic’s AUM track and assign the Launch Control’s knobs to Mozaic’s knobs, but I suppose that is not the ideal solution. Will analyze your script some more.

    Thanks for the tips about rounding and clipping the values!

  • wimwim
    edited January 2020

    @Karax said:
    It works if I use the Learn function on Mozaic’s AUM track and assign the Launch Control’s knobs to Mozaic’s knobs, but I suppose that is not the ideal solution. Will analyze your script some more.

    Ahh. Good idea. That should work well then.

  • edited January 2020

    Would this be the right way to write the rounding and clipping code?

    @OnLoad
    SetShortName {ccx2}
    ShowLayout 1
    //LabelKnob 0, {Send A}
    //LabelKnob 1, {Send B}
    SetKnobValue 0, 0
    SetKnobValue 1, 0
    @End

    @OnKnobChange
    cc0 = GetKnobValue 0
    cc1 = GetKnobValue 1
    cc0Mult = Round (cc0 * 2)
    cc1Mult = Round (cc1 * 2)
    Clip cc0Mult, 0, 127
    Clip cc1Mult, 0, 127
    SendMIDICC 0, 7, cc0Mult
    SendMIDICC 0, 8, cc1Mult
    @End

  • wimwim
    edited January 2020

    Yep, that looks like it should work. B)

    You can also round the cc0 value when you get it rather than in a later calculation ... whichever makes more sense to you. cc0 = Round (GetKnobValue 0)

    Looks like you’re off to a great start with Mozaic.

    (BTW, if you put ``` on a line by itself before and after the code, it’ll all be formatted as a code block in the forum software.)

Sign In or Register to comment.