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 VST effects depends on whether your VST 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 VST host song files and also in exported VST bank files, so you don't need to reconfigure them each time you open your song or load a bank settings file.  Also, the CC assignments that you configure stay the same when you switch between programs 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 VST hosts (like Live and AudioMulch, for example) can manage CC control of VST 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.  If you are using csh or tcsh in a UNIX environment (for example, Terminal in Mac OS X), you can set the variable by entering the command setenv DFX_PARAM_STEALMIDI true   If you are using bash, then enter export DFX_PARAM_STEALMIDI=true   To return to the default, just do the same thing with "false" rather than "true" (0 and 1 also work in place of false and true, if you prefer).

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 details 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 program/preset, unless the program change number is greater than the number of programs that the plugin has.

Transverb has a special program:  15.  Sending that program change message will tell Transverb to randomize its parameters.  (Actually, 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, Plogue Bidule, AudioMulch, Cubase, Nuendo, SynthEdit, Fruity Loops, Orion, and Buzz are, to the best of my knowledge, the only VST hosts that support sending MIDI notes to non-synth audio-processing plugins.

In Logic, the way to make a Destroy FX plug work with MIDI is to first insert it as an audio instrument.  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.

In Cubase and Nuendo, the way to make a Destroy FX plugin work with MIDI is to first insert it as an effect and activate it.  Now it will be included as a MIDI device in Cubase's MIDI output devices list.  In the output device menu for the MIDI tracks, you will see the plugin's name listed.  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 Plogue Bidule or SynthEdit, just patch MIDI into the effect.  Bidule and SynthEdit make no distinctions between synths and effects.

I am told that AudioMulch, Fruity Loops, Nuendo, 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 programs.

Marc Poirier & Tom Murphy 7
destroyfx@smartelectronix.com
http://www.smartelectronix.com/~destroyfx/