In the tradition of the classic "some more MIDI plugins..." thread, here are some more midi plugins. They're GUI-less for the most part, written in C++. Anything that needs a GUI is done with JUCE.
They are VST 2.4 plugins, available for Windows (32-bit), Linux (x86), and Mac OS X (Universal Binary), unless otherwise noted.
Current price: free.
If you feel like it:
midi16CCRouter - Changes up to 16 CCs to 16 other CCs.
midi2qwerty16 - Use MIDI to trigger fake keystrokes to the focused window.
midiAudioToCC - Converts audio amplitude to CC messages.
midiBlackKeyFilter - Separately adjust velocity of black and white keys, and/or send them on different channels.
midiCCModulator - Use one CC to modulate another CC (or note velocity) in various ways: add/subtract/multiply/etc, plus logic gates (AND, NAND, XNOR, etc).
midiCCReset - Remembers CC values and sends them out again at selected times.
midiCCStepper - Quantize CC events by value or in time.
midiCCToggle - For changing momentary CC buttons into toggles.
midiChannelFilter - Simple single-channel filter.
midiChannelize - Transforms everything to the selected channel.
midiChs_noGUI - Channel filter/changer like energyXT1 "MIDI chs" component.
midiConverter3 - Change and convert between CC, Channel Pressure, Poly Aftertouch, Program Change, Pitch Bend, NRPN/RPN, Note On/Off, and other messages in various ways.
midiDelay - Delay notes and/or CCs with feedback.
midiDuplicateBlocker - Remembers all MIDI message values it gets on each channel, and blocks any repeated values until a different value is received.
midiExactDelay - Simple delay (no dry signal, no feedback) with flexible and precise delay time.
midiFingered - Selectively sends standard portamento on/off CC messages to emulate "fingered portamento" for synths that don't have it.
midiForceToKey - Enforces a scale, and transposes within the scale (optionally based on MIDI notes on a selected channel).
midiForceToRange - Transposes notes by octave into the selected range.
midiInvertNotes - "Mirrors" notes centered around the selected note.
midiKeySplit - Simple keyboard splitter.
midiKeySplit4 - Four-zone keyboard splitter.
midiNotchFilter - Isolate, remove, or channelize specific MIDI messages.
midiNoteGroups - Assign play and/or choke groups to MIDI notes.
midiNotesToCC - Converts note number and velocity to CC messages.
midiNoteToggle - Notes (optionally within a selected range and/or channel) are toggled... play a note once to turn it on, play it again to turn it off.
midiNRPNConverter - Converts between NRPN/RPN and CC messages, with 16 conversion slots.
midiOverlappingNoteKiller - Prevents overlapping notes at the same pitch.
midiPitchBendQuantize - Quantizes pitch bend messages to up to 25 values.
midiPitchBendToNotes - Changes pitch bend plus note messages into notes at the "bent" pitch (may be useful for using Suzuki QChord with non-multitimbral instruments).
midiPolyphony - For spreading polyphony across MIDI channels, i.e. if you play 4 notes, each one will go to a different channel. Polyphony per channel can be set from 1 to 16 notes for more flexibility. You can also use it to convert polyphonic input to monophonic output.
midiProbability - Add probability-based effects to incoming MIDI events, optionally synced to host timeline.
midiProgramChange - Send Program Change and/or Bank Select messages.
midiSimpleLFO - One CC LFO with some "simple" options.
midiSostenuto - Like a piano sostenuto pedal, but for MIDI notes instead of piano dampers.
midiStrum - Sequentially delays notes of an input chord to simulate strumming.
midiStuckNoteKiller - Sends note-off messages to end hanging notes when the host stops (for hosts that don't do this themselves).
midiSwing - Delays and/or offsets velocity of and applies probability to notes (and optionally also CCs) at every other step of a selected note value.
midiTriggerList - Use one note or CC to trigger up to 8 other notes and/or CCs.
midiVelocityScale - Scale/reverse/offset velocity of input notes (Note On and/or Note Off).
Windows: http://thepiz.org/pizmidi/pizmidi.zip (20091010)
Linux: http://thepiz.org/pizmidi/pizmidi.tar.bz2 (20081204)
Mac OS X: http://thepiz.org/pizmidi/pizmidi.dmg (20090506)
For Windows, DarkStar has made GUI versions:
Other plugins (no GUI):
Gain - Simple gain plugin for linux: Gain.so.bz2
link/unlink - Not a midi plugin - A workaround for XT2 to get back the XT1 functionality to link/unlink audio inputs and outputs (Windows)
midi8CCRouter_PC - The same as the 16 CC router, but with only 8 slots (so that Cantabile shows full-length sliders), and responds to Program Change. This might be useful if you have a midi controller with a small number of knobs (or only a mod wheel), to change their function using Program Change messages. (Windows)
midiCCToTempo - Use a CC to control the host's tempo, if supported by the host, which it almost certainly isn't (Windows / Linux / OS X)
XT2 transport control - Control XT2's play, stop, home, and record functions with midi (Windows / Linux)
Plugins with GUI (still Windows only unless otherwise noted):
cpuram - Displays system CPU load and free physical memory
midiPads - 1 to 64 buttons/sliders/XY-pads that send learnable midi messages, with resizable GUI. (1-program version) (now available as part of Jost, the open source multi-technology Linux host!)
midiChs - same as energyXT1 "MIDI chs" component
midiKeyboard Win/Mac - Resizable piano keyboard to monitor/play midi notes
midiMonitor Win/Mac - Resizable, scrollable midi monitor. can save log as text or midi file. loads default settings from "midiMonitor.fxp" in the same directory as the plugin.
Big Clock (effect version) - Configurable, resizable counter for bars/beats/ticks, hours/minutes/seconds/frames, or samples.
image - Displays an image, and optionally a line of text. Resizable. Load images (png/jpg/gif/svg) with drag & drop. Supports program change.
midiOut Win/Mac - Sends MIDI directly to an output port. Now can also send MIDI clock & song position pointer. Has a small icon to remind you which device the midi is going to (drag & drop to load an image).
midiIn - Receives MIDI from an external input.
midiCurve - Maps a CC, velocity, aftertouch, and/or channel pressure according to a curve. Instructions are in the plugin (click "Help").
Source code is available by request, as long as you agree not to make fun of my code in public. Here's one of them: http://thepiz.org/pizmidi/midiForceToRange_src.zip
- Add more useful presets
- Add support for 14-bit CC pairs where appropriate
- Make a real website (will be here: http://thepiz.org/pizmidi)
Future Plugin Ideas:
- - Something like soma's enveloper (smooth tempo-synced audio to CC) (in progress)
- CC smoother (see soma CC_Glider)
- Advanced note transposer/filter/splitter (like XT 1.x MIDI Patcher / asseca's MidiSplit)
- Random note generator (better than randomid)
- Random cc generator (maybe something like Modismaster, but different)
- Something like Trollo (configurable qwerty to midi)
- Some kind of graphical CC LFO/envelope (like XT 1.x envelope comp)
- Complex CC LFO (two oscillators modulating each other, etc.)
- Joystick to midi
- Mouse (trackball, trackpad, graphics tablet...) to midi
- Learning midi message translator (midi macros?) (14% done)
- Note (start,stop,length) quantizer (old SynthEdit attempts: noteonoffq & Lengther)
- SysEx recorder/sender
- Endless encoders (prototype)
- Beat-synced midi sampler/looper (amazing version)
- "Round robin" midi notes
- One dedicated X/Y pad with every option imaginable
- Midi-controlled mouse pointer & buttons (test version - needs work)
- Velocity compressor/expander
- CC scene morpher (see MiddyMorphy)
- CC to SysEx (proof of concept: midiCCToSysex)
- midi note stepper (like cc stepper but for notes)
- chord plugin
- Any other useful ideas I (or you) can think of