MIDI Support

To use ex.factory MIDI support, your copy of ex.factory needs to be registered.

Before you use the ex.factory's MIDI support, I recommend that it is worth you reading the section on MIDI Issues. The EX MIDI SYSEX implementation has a few serious bugs in it that can corrupt your data when you transfer Voices in either direction if you use an application that does not take the bugs into account.

The MIDI support of ex.factory has been designed to work around these bugs, but it is worth you being aware of the bugs and what ex.factory has to do to work around them. I say this because the ex.factory MIDI support, whilst being perfectly usable, cannot get rid of the bugs but has to live with them.

Connecting the EX5 MIDI Ports

The EX5 has two sets of MIDI Ports, and which ones you use are quite important for ex.factory to work correctly. The EX7 and EX5R only have the MIDI A output ports.

You MUST always use the EX5 MIDI A Input Port to receive commands from ex.factory.

CAUTION: Failure to use the EX5 MIDI A Input port may cause data corruption when receiving voices from the EX5.

This is because for ex.factory to work around the EX5 MIDI Issues, it needs to send bank select and patch changes for any voice that has element four active, so that it can get an uncorrupted copy of the fourth element from the voice edit buffer. The EX5 only receives bank and patch changes on the MIDI A Input Port. So if you use the MIDI B Input port, the bank and patch change commands that ex.factory send are ignored, and Element four will come from whatever voices happens to be in the Voice Edit buffer.

NOTE: The ex.factory Channel Number setting in the MIDI Preferences dialog tab MUST match the EX5's Global Recv Ch setting.

Page 14 of the EX5 manual states that MIDI B In only receives System Realtime messages and MIDI time code messages.

If you are running ex.factory on Windows 7, there appears to be a Windows 7 issue which stops Windows from receiving SYSEX data when the same MIDI source is providing MIDI Clock data, which the EX5 does by default on the MIDI A Output port. This is a Windows 7 problem not present on earlier versions of Windows, and it occurs even when using a low level tool like MIDI-OX, which verifies that it is not an ex.factory or Java MIDI bug.

If you are running ex.factory on Windows 7, you must choose one of the following:

The EX5 MIDI A output has an echo option which echoes the data on the MIDI A Input Port to the MIDI A Output Port. I use this feature in my Live rig to merge data from a MIDI Foot Controller connected to the EX5 MIDI A Input Port with the EX5 MIDI data, so both the foot controller MIDI data and the EX5 MIDI data are sent on the EX5 MIDI Output Port.

If MIDI Echo is active, you must either turn it off, or use the MIDI B Output port for send data to ex.factory. Details of the MIDI-A Echo Back option can be found on Page 275 of the EX5 Manual.

For this reason and because I am running on Windows 7, I always connect my PC to the EX5 using the MIDI A Input Port and the MIDI B Output Port.

Configuring MIDI Support

To configure MIDI support, go to the MIDI Preferences tab in the Preferences Dialog, and set up the following:

Notes:

You can check that these settings work by pressing the Test EX MIDI Settings button. When you press this button a test message is sent to the EX and the subsequent Dialog will tell you if communication was successful or if there was a problem.

The above steps set up the basic communication mechanism for MIDI support, and you then can set up the remaining options according to your preferences:

Finally, it is important that you set up the Edit Confirm during Transfer to EX Memory to match the Edit Confirm Setting in the EX Utility Other tab, otherwise the exports to EX Memory locations may not work correctly.

If you change this setting in the EX then you should also update the setting within ex.factory.

Caution: When you load an S1A or S1Y file then the following values can change!

All these values need to match those in ex.factory for correct MIDI operation, so you should always be careful that loading S1A or S1Y files that have not come from your system (e.g. a download from AMPFEA) do not disturb these settings.

If they do you have two options:

Finally, you may also wish to tune the options found in the Advanced MIDI Preferences tab of the Preferences Dialog to speed up the MIDI transfers to EX Memory locations. The default values used by ex.factory are conservative and set so they should work hopefully on all systems. With careful tuning, I've had transfers working on my system at 5 seconds per Voice, which is roughly double the speed achieved by using the default values. If you do tune these values you should do so with care to ensure that your Voices are reliably transferred.

Copying/Moving Voices and Performances

In operation, using MIDI is quite straightforward.

You can get all the EX Voices/Performances into any Child Window (including the EX Synthesizer Window) by selecting the Import from MIDI option on the MIDI Menu, or the     button on the Tool Bar.

This imports all Voices, and all Performances if you have set the MIDI Preferences options to include Performances during the bulk transfers.

Similarly you can also export all Voices and Performances using the Export MIDI option on the MIDI Menu, or the    button on the Tool Bar.

Note if you import or export MIDI data to/from a Child Window which is opened from a data file, then the EX Synthesizer Window is also updated with the Voices/Performances being imported/exported.

