What can you do with Destroy FX + MIDI?

Most of our Destroy FX plugins can be controlled, at least to some degree, with MIDI. There are 3 types of control: parameter automation with CCs, program changes, and note/pitchbend control.

All DFX MIDI is handled omni-style. Being able to use MIDI with effect plugins depends on whether your host software supports that (see the notes about compatibility below).

control with notes & pitchbend:

Some of our plugins can be controlled with MIDI notes and pitchbend. Rez Synth and Stuck Synth need notes, otherwise they can't do much of anything. They both like pitchbend, too. Some of our other plugins are enhanced with MIDI note control but don't require it. Buffer Override is a lot more fun with notes and pitchbend. They control the buffer divisor parameter. Skidder can be triggered with notes. Scrubby uses notes for turning transposition steps on or off in pitch constraint mode.

automate parameters with CC messsages:

You can automate any parameter on Destroy FX plugins with MIDI CCs (continuous controller messages). Assigning CCs to parameters is done with a "MIDI learn" function. What you do is press the MIDI learn button on the plugin, then click on some parameter, and it will become the "learner" (some controls will light up when you do this to make it obvious). As soon as you produce some MIDI CC message (with a MIDI device or from your sequencer), that incoming CC assigns itself to the learner parameter. From that point on, the parameter can be automated with messages from that CC. If another CC was already assigned to that parameter, then the old CC gets un-assigned. Each parameter can only have one CC assigned to it, but you can assign the same CC to more than one parameter (see the advanced stuff section below if you don't like that). When you're done assigning CCs to parameters, you can click on the MIDI learn button again to exit MIDI learn mode.

If you want to erase all of the CC assignments that you've made, press the MIDI reset button. If you want to erase the assignment for only one parameter, you can turn on MIDI learn mode, click on the parameter, and then click on the MIDI reset button. That parameter will lose its assignment but the rest of the parameters will keep theirs.

By default, Destroy FX plugins don't care on which MIDI channels the events are received; the events are handled omni-style (see the advanced stuff section below if you don't like that).

CC assignments are saved in host song files and also in exported preset files (in VST, though, only with "bank" files, not "program" files), so you don't need to reconfigure them each time you open your song or load a preset settings file. Also, the CC assignments that you configure stay the same when you switch between presets in a plugin.

Along with CCs, some of our plugins also allow you to assign the pitchbend wheel and even notes to control parameters (see the advanced stuff section below).

You can assign almost any CC to a parameter (all except 123), but you should realize that some CCs are special and might be handled in funny ways by the particular sequencer/multi-tracker that you use. Some CCs are technically supposed to be "on/off" values and not utilize the full 0 to 127 value range. Your sequencer might force these ones to output as only 2 values, so keep that in mind if you find them not working properly. There are also a few other CCs are "single value" and are only supposed to use 0. Also, some CCs are supposed to handle special major functions, like turning all sound off or all notes off. Your sequencer might produce these on its own for the purposes of general MIDI communication. Here's a list of the "special" CCs:

64-69 and 122 are on/off (2 values)
120-127 are for major stuff
120, 121, 123 - 125, and 127 are single-value

In particular 123 (7B) is special. It is the "all notes off" command, and we do not allow this CC to be assigned to parameters because virtually every sequencer sends this command when starting and/or stopping sequencer playback, so it's not necessarily a good idea for you to be sending these messages to your sequencer.

I don't know about all of the sequencers out there, but Logic resets CC 1 (mod wheel), CC 64 (sustain pedal), and CC 123 (all notes off) to 0 when stopping and starting the sequencer, so be careful with those. Also, Logic uses CC 7 for volume and CC 10 for pan. It intercepts CC 7 and 10 messages and does not pass them along to plugins.

If you want to play it safe, CCs 12-63 and 70-119 are probably good ranges to work with.

Some host apps (like Live and AudioMulch, for example) can manage CC control of plugin parameters on their own. So if you use software like that, then you can just decide whether you want to use our plugin's built-in CC control system or use your host's system.

* * * advanced stuff (fancy) * * *

assigning pitchbend and notes to parameters via MIDI learn:
If the plugin is already using either of those things for special purposes (see the section above), then you can't assign them to parameters with MIDI learn (that's means no note assignments in Rez Synth, Buffer Override, Skidder, or Scrubby and no pitchbend assignments in Rez Synth or Buffer Override). Assigning pitchbend to a parameter is just like assigning a CC. Assigning notes is more complicated. If the parameter is a switch or button sort of thing, then you can assign a single note to that parameter and then, each time you play that note, you will toggle the parameter to its next setting. For other parameters, you need to assign 2 notes to define a range over which you can play notes and the notes will be mapped to values for that parameter. To do this, turn MIDI learn on, click on a parameter, play a MIDI note, and then play another MIDI note.

