Loopy Pro: Create music, your way.

What is Loopy Pro?Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.

Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.

Download on the App Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

MIDI Utility that can convert Note-On Velocity into CC

I'm trying to use SWAM Violin, but that app does not permit velocity to control dynamics (it goes against their principles). So I must find a workaround.

I have quite a few MIDI utility apps, but haven't found the way to take source MIDI note-on velocity values and convert them to CC values.

Can someone please point me in the right direction?

I do have AUM, but don't really know how to use it. Perhaps I could set up a "rig" (?) in AUM with that MIDI processor as part of the configuration?

Comments

  • Can you clarify a little bit about the CC values? Do you want the velocity from all notes to be sent as the value of a single CC number? Or do you want each note to play a different CC number with the velocity as the cc value?

  • Here's a one-line script for the free Streambyter app that will output a single CC (20) with the value equal to the note velocity for each note. I assume you want both the note and the CC value to pass through? Route the input to streambyter and streambyter to the synth. Don't route the input directly to the synth.

    # Add a cc 20 with value = velocity to the output when notes are received
    9X = BX 14 XX +C
    
  • Thanks. Yes, I want to play MIDI notes (monophonic, in this case) and out some process that allows me to choose a CC# and output values that match the velocity of the incoming notes.

    C4 Velocity 42 ---> CC#11 value 42 (or some other CC)

    I couldn't figure out a way to do this in MIDIflow.

    Thanks wim for the streambyter script. Which part of that binary line is the CC# "20" (in case I want to make it some other CC#)?

  • wimwim
    edited November 2023

    @stub said:
    Thanks wim for the streambyter script. Which part of that binary line is the CC# "20" (in case I want to make it some other CC#)?

    The "14" is CC 20 in hexadecimal. So, to change the CC number you will need to convert the number to hexadecimal. There are conversion tables and calculators on the web.

    If you have Mozaic then I could easily make you something where you can select the CC with a knob. This can be done with a slider control in Streambyter, but I never dug into how that works. Maybe someone else will offer up a better streambyter script where you can adjust the CC without having to modify the code.

  • Thanks for the offer, but this is sufficient. I'll keep track of this script and make a note. Now that I know "14" is the CC number in hex, I'm all set.

    Thanks again.

    If I run into any snags getting this to work, I'll post here, but I should be good now.

  • wimwim
    edited November 2023

    Curiosity got the best of me and I did up a Streambyter script where you can set the CC with a slider control. No worries if you want to stick with the other one. I just did it for my own amusement.

    You can toggle the slider control with the round button at the bottom-right of the streambyter window.

    # Add a cc message with value = note velocity
    # The cc number can be set with the slider control
    
    If load
      Alias Q0 cc_num
      Ass cc_num = $20        # Default CC value in decimal
    
      # Set up the sliders
      Set q0 CC#
      Set q1 +h
      Set q2 +h
      Set q3 +h
      Set q4 +h
      Set q5 +h
      Set q6 +h
      Set q7 +h
      Set lb0 sCC
      Set lb1 cc_num +D
    End
    
    If MT == 90 #Note ON
      Mat L0 = B0 + MC
      Snd L0 cc_num M02
    End
    
    If M0 == F0
      # Handle slider value change
      Set lb1 cc_num +D
    End
    
  • EXTRA THANKS, WIM!!! :)

  • @stub said:
    EXTRA THANKS, WIM!!! :)

    Hey, sorry if you already tried it. I found a bug and just corrected the code above. Please replace what you have if you already tried the script.

  • I'm trying to grok how converting Midi Note Velocity to a CC is going to provide much help with SWAM. The CC control that you want to control dynamics with SWAM is something that you'd want to send many values over the course of a single note. By converting Midi Velocity to CC you're going to get a single CC message sent out upon initiation of a keypress, or start of a note. Nothing after that. Seems like what you actually want is to use mod wheel CC to control dynamics over the course of the note. . . Or am I missing something? What benefit do you get from translating a velocity value to a single CC message?

  • Maybe something like key tracking a filter? Lots of apps let you affect the filter cutoff and other parameters based on the note being played. I don't know anything about SWAM, but that's how I'd use something like this for a synth that doesn't have key tracking for a filter or other parameter.

  • edited November 2023

    @wingwizard Velocity Keyboard can itself apparently output velocity as a MIDI CC or Aftertouch message

    8 simultaneous sources of MIDI CC parameter control: touch area, touch force (on devices that support 3D Touch), touch Y-coordinate, velocity to CC and up to four MIDI CC control knobs.

  • @wim said:
    Maybe something like key tracking a filter? Lots of apps let you affect the filter cutoff and other parameters based on the note being played. I don't know anything about SWAM, but that's how I'd use something like this for a synth that doesn't have key tracking for a filter or other parameter.

    Ah, yes, something like that will at least provide some variation. But you're still never going to get the intended expressiveness of SWAM by sending messages just at the onset of the note. That expressiveness comes largely from having scores of CC messages per second varying different aspects of the sound over the life of the note, mimicking variation in breath control of wind instruments, or aspects of the bow with string instruments.

  • Yea, I had a back & forth with the SWAM developer who is convinced that if you can't control the volume of the notes continuously, you should not be allowed to control them AT ALL.

    As a fan of breath-control and continuous control, generally, I understand that point.

    I argued that being able to control the dynamics with velocity at the note start is better than not at all.

    Also, if I'm using the mod wheel to control vibrato (which works well for me) then my keyboard doesn't have another option for controlling expression. Or what if I'm using pitch to MIDI? (For another example).

    It would not hurt for SWAM to offer this option, even if it goes against their core philosophy. They could just have velocity control off by default and allow us heretics turn it on as needed.

    wim, I've corrected the script in my notes. Thank you for testing it!

  • wimwim
    edited November 2023

    @stub said:
    Yea, I had a back & forth with the SWAM developer who is convinced that if you can't control the volume of the notes continuously, you should not be allowed to control them AT ALL.
    ...
    It would not hurt for SWAM to offer this option, even if it goes against their core philosophy. They could just have velocity control off by default and allow us heretics turn it on as needed.

    I agree with you. That's very odd thinking on the part of the developer IMO.

    Also good to know for those who can't always play with an MPE device. I'm less inclined to spend the big $$$ for SWAM knowing that.

  • edited November 2023

    @wim said:
    Also good to know for those who can't always play with an MPE device. I'm less inclined to spend the big $$$ for SWAM knowing that.

    Good point. With a standard MIDI controller, you have not so many available wheels, sliders, etc., much less how many human appendages with which to work them. BC is a great thing, but hardly something you can demand your users to own.

    Someone should make a good demo of what dynamics sounds like with velocity re-mapped to CC (compared to the default behavior of SWAM).

    I suppose SWAM is entitled to be absolute purists about their fake instruments; wanting them to be experienced and used in their best case configuration. But why release them for iOS where many users won't have access to best-case hardware?

  • Both Xequence's internal keyboard and the Xequence AU | Keys & Pads AUv3 Plug-ins support mapping key vertical position (i.e. where you hit the on-screen keys with your finger) to CC, if that's an option.

  • Thanks. I'm going to try to avoid using an onscreen keyboard for anything other than just tweaking sounds and messing around. In clutch performance situations, it's hardware keys all the way. Having said that, I imagine some of those virtual keyboards will pass MIDI in and possibly do a similar remapping (?)

  • Do I understand correctly that you want to convert midi velocity into cc? Drambo and miRack can do that I think.

  • edited November 2023

    Thanks for all the help.

  • wimwim
    edited November 2023

    @stub said:
    Thanks. I'm going to try to avoid using an onscreen keyboard for anything other than just tweaking sounds and messing around. In clutch performance situations, it's hardware keys all the way. Having said that, I imagine some of those virtual keyboards will pass MIDI in and possibly do a similar remapping (?)

    I know of no virtual keyboards that do passthrough. If they do then they definitely don't do remapping. But there are ways. Streambyter, Mozaic, Drambo, and miRack. You need to be very clear on the actual conversions that you need though.

Sign In or Register to comment.