You can also import/export individual Voices/Performances or a selection of Voices/Performances by selecting the Import/Export memory options upon the Voice's or Performance's Context Sensitive Menu. You can also use the keyboard shortcuts for doing this.

And you can also move/copy Voices/Performances between the EX Synthesizer Window and Child Window using drag and drop.

You can also import/export a Voice or Performance to/from the EX Edit Buffer by selecting a single Voice/Performance and selecting the import/export to/from EX Edit Buffer options from the Voice's or Performance's Context Sensitive Menu. You can also use the keyboard shortcuts for doing this

Exporting Voices from ex.factory to the EX Edit Buffer is really handy, for example, when trying to find a particular Voice in a file and you don't wish to load the file into the EX.

Finally you can also perform all the operations on Voices/Performances in the EX Synthesizer Window that you can upon Voices/Performances in a normal Child Window.

If you have the Automatically Update EX after Synth Window Edit option active, when you change data the EX Synthesizer Window then the changes are automatically exported to the EX. If you are making a lot of changes, you may find yourself waiting quite a lot during the time it takes to do these exports.

So you may wish to turn the Automatically Update EX after Synth Window Edit option off during intensive editing sessions. Once you've made all your changes you then select the Export MIDI option on the MIDI Menu, or the    button on the Tool Bar  Export option to manually export the changes.

If you quit ex.factory with changes still present in the EX Synthesizer Window that have not been exported, then you will be asked if you wish to export the data or not.

Voice/Performance MIDI Limitations

You need to be aware that MIDI SYSEX transfers were designed in the days when a synth patch could be expressed in a few hundred bytes worth of data. EX Voices and Performances are quite large in comparison to synths from those early days. Therefore, transferring Voices/Performances from the EX via MIDI is no faster than saving them via floppy disk.

As such I believe the MIDI transfers complement the disk/load save operations but they don't replace them. However they are great to have, and I wouldn't like to be without them now!

And as mentioned above you need to ensure that the settings in ex.factory match those in the EX5, paying particular care when you load new S1A or S1Y files.

And finally if you make a lot of Drum Voices you need to be aware of the MIDI Issues associated with Drum Voices, which I haven't been able to find workarounds for.

MIDI Keyboard Routing

ex.factory has a facility to allow MIDI data from an additional MIDI input port, defined in the MIDI Preferences dialog, to be routed to the port you have selected for ex.factory to output MIDI data on. This allows, for example, you to use a master keyboard (which may be closer to your computer) to be used when auditioning EX sounds that you've sent from ex.factory to the EX edit buffer.

You access this feature by selecting the EX MIDI Router ... option in the  MIDI Menu or by pressing the F12 function key whenever you need it, which activates the following dialog.

The router uses the MIDI channel defined in the MIDI Preferences dialog This can either be the channel transmitted by the source device, or the specified channel.

The routing is active until you close the dialog by selecting the Close Channel button or by pressing the ESC key.

VL Custom Wave Support

The EX has sixteen writable memory locations for Custom VL Waves (the last 16 VL Waves - numbers 257 through to 272).

You can read the names of the Custom VL Waves currently in the EX by selecting Get VL Wave Names Option on the MIDI Menu. The VL Wave names can be viewed in the EX Synthesizer Window.

You can also copy open VL70m LIB and MIDI files and drag copy the VL Waves in the file to the User VL Wave slots in the EX Synthesizer Window. You can copy single Waves or a Selection of Waves.

Please note you can only Drag Copy VL70m voices/elements to the EX Custom VL Wave Slots; you cannot Drag Move them.

Default Advanced MIDI Timing Settings

The following table lists the default settings for the options found in the Advanced MIDI Preferences tab of the Preferences Dialog.

Ping Delay 50ms
Bank Change Delay 50ms
Patch Change Delay 300ms
Voice Transmit Delay 4,000ms
Voice Store Delay 4,000ms
Remote Switch Delay 50ms

If you have adjusted these values and are experiencing problems when writing Voices to EX Memory via MIDI then I would recommend resetting these values back to these settings.

You can diagnose the transferring of Voices to EX Memory via MIDI by using the switches given in the Advanced MIDI Preferences tab of the Preferences Dialog. These switches are all set during normal operations, but being able to switch thse options on/off can be a useful debugging aid.

Sample Advanced MIDI Timing Settings

The following table lists the values I am using on my system for the options found in the Advanced MIDI Preferences tab of the Preferences Dialog. This should give you an idea of how the values can be adapted to provide faster transfers. Note: I cannot guarantee that these values will work on your system. If you do change the timing values be sure to test them out thoroughly for reliability.

Ping Delay 50ms
Bank Change Delay 50ms
Patch Change Delay 300ms
Voice Transmit Delay 600ms
Voice Store Delay 3,000ms
Remote Switch Delay 50ms