View Single Post
Old 03-26-2009, 03:56 AM   #7
Human being with feelings
DarkStar's Avatar
Join Date: May 2006
Location: Surrey, UK
Posts: 18,017
Default MIDI Editing I

PC Splitter

This JS FX reads a (multi-channel) MIDI clip, extracts the events on the selected channel and puts them on a new channel every time a Program Change message is found
My thanks goes to those whose JS code snippets I've snipped.

Uploaded with **************

-- remove the .txt extension from the file
-- put it in (a sub-folder in) in your App Data \ Effects folder
-- load it on the track
-- select the MIDI channel you want to process (the other controls are for monitoring the results)
-- right-click the clip, select "Apply track FX as new take (MIDI)"
-- right-click the clip >> Takes >> Explode all takes in place
-- move the new take to a new track
-- right-click it >> Item processing >> Explode multichannel .. to new mono items


Big pic: http://img545.**************/img545/8...spcsplit02.png

CC HiHat controller (v0.3)

This JS FX allows e-drummers to re-map incoming hit hat notes depending on how they groove on their foot pedal. Even a single incoming note can be used to trigger 6 hit hat sounds (1 closed + 5 opened hit hat sounds).

General info:
  • The typical config. for this JS is: e-drum -> Reaper/this JS -> drums VSTi
  • 6 levels: the 1st level is usually a closed hit hat sound and the 5 other levels opened hit hat sounds (drums VSTis often provide 5 open hit hat sounds)
  • Default INPUT settings = Roland TD-3 ones
  • Default OUTPUT settings = Addictive drums, default kit.
  • Pass through for unmapped MIDI events (see other pass-through properties bellow)
    => other FX can be used for further mappings (kick, snare, ...)
  • Related Reaper's thread:

MIDI Velocity Humanizer V1.1

MIDI CC Message Ranger

This FX select a specified MIDI CC message within a value range and rescales the value into a new range.

This example would capture CC# 74 messages on any channel and if the data value is between 73 and 127, rescale them to be within 106 and 127. The data values received and sent are shown in the lowest 2 sliders.

Split multi-channel single track MIDI

To split your single track (type 0) multi-channel MIDI clip onto several tracks?

Channel->Keyswitch converter

Using MIDI channels (that are not 1) to trigger keyswitches
A keyswitch is basically a special note that you can play on a virtual instrument: instead of producing a pitch/scrape/whatever, it silently changes the sound set for actual notes when you play them later.
An example would be switching between legato, staccato, non vibrato and sul ponticello articulations for a solo violin. Typically they live around C0, C#0 etc or way up high™ for bass instruments.

Roland TD3 > Addictive Drums Mapper

Here are some JS files made for use with the Roland TD3 and Addictive Drums. Just insert TD3-KickSnareHHToms-AddictiveDrums and TD3-Cymbals-AddictiveDrums before Addictive Drums and you are done

MIDI Note Velocity Ranger

It selects MIDI notes within a velocity range and rescales the velocity into a new range

MIDI VeloTrol

Velocity Control
Block High
Block Low
Compress Range

MIDI Micro & MIDI Scale Tuners

MIDI Micro Tuner adjust any incoming note by the amount of the Cents slider
MIDI Scale Tuner checks the note and tunes it accordingly. Omni can be enforced because this is using channel wide Pitch Bend. The last note played when not in Omni mode decides the # of Cents all notes will be bent.

MIDI Keyboard Deploy

This is a Keyboard splitter.
Some features are:
Pass Through
Send CC to New Channels
Full range of 1 through 127 notes for each Channel's output.
Learn range.

Poor's man Poly aftertouch

Converts channel pressure to key pressure on the last note pressed.
You need a keyboard that sends aftertouch, thought it's easy to change the code using a CC instead. A CC is used to keep pressure to the current key, so a new note won't steal pressure assignment. I'm using a foot pedal for this.
Then you need a synth that supports Poly Aftertouch and I don't think there are too many of them.
Saukar30: "I only have seen 1 free synth that supports Polyphonic Aftertouch: LinPlug's AlphaCM from Computer Music."

IXix and mbncp
Holds each note until next note is pressed. Pressing the same note will just turn it off. Enable legato, using an optional CC to turn it on or off

An optional CC to turn note holding on/off. It still plays mono in that case, but the legato switch is available in both situations. Switching to Hold off using a CC will also turn off the playing note.
If the input channel is set to 0 (any) it should get notes from different channels now, which means that only a single channel will play and a single note at any time. Great if you have 16 synths and want to hold a note until you reach the next one 20 meters away

MIDI Legato, by Note or Range

These effects let you:
a) increase the length of a set of notes; each note may have its own delay setting.
b) increase the length of all notes in a given range

New IX MIDI stuff (Updated 1st Feb 2008)

Allows each incoming note to choke (note-off) up to 4 other notes (independent channels). You can store separate mappings for all 128 possible input notes and you can save the mappings as presets if you wish. For example you could set it so that pressing C4 on channel 1 would cut E5 on channel 2, G#3 on channel 5, F6 on channel 10 and Bb2 on channel 16.
Probably most useful for live control of multiple samplers.

A personal favourite. The lazy drum programmers wet dream.
Treats incoming notes velocities as a percentage probability that the note will be passed through the plugin. A velocity of 127 has a 100% chance of being played and a velocity of 12 has around a 10% chance of being played.
You can compensate for the softer velocities of less likely notes and get all output into a suitable velocity range by using the offset and scale controls. Scale multiplies the natural velocity by whatever percentage you select and offset adds or subtracts a fixed amount from the scaled value. Works sort of like a velocity compressor/expander.

As you might expect from the catchy title, it loops MIDI. So much fun hiding behind such a dull description!
  • Trigger 0 clears the buffers (setting 0 loop length does the same).
  • Trigger 1 toggles recording on/off
  • Changing the loop length will scale any existing loop to fit the new loop but changing the units will reset the loop (it sounds really bad when you change from 4 seconds to 4 milliseconds by accident )
  • Repeats sets number of times notes will be repeated (applies to new notes only.)
  • Fade reduces note velocity to zero in n steps, n being the number of repeats (applies to new notes only.)
  • Dry Output blocking is overridden by record off (it assumes you want to play over a loop.)

An easier and more flexible approach to key re-mapping, made possible by recent JS updates. Schwa did something similar ages ago but it was foiled by the buffer clearing problem and the broken @serialize. Now those problems have been fixed so this new KeyMap is much easier to work with and you can save your mappings as presets instead of fiddly data files.

Forces the specified keys to hold until they are pressed again. Sort of like having extra fingers.
DarkStar ... interesting, if true. . . . Inspired by ...

Last edited by DarkStar; 08-06-2014 at 02:53 AM. Reason: Added DarkStar's PC Splitter
DarkStar is online now   Reply With Quote