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:
"pizmidi" collection:
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).
Download:
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:
http://asseca.com/wiki/MGUI/MdaPizmidi
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:
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
To Do:
- 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