There are a few jesuscript MIDI plugins in this repository.
JSFX scripts are directly supported by Reaper. If you use another DAW, you can run them through https://www.reaper.fm/reaplugs/
Below I talk about only the most interesting MIDI effects in this repo.
https://github.com/nandoflorestan/midi-effects/blob/master/jesuscript/interferic.jsfx
A JSFX plugin that watches the values of CC1 and CC4 and outputs something to CC1, hiding CC4. The output is given by...
CC1value + CC4value - 64
My purpose is simply to control dynamics in two passes. First I input generic, linear crescendos and decrescendos on CC1 while I am composing. It's the main shape and I never touch it again unless it is something that I would change in notation (a drastic change). And I keep CC4 static in the middle (64). For the 2nd pass -- tweaking the performance -- I add CC4 changes which start and end in the middle. These are interferences to:
- Tweak the temporary loudness of an instrument to better match the others;
- Tweak the temporary loudness of an instrument to bring it out when appropriate;
- Accelerate or decelerate a crescendo or decrescendo;
- Add randomness without mixing it into the main CC1 signal, so one can be edited separately from the other.
You could also route a single midi track to each of the ensemble tracks, to control dynamics of the whole section from a single place, and then just add minor adjustments to each track individually.
Currently this plugin watches only a single MIDI channel that you choose. To change multiple MIDI channels you need to use multiple effect instances in series.
I wrote a multichannel version using Protoplug, but currently it's not stable. JSFX is a barbaric language to write programs in; I would prefer Lua, but unfortunately Protoplug is giving me trouble: pac-dev/protoplug#47 Help appreciated.