Author: Michael Minn <michael@michaelminn.com>
June 23, 2001
4.1 Dynamic Name Assignment
4.2 /dev/midi
4.3 /dev/dsp
5.1 usbua100mix
5.2 usbua100sysex
5.3 lsndlist
5.4 lsndplaymidi
USBUA100 is a Linux kernel module device driver for the Roland UA-100 USB MIDI/Audio desktop music production device. The Roland UA-100 is a USB desktop music production tool providing MIDI input/output and high-quality 16-bit digital output. A QT-based X-Windows mixer console is also provided for controlling the UA-100's internal mixer and extensive array of effects.
Because the Roland desktop music products seem to use similar USB/MIDI protocols, USBUA100 also supports MIDI input/output via the Roland UM-1 MIDI adapter and the Roland SC-8850 MIDI Sound Module. Support for other Roland desktop MIDI products is not provided but can probably be added with relative programming ease.
Edirol, Roland's desktop music hardware distributor in the United States, has declined either to develop Linux drivers or provide specs so the open source community could develop a driver. Therefore, USBUA100 was developed based on work done by other Linux devlopers as well as USB traces on MS Windows(tm) and extensive experimentation. As such, it cannot guarantee full-featured and problem-free operation.
I wish to acknowledge a huge debt of gratitude to Nagano Daisuke for developing the USB-MIDI kernel module that also supports MIDI on the Roland desktop music products. While the code for that module was too complex to adapt directly for USBUA100, it served as template for understanding USB module programming and how USB MIDI devices work. If you have problems with USBUA100, you may want to give his module a try. Thanks also go out to Roland and Tom for writing USB Snoopy/SniffUSB the MS-Windows software USB packet sniffer used to investigate the UA-100 USB protocol.
USBUA100 IS ALPHA-LEVEL CODE: While it does appear functional within the limited range of use that it has been subjected to, it has not been tested on different systems or different Linux distributions. It has been released at this stage in the hopes that other UA-100 owners will give it a try and provide feedback needed to work all the bugs out.
Linux Distributions: USBUA100 has only been tested on a stock Red Hat 7.1 distribution (with a 2.4 kernel). I got it to compile on my Red Hat 7.0 (2.2 kernel) machine but did not do more than cursory run.
MIDI Device Files: MIDI input and output is relatively simple and seems pretty solid through the /dev/midi device files. The exact file names (i.e. /dev/midi00, /dev/midi01) are assigned dynamically and therefore system dependent. Name assignments are discussed later.
/dev/sequencer and /dev/mixer: Despite an extraordinary effort, I was unable to get USBUA100 to work with /dev/sequencer due to the arcane complexity of the OSS interface. Therefore, USBUA100 MIDI devices will not be visible under /dev/sequencer and any program (such as playmidi or kmid) that uses /dev/sequencer will not work with USBUA100. Similarly, there is no ALSA (Advanced Linux Sound System) support for USBUA100 and no /dev/mixer support. A graphical mixer program is provided and discussed later.
Audio Sample Formats: USBUA100 currently has no sample rate or resolution conversion capability and only provides capability for handling 44.1Khz 1, 2 and 4 channel 16-bit PCM sample formats (i.e. the native format of the UA-100).
Audio Quality: Audio input and output is relatively clean on my 600Mhz laptop, although there are occasional timing glitches that result in sporadic tics and dropouts.
Channels: Although the UA-100 has two audio output channels (i.e. two stereo D/A convertors), the USB protocol requires sending data for both channels simultaneously. To simplify implementation, only one audio device file (i.e. /dev/dsp or /dev/dsp1) is provided. While it writes stereo output to the first output channel, it supports quadraphonic (4-channel) writes which write to both.
Mixer: The USBUA100MIX console program for controlling the UA-100's internal mixer and effects is functional far from complete. There are still some quirks to the order of SYSEX messages that the UA-100 needs and you may need to click on selection boxes more than once to get the commands to work. The UA-100 has an extensive collection of audio effects and while capability for turning them on has been provided, only a handful of the dialogs needed to adjust the parameters for each effect have been written. I have always disliked the layout of the UA-100 mixer that is provided for Windows/Mac and I am striving to eliminate some unnecessary features (such as sub-masters).
Version History/Download: The following is a version history and links to downloadable source tarballs.
Initial public release
Download the source tarball from the link above and untar/unzip it. This will copy the source and precompiled module into a "usbua100" directory:
$ tar -zxvf usbua100-2001.06.24.tar.gz $ cd usbua100
USBUA100 is available as source code only and compilation is not slow or difficult. USBUA100 should compile with no problem on Red Hat 7.0 and 7.1 standard installations and probably will compile on other distributions with little or no tweaking of the makefile. Kernels before 2.2 do not have USB support and hence, USBUA100 will not compile or work on earlier kernels. Compilation of USBUA100MIX will require a version of QT compatible with QT version 2.3 - again, usually shipped with most distributions.
AS SUPERUSER, perform a simple make and make install:
$ make $ make install
USBUA100 requires registration functions that are in the standard kernel sound modules. Unfortunately, these modules are loaded on demand and you will have to manually load them before loading the USBUA100 module:
$ /sbin/insmod soundcore $ /sbin/insmod usbua100
To get these modules to load at boot time, you will need to manually edit your "/etc/rc.d/rc.local" boot script and add the two insmod lines (without the dollar sign, of course) at the end of the script.
No changes to modules.conf are suggested. Normally, sound cards are configured to load their modules on demand when the device is accessed. Therefore, if you have a native soundcard or internal sound chip that you want to take precedence over USBUA100 (i.e. soundcard uses /dev/dsp and USBUA100 uses /dev/dsp1), you must explicitly load that module BEFORE loading USBUA100. For example: in my laptop, the maestro module handles the Maestro sound chip. Therefore, the end of my rc.local file looks like this:
/sbin/insmod soundcore /sbin/insmod maestro /sbin/insmod usbua100
If you haven't already, you should plug your UA-100 (or UM-1 or SC-8850) into the USB port of your computer and turn it on. You can verify that the USB subsystem has successfully recognized both USBUA100 and your hardware by typing:
$ cat /proc/bus/usb/devices
You will get some rather cryptic output giving information about the USB devices connected to your computer. At the end of the list should be something that looks like this
C:* #Ifs= 3 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=01(O) Atr=01(Isoc) MxPS= 0 Ivl= 1ms I: If#= 0 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=01(O) Atr=01(Isoc) MxPS= 360 Ivl= 1ms I: If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=81(I) Atr=01(Isoc) MxPS= 0 Ivl= 1ms I: If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=81(I) Atr=01(Isoc) MxPS= 184 Ivl= 1ms I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=02(O) Atr=02(Bulk) MxPS= 32 Ivl= 1ms E: Ad=82(I) Atr=02(Bulk) MxPS= 32 Ivl= 1ms I: If#= 2 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbua100 E: Ad=02(O) Atr=02(Bulk) MxPS= 32 Ivl= 1ms E: Ad=82(I) Atr=03(Int.) MxPS= 32 Ivl= 2ms
This is a listing of the "endpoints" used for reading and writing to the USBUA100. The important part is "Driver=usbua100". If it reads "Driver=(none)", the USB subsystem has not recognized USBUA100. If you can't find anything like these lines in the listing, the USB subsystem has not detected your hardware and you should verify that your cable is connected correctly and the device is on.
Assuming that this listing is good, you can move on to trying some output.
USBUA100 uses the OSS module registration functions which dynamically assign device files at the time the USB device is connected to the computer. As such, the exact name of the device files used to access your UA-100 will vary depending on the number of devices already connected at the time you connect and turn on your USB device.
Unfortunately, since the Linux sound system is in flux, /dev/sndconfig is apparently no longer a part of the standard Linux distribution. lsndlist is a simple command line program included as part of USBUA100 installation that lists current Linux sound device files. Type "lsndlist" at a command line prompt and you should get a listing of all sound devices on your system.
Alternatively, USBUA100 lists it's operational and error messages to the /var/log/messages system file. AS SUPERUSER, you can open this file and somewhere near the end should be messages from USBUA100 indicating which device files are being used. The listings should look something like this:
Jun 23 16:43:10: USBUA100: Linux USB Driver for Roland MIDI interfaces v2001.06.23 Jun 23 16:43:10: USBA100: Registered UA-100 Out as /dev/dsp1 - interface 0, endpoint 1 Jun 23 16:43:10: USBA100: Registered UA-100 In as /dev/dsp1 - interface 1, endpoint 129 Jun 23 16:43:10: USBA100: Registered UA-100 A as /dev/midi00 Jun 23 16:43:10: USBA100: Registered UA-100 B as /dev/midi01 Jun 23 16:43:10: USBA100: Registered UA-100 CTRL as /dev/midi02
This indicates that the audio device is /dev/dsp1 and the three MIDI ports (two in/out ports and one port for UA-100 control messages) are /dev/midi00, /dev/midi01 and /dev/midi02.
MIDI input and output is supported through the standard Linux /dev/midi files. As discussed above, the exact names (i.e. /dev/midi02, /dev/midi01) are dynamically assigned and system dependent.
To use MIDI output, you must, of course, have some kind of MIDI sound device connected to the MIDI output ports of the UA-100 or UM-1. The SC-8850 is a MIDI sound module that generates it's own sound.
The easiest program to test MIDI with is the lsndplaymidi program that is installed as part of the USBUA100 installation. You can use any MIDI file (.mid) on your system, or use the the aquarium.mid (from Saint-Saens Carnival of the Animals) included in the USBUA100 tarball. As detailed above, if you have existing MIDI devices on your system, /dev/midi00 may be /dev/midi01 or higher:
$ lsndplaymidi aquarium.mid /dev/midi00
Note that lsndplaymidi is an extremely simple player that only supports type 0 MIDI files (which have a constant stream of MIDI messages in one "track"). Attempts to play type 1 or type 2 files will result in meaningful but fatal error messages.
Digital audio input and output is supported through a standard Linux /dev/dsp files. As discussed above, the exact name (i.e. /dev/dsp, /dev/dsp1) is dynamically assigned and system dependent.
To test audio output, you need a .wav file. If you do not have one under Linux or on your Windows partition, you can "rip" one from a CD using the cdda2wav program that ships with most Linux distributions. Insert a CD in your computer's CD-ROM drive and type the following. If you want to use something other than track #1, change the number after the -t option. You can also change "audio" to any file name you want.
$ cdda2wav -D /dev/cdrom -t 1 audio
Linux has a very flexible command line sound program called SOX. It has a rather cumbersome syntax, so there is a "play" script that can be invoked from the command line:
$ play -d /dev/dsp1 audio.wav
/dev/dsp1 is an alternate sound device file. The main digital audio device is /dev/dsp. If you have no sound card on your computer, USBUA100 may attach to /dev/dsp instead of dsp1. If you have multiple sound devices, it may attach to /dev.dsp2 or higher.
The USBUA100 tarball contains a QT-based graphical mixer interface for controlling the internal mixer and effects of the UA-100. This will not, of course, work with the UM-1 or SC-8850.
The executable is called "usbua100mix" and can be started by typing that on an X-Windows console.
The mixer assumes some familiarity with the audio paths of the UA-100. There are five channels:
Note that there is no recording level control. I have found that in practice, recording level should be set by the analog controls to maximize digital headroom on recorded tracks.
For each channel:
The UA-100 has the capability for either ONE very complex effect (FULL EFFECT) that can be applied to any input or assigned to one of the two system effects busses, OR THREE "compact" effects: an insertion effect that can be applied to one input and two system effects (a chorus and a reverb or delay) that are applied to the system effects busses. These are selected with the four buttons on the right of the USBUA100MIX dialog. Note that if a FULL effect is selected, the INSERTION and SYSTEM effects are turned off...and vice-versa.
The type of effect is selected in a combo box at the top of the appropriate dialog. THE PARAMETERS FOR MOST EFFECTS HAVE NOT BEEN IMPLEMENTED YET. When you select an effect, the default settings are applied for now. For the few effects with parameters, the meaning of a slider can be discerned by holding the mouse pointer over a slider...a tooltip bubble will pop up describing the purpose of the slider. This was chosen over short cryptic names to preserve space.
FULL effects can be applied to any input or to one of the two system effects busses. INSERTION effects can be applied to any input. The selection of where the effect is placed is a combo box next to the effect type combo box.
USBUA100MIX has the capability to save and load settings to/from the same .uax files that the MS-Windows version of the the mixer uses. This capability has not been tested extensively and is probably buggy.
The UA-100 ships with a CD containing some awkwardly written HTML reference materials that are installed with the MS-Windows software in "/Program Files/Roland". If you have the UA-100 software installed on your Windows partition, you may want to consult this material for further details. You can also copy it off of the CD-ROM into a Linux directory.
During testing, I wrote a very simple command line program for sending SYSEX messages to the UA-100. Although it is superceded by the vastly superior USBUA100MIX graphical mixer, it is included in case you want to write scripts to control the UA-100. The syntax:
usbua100sysex <midi device name> <address> <data bytes>...
For example:
usbua100sysex /dev/midi02 00405003 64
This changes parameter address 00405003 (master volume level) to 64 (50%)
Unfortunately, since the old Linux sound system (OSS) interface is being superceded by a new one, the standard technique for listing sound capability (cat /dev/sndstat) no longer works. lsndlist is a command-line utility for listing the status of standard Linux audio device files.
To permit query of the names of USBUA100 MIDI devices, USBUA100 and lsndlist implement the SNDCTL_MIDI_INFO ioctl which is normally only used with /dev/sequencer.
lsndlist is also part of the LSND suite of simple command line programs.
I was surprised to find that there is no commonly available Linux command line MIDI player available other than PLAYMIDI. PLAYMIDI cannot be used with USBUA100 because it requires a /dev/sequencer implementation to find device files. Therefore, lsndplaymidi is provided as a simple command line MIDI player. To ease implementation, only Type 0 MIDI files are supported. I assume that most sequencers have the capability for export in this format.
lsndplaymidi is also part of the LSND suite of simple command line programs.
A listing of the UA-100 SYSEX messages (derived from Roland's documentation) is given below:
Data Transmission F0: Start SysEx 41: Manufacturer (Roland) 10: Device ID 00: Model ID 1 11: Model ID 2 12: Command (Transmit data) aa: Address aa aa: aa: dd: Data dd: ck: checksum = 128 - ((sum of address & data bytes) & 0x3f); f7: end of SysEx Examples: F0 41 10 00 11 12 00 40 02 00 01 00 3D F7 (select Stereo-EQ as Mic2 insertion effect) f0 41 10 00 11 12 00 40 50 03 64 09 f7 (master level of 64) In URB buffer, the message is split into 3 byte chunks with a 24h is placed before every chunk except for a 25h before the final chunk. 24 f0 41 10 24 00 11 12 24 00 40 02 24 00 01 00 25 f7 Note that for messages with multiple data bytes (length > 1), the first data byte (usually the significant one) comes first. ------------------------------------------------------------------------ 00 40 00 00 01 PC Mode (VT Effect Mode) - sent by UA-100? 00 40 00 00 03 PC Mode (Compact Effect Mode) 00 40 00 00 04 PC Mode (Full Effect Mode) 00 40 00 00 05 VT Mode 00 40 00 00 06 Vocal Mode 00 40 00 00 07 Guitar Mode 00 40 00 00 08 GAME Mode 00 40 00 00 09 BYPASS Mode 00 40 00 01 0x Copyright (0 off, 1 on) n = 1 (line, mic1, mic1+2), 2 (mic2), 3 (wave1), 4 (wave2), 5 (sys effect 1), 6 (sys effect 2) 00 40 0n 00 xx 00 Effect type (listed below) 00 40 0n 03 xx Effect parameter 1 00 40 0n 04 xx Effect parameter 2 00 40 0n 05 xx Effect parameter 3 00 40 0n 06 xx Effect parameter 4 00 40 0n 07 xx Effect parameter 5 00 40 0n 08 xx Effect parameter 6 00 40 0n 09 xx Effect parameter 7 00 40 0n 0A xx Effect parameter 8 00 40 0n 0B xx Effect parameter 9 00 40 0n 0C xx Effect parameter 10 00 40 0n 0D xx Effect parameter 11 00 40 0n 0E xx Effect parameter 12 00 40 0n 0F xx Effect parameter 13 00 40 0n 10 xx Effect parameter 14 00 40 0n 11 xx Effect parameter 15 00 40 0n 12 xx Effect parameter 16 00 40 0n 13 xx Effect parameter 17 00 40 0n 14 xx Effect parameter 18 00 40 0n 15 xx Effect parameter 19 00 40 0n 16 xx Effect parameter 20 00 40 0n 17 xx Effect parameter 21 00 40 0n 18 xx Effect parameter 22 00 40 0n 19 xx Effect parameter 23 00 40 0n 1A xx Effect parameter 24 00 40 0n 1B xx Effect parameter 25 00 40 0n 1C xx Effect parameter 26 00 40 0n 1D xx Effect parameter 27 00 40 0n 1E xx Effect parameter 28 00 40 0n 1F xx Effect parameter 29 00 40 0n 20 xx Effect parameter 30 00 40 0n 21 xx Effect parameter 31 00 40 0n 22 xx Effect parameter 32 00 40 0n 23 xx Effect parameter 33 00 40 0n 24 xx Effect parameter 34 00 40 0n 25 xx Effect parameter 35 00 40 0n 26 xx Effect parameter 36 00 40 0n 27 xx Effect parameter 37 00 40 0n 28 xx Effect parameter 38 00 40 0n 29 xx Effect parameter 39 00 40 0n 2A xx Effect parameter 40 00 40 10 00 00 Mic input mode 00 40 10 00 01 Line input mode 00 40 10 00 02 MIC1+MIC2 Mode (not in VT mode) 00 40 10 01 xx Input pan 1 (0 - 40 - 7f) 00 40 10 02 xx Input pan 2 (0 - 40 - 7f) 00 40 10 03 0x Monitor (0 off, 1 on) n = 1 (line, mic1, mic1+2), 2 (mic2), 3 (wave1), 4 (wave2), 5 (sys effect 1), 6 (sys effect 2) 00 40 1n 00 xx Effect 1 send level (full/compact effect mode) 00 40 1n 02 xx Effect 2 send level (full/compact effect mode) 00 40 1n 04 xx Submaster send level (not in VT mode) 00 40 1n 05 xx Fader level (not in VT mode) 00 40 1n 06 0x Mute (0 off, 1 on) 00 40 1n 07 0x Solo (0 off, 1 on) 00 40 40 00 01 VT effect mode 00 40 40 00 03 Compact effect mode (1 insertion + 2 system effects) 00 40 40 00 04 Full effect mode (1 effect) 00 40 40 01 0x Line/Mic1/Mic1+2 insertion effect on/off (0 off, 1 on) 00 40 40 02 0x Mic2 insertion effect on/off (0 off, 1 on) 00 40 40 03 0x Wave1 insertion effect on/off (0 off, 1 on) 00 40 40 04 0x Wave2 insertion effect on/off (0 off, 1 on) 00 40 40 05 0x System effect 1 on/off (0 off, 1 on) 00 40 40 06 0x System effect 2 on/off (0 off, 1 on) 00 40 40 07 xx Effect 1 master return 00 40 40 08 xx Effect 1 submaster return 00 40 40 09 xx Effect 2 master return 00 40 40 0A xx Effect 2 submaster return 00 40 40 0B 0x Vocal Transform 1 receive channel (0 - F) 00 40 40 0C 0x Vocal Transform 1 note enabled (0 off, 1 on) 00 40 40 0D 0x Vocal Transform 1 bend enabled (0 off, 1 on) 00 40 40 0E 0x Vocal Transform 2 receive channel (0 - F) 00 40 40 0F 0x Vocal Transform 2 note enabled (0 off, 1 on) 00 40 40 10 0x Vocal Transform 2 bend enabled (0 off, 1 on) 00 40 50 00 0x Record source (Mixer: 0 line/mic, 1 mic2, 2 wave1, 3 wave2, 4-7 ch 1-4, 8 submaster, 9 master) (VT: 0 line/mic, 1 mic3, 2 wave1, 3 wave2, 4 VT-out, 5 master) 00 40 50 01 0x Output (see record source) 00 40 50 02 xx Recording level 00 40 50 03 xx Master level n = 0 (Voice Transformer), 1 (Vocal), 2 (Guitar), 3 (Game) (NOT FOR PC MODE) 00 40 6n 00 xx Preset effect parameter 1 (0 - 39) 00 40 6n 01 xx Preset effect parameter 2 (0 - 39) 00 40 6n 02 xx Preset effect parameter 3 (0 - 39) 00 40 6n 03 xx Preset effect parameter 4 (0 - 39) 00 40 6n 04 xx Preset effect default Value 1 (0 - 127) 00 40 6n 05 xx Preset effect default Value 2 (0 - 127) 00 40 6n 06 xx Preset effect default Value 3 (0 - 127) 00 40 6n 07 xx Preset effect default Value 4 (0 - 127) 00 40 6n 08 xx Preset effect default Value 5 (0 - 127) 00 40 6n 09 xx Preset effect default Value 6 (0 - 127) 00 40 6n 0A xx Preset effect default Value 7 (0 - 127) 00 40 6n 0B xx Preset effect default Value 8 (0 - 127) 00 40 6n 0C xx Preset effect default Value 9 (0 - 127) 00 40 6n 0D xx Preset effect default Value 10 (0 - 127) 00 40 6n 0E xx Preset effect default Value 11 (0 - 127) 00 40 6n 0F xx Preset effect default Value 12 (0 - 127) 00 40 6n 10 xx Preset effect default Value 13 (0 - 127) 00 40 6n 11 xx Preset effect default Value 14 (0 - 127) 00 40 6n 12 xx Preset effect default Value 15 (0 - 127) 00 40 6n 13 xx Preset effect default Value 16 (0 - 127) 00 40 6n 14 xx Preset effect default Value 17 (0 - 127) 00 40 6n 15 xx Preset effect default Value 18 (0 - 127) 00 40 6n 16 xx Preset effect default Value 19 (0 - 127) 00 40 6n 17 xx Preset effect default Value 20 (0 - 127) 00 40 6n 18 xx Preset effect default Value 21 (0 - 127) 00 40 6n 19 xx Preset effect default Value 22 (0 - 127) 00 40 6n 1A xx Preset effect default Value 23 (0 - 127) 00 40 6n 1B xx Preset effect default Value 24 (0 - 127) 00 40 6n 1C xx Preset effect default Value 25 (0 - 127) 00 40 6n 1D xx Preset effect default Value 26 (0 - 127) 00 40 6n 1E xx Preset effect default Value 27 (0 - 127) 00 40 6n 1F xx Preset effect default Value 28 (0 - 127) 00 40 6n 20 xx Preset effect default Value 29 (0 - 127) 00 40 6n 21 xx Preset effect default Value 30 (0 - 127) 00 40 6n 22 xx Preset effect default Value 31 (0 - 127) 00 40 6n 23 xx Preset effect default Value 32 (0 - 127) 00 40 6n 24 xx Preset effect default Value 33 (0 - 127) 00 40 6n 25 xx Preset effect default Value 34 (0 - 127) 00 40 6n 26 xx Preset effect default Value 35 (0 - 127) 00 40 6n 27 xx Preset effect default Value 36 (0 - 127) 00 40 6n 28 xx Preset effect default Value 37 (0 - 127) 00 40 6n 29 xx Preset effect default Value 38 (0 - 127) 00 40 6n 2A xx Preset effect default Value 39 (0 - 127) 00 40 6n 2B xx Preset effect default Value 40 (0 - 127) 00 40 60 7F 00 Preset effect parameter write --------------------------------------------------------- System Effect 1 0021: Delay 0022: Chorus System Effect 2 0031: Delay 0032: Reverb Full Effects 0011: High Quality Reverb 0012: Mic Simulator 0013: Vocoder 0014: Vocal Multi 0016: Game with 3D Reverb 0300: Rotary Multi (same parameters as insertion #47) 0400: Guitar Multi 1 (same parameters as insertion #48) 0401: Guitar Multi 2 (same parameters as insertion #49) 0402: Guitar Multi 3 (same parameters as insertion #50) 0403: Clean Guitar Multi 1 (same parameters as insertion #51) 0404: Clean Guitar Multi 2 (same parameters as insertion #52) 0405: Bass Multi (same parameters as insertion #53) 0406: Electric Piano Multi (same parameters as insertion #54) 0500: Keyboard Multi ( (same parameters as insertion #55) Insertion Effects 0000: (00) Noise Suppressor 0100: (01) Stereo Equalizer 0101: (02) Spectrum 0102: (03) Enhancer 0103: (04) Humanizer 0110: (05) Overdrive 0111: (06) Distortion 0120: (07) Phaser 0121: (08) Auto Wah 0122: (09) Rotary 0123: (10) Stereo Flanger 0124: (11) Step Flanger 0125: (12) Tremolo 0126: (13) Auto Pan 0130: (14) Compressor 0131: (15) Limiter 0140: (16) Hexa Chorus 0141: (17) Tremolo Chorus 0142: (18) Stereo Chorus 0143: (19) Space D 0144: (20) 3D Chorus 0150: (21) Stereo Delay 0151: (22) Modulation Delay 0152: (23) 3 Tap Delay 0153: (24) 4 Tap Delay 0154: (25) Time Control Delay 0155: (26) Reverb 0156: (27) Gate Reverb 0157: (28) 3D Delay 0160: (29) 2-voice Pitch Shifter 0161: (30) Feedback Pitch Shifter 0170: (31) 3D Auto 0171: (32) 3D Manual 0172: (33) Lo-Fi 1 0173: (34) Lo-Fi 2 0200: (35) Overdrive/Chorus 0201: (36) Overdrive/Flanger 0202: (37) Overdrive/Delay 0203: (38) Distortion/Chorus 0204: (39) Distortion/Flanger 0205: (40) Distortion/Delay 0206: (41) Enhancer/Chorus 0207: (42) Enhancer/Flanger 0208: (43) Enhancer/Delay 0209: (44) Chorus/Delay 020a: (45) Flanger/Delay 020b: (46) Chorus/Flanger 0300: (47) Rotary Multi 0400: (48) Guitar Multi1 0401: (49) Guitar Multi2 0402: (50) Guitar Multi3 0403: (51) Clean Guitar Multi1 0404: (52) Clean Guitar Multi2 0405: (53) Bass Multi 0406: (54) E.Piano Multi 0500: (55) Keyboard Multi 1100: (56) Chorus/Delay 1101: (57) Flanger/Delay 1102: (58) Chorus/Flanger 1103: (59) Overdrive/Distortion1,2 1104: (60) Overdrive/Distortion/Rotary 1105: (61) Overdrive/Distortion/Phaser 1106: (62) Overdrive/Distortion/Auto-wah 1107: (63) Phaser/Rotary 1108: (64) Phaser/Auto-wah