USBUA100 Installation and Operation

Author: Michael Minn <michael@michaelminn.com>

June 23, 2001


Describes installation and operation of USBUA100, a Linux kernel module device driver and console program for the Roland UA-100 USB MIDI/Audio desktop music production device. USBUA100 also supports MIDI input/output for the Roland UM-1 USB MIDI adapter and the Roland SC-8850 MIDI Sound Module.

1. Introduction

2. Capabilities, Deficiencies and Version History

3. Installation

4. Using the USBUA100 Device Files

4.1 Dynamic Name Assignment
4.2 /dev/midi
4.3 /dev/dsp

5. Included Programs

5.1 usbua100mix
5.2 usbua100sysex
5.3 lsndlist
5.4 lsndplaymidi

6. UA-100 System Exclusive MIDI Messages


1. Introduction

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.


2. Capabilities, Deficiencies and Version History

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.

Version 2001.06.24

Initial public release


3. Installation

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.


4. Using the USBUA100 Device Files

4.1Dynamic Name Assignment

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.

4.2/dev/midi

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.

4.3/dev/dsp

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.


5. Included Programs

5.1 usbua100mix

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.

5.2 usbua100sysex

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%)

5.3 lsndlist

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.

5.4 lsndplaymidi

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.


6. UA-100 System Exclusive MIDI Messages

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