enabling or disabling parameter assignment stealing:
When assigning MIDI stuff to control parameters, the default behaviour in Destroy FX plugins is that you can assign the same MIDI events to more than one parameter. If you dislike that, you can turn on "stealing" mode. In stealing mode, if you try to assign an already assigned MIDI event to a parameter, the new parameter gets the assignment and the old parameter loses it. To do this, you need to set an environment variable DFX_PARAM_STEALMIDI to TRUE. In Mac OS X, you can set environment variables in the file ~/.MacOSX/environment.plist.

enabling or disabling omni operation:
The default behaviour in Destroy FX plugins is to ignore the MIDI channel on which events are received. If instead you want our plugins to pay attention to MIDI channel when distinguishing between events, set the environment variable DFX_PARAM_USECHANNEL to TRUE (see the above section for more info about setting environment variables).

change presets with program change messages:

Just send a MIDI program change message to any Destroy FX plugin and it will switch to that preset, unless the program change number is greater than the number of presets that the plugin has.

Transverb has a special preset: 15. Sending that program change message will tell Transverb to randomize its parameters. (Actually in the VST version, any program named "random" will do that, but by default program 15 is the one with that name.)

important notes about compatibility:

Right now Logic (5.0 or higher), Ableton Live (4.0 or higher), Max/MSP, Spark (2.0 or higher), Plogue Bidule, Cubase, Nuendo, Numerology, Metro, Rax, AudioMulch, SynthEdit, Fruity Loops, Orion (2.7 or higher), and Buzz are, to the best of my knowledge, are the only hosts that support sending MIDI notes to non-instrument audio-processor plugins.

In Logic, the way to make a Destroy FX plug work with MIDI is to first insert it as an audio instrument (starting in Logic 8, effect plugins like these show up in a separate sub-menu there called "AU MIDI-controlled Effects"). Then use the sidechain menu in the plugin window to choose an audio track to route into the plugin. The MIDI will come from the sequences on the audio instrument track (or live MIDI input if that track is selected in the Arrange window) and the audio to be processed will come from the sidechain track. I've also made workaround that let you use Rez Synth, Buffer Override, and Skidder in Logic 4 with MIDI notes, but it's not multi-CPU compatible and now Logic 5 is available, so I've decided to stop distributing those versions. They are still available at our museum, though. Apple have published their own article about this, too.

In Cubase, Nuendo, and Metro, the way to make a Destroy FX plugin work with MIDI is to first insert it as an effect. In Cubase and Nuendo, you must also "activate" it before doing anything else. Now it will be included as a MIDI device/destination in the app's MIDI output devices list. In the output device menu for the MIDI tracks, you will now see the plugin's name listed as an available option. Select the plugin as the output device for one of your MIDI tracks and now that MIDI track's output will be fed into the plugin and allow you to send MIDI to the effect. You can either do that with a prearranged MIDI track or live with a keyboard when that particular MIDI track is selected.

In Ableton Live, insert the plugin as an effect. Then choose or create a MIDI track, and then open the "MIDI To" menu on the MIDI track and select the track where the effect was inserted. Then, if there is more than one MIDI-enabled effect inserted on that first track, you can choose which specific effect you want the MIDI to go to from another pop-up menu below "MIDI To" selection, but otherwise that menu selection will be disabled.

In Max/MSP, all you have to do is send the the vst~ object midievent messages in the left inlet just like you would for an instrument plugin. But unlike instruments, be sure to feed audio into the inlets as well. Also be sure to activate your dac~ before sending any midievent messages, otherwise the messages will be ignored (this is the case with all MIDI-enabled VST plugins in Max/MSP).

In Spark, just open the preferences, go to the MIDI panel, and select the port that your MIDI instrument is plugged into as the "MIDI Input". Spark LE, however, only uses MIDI that is generated by other plugins.

In Plogue Bidule or SynthEdit, just patch MIDI into the effect. Bidule and SynthEdit make no distinctions between instruments and effects.

In Numerology, make sure that you have some MIDI generator module inserted before the effect plugin module, and then you can choose MIDI sources to route into the effect from the effect module's "MIDI Input" menus.

In Rax, the rack slots for MIDI-enabled effects include a "MIDI source" pop-up menu and MIDI "channel" pop-up menu. You configure the effect to receive MIDI by setting those options. Just be aware to choose something different from what you have configured at the top of Rax's main window for the instrument's MIDI input (unless you do want the same MIDI data to be going to both the effect and the instrument).

I am told that AudioMulch, Fruity Loops, Buzz, and Orion know how to send MIDI to plugins as well, but I've never tried those out and therefore can't tell you how to set up our plugins in those applications.