This application is intended as an experiment to add a feature missing in my favorite Digital Audio Workstation (DAW): the ability to modify velocities by following a MIDI control. Every DAW allows editing velocities with plenty of refined features and details, but not as directly as a musical gesture performed live on a modulation wheel or a pedal.
Altering velocities on a MIDI track can have a dramatically different effect than simply mixing it up or down: it impacts the actual sound generated from the MIDI note. For example, most drum kits offer several samples for each note and select the actual sample from velocity value, hence upping or lowering velocity at key moments in the music results in a much more musical nuance than a mere volume change.
It works great on a piano track too! Any instrument, virtual or physical, that is controlled from a MIDI track in the DAW, can benefit from a musical touch on velocities.
Requirement: MacOS X 10.12 or more.
- Download the application: Velociraptor 1.0.1
- Here's a sample project with a drum kit for Digital Performer (v. 7 or more).
Note: Velociraptor can be used with other DAWs as well, but has not been as thoroughly tested and may not be required to obtain the same result. For example, in Logic Pro, it is possible to assign a MIDI control to the 'Ratio' value in Velocity Processor, and record and edit in automation the corresponding MIDI motions. However, Velociraptor will work fine with Logic too.
The Inter-Application Driver allows MIDI applications to communicate in MacOS. It is not activated by default. Before using the app, you should make sure that IAC Driver is active on your Mac. Open Audio MIDI Setup (in folder /Applications/Utilities/), show the MIDI studio window, double-click the IAC Driver icon. Activate it by checking the box "Device is online".
The following image should clarify how this works:
Instead of sending the original MIDI track to its instrument, set the track output to IAC Driver, to send it to Velociraptor. Send using a dedicated MIDI channel, and make sure the same MIDI channel is selected in Velociraptor in Listen for notes on MIDI channel pop-up menu. Playing the track activates the horizontal indicator on top, briefly showing the velocity of the last played note. Velocities below 64 are green, medium are yellow, 100 and above are red.
Next section in window is for control settings. Select the MIDI channel to listen to for control (it can be the same as notes). Use the checkboxes to activate or deactivate the pitch wheel and modulation wheel. Note that any MIDI control change up to CC 63 can be used along with the mod wheel, which allows to use other controllers such as a foot pedal, a breath controller, a fader, a raccoon 🦝 or whatever you fancy. Sustain pedal (CC 64) as well as CC numbers above 64 are ignored for control, they are instead passed thru along with the notes.
The horizontal value indicator shows the last control value received. Only 7-bit resolution is used from pitch wheel (MSB), as velocity allows only for the range 1-127, LSB is ignored.
The radio buttons offer two modes:
- Offset mode: velocities are offset by the amount of control, centered on value 64 (center for pitch wheel, middle position for modulation wheel). This mode preserves the original track's velocities differences between notes, merely adding more or removing some velocity.
- Fixed mode: velocities are all set to control value. This mode flattens all velocities and loses the original values.
MIDI Output and “Return Track”
Select a MIDI channel to output the notes with modified velocities (this channel can't be the same as the notes input channel). The indicator briefly shows the velocity of the last note played, according to the control settings and value.
In the DAW, add a new MIDI track with the original instrument setting. Use IAC Driver as its MIDI input, selecting the same channel as selected in Velociraptor to Re-send notes on MIDI channel. Make sure you only listen for this "return track" and not the original (how you do that varies with DAWs).
You can now play the original track, use the MIDI controller to perform the change live while listening, and record the "return track".
You can also check the option Also re-send received pitch/mod/control to record your moves on the controller, using either the same MIDI channel as the note output to record the controller on the same "return track", or pick a different MIDI channel to record it separately, which is recommended for more flexibility.
You can also use control sent from a MIDI track in the DAW as the control source. Hence, if you record your moves on a separate track, you can then edit the moves with the usual tools in the DAW, then play the control track back to Velociraptor to re-record the altered velocities.
Using IAC inevitably induces some latency. Fortunately it is easy to compensate:
- Find a MIDI note in the original track that is located right on a downbeat.
- Find the same MIDI note in the "return track".
- See the ticks or steps value. For example, if the original note is on bar 1, beat 1, step 0, and the same note returned on bar 1, beat 1, step 8, it means that the latency has moved the whole track 8 steps later in the "return track".
- Knowing the exact latency, use the appropriate command in the DAW to shift the notes back in place and cancel the latency.
1.0.1: fixed a bug that prevented receiving sustain pedal on return track. (Thanks Wally!)