[Coco] Sound Chaser Multi-Format Music Player BETA

Aaron Wolfe aawolfe at gmail.com
Fri Jun 29 11:27:32 EDT 2012

On Fri, Jun 29, 2012 at 11:03 AM, Gene Heskett <gheskett at wdtv.com> wrote:

> With modern polyphonic midi devices (and our sound cards too) capable of 16
> instruments each, it seems that a voice translator to reassign my non-std,
> non-GM music instruments in the GM map would allow us to more accurately
> play the music I moused in with such delight when it all actually worked
> right here in this room nearly 20 years ago, would be a nice facility to
> have.  Hint...

DW4 has the ability to remap MIDI instrument/patch changes on the fly.
  This allows you to playback songs originally entered for a non GM
synth to play back somewhat normally on a modern GM one.  I say
somewhat because of course not all of the sounds possible on some of
the older FM synths have direct equivalents in the GM instrument map.

To choose how instruments are translated, either use the Config, MIDI,
Set Profile option in the UI or use the command:

dw midi synth profile <name>

where <name> is the profile you wish to use.  (use 'dw midi synth show
profiles' to see a list of valid names).  You can switch on the fly
even as a song is playing, which is handy if a song sounds wrong but
you're not sure what synth it was coded for.

Currently you must edit the config.xml to add or change the
translation profiles, but I'll be adding an editor to the UI someday.

Below is an example of a translation profile, this one tries to turn
Casio MT-540 songs into GM.  There are some important fields in the
midisynthprofile statement:

name = the name that you'd use to select this profile
dev_adjust = a value added to the raw MIDI instrument number *before*
gm_adjust = a value added to the MIDI instrument number *after* translation

dev_adjust and gm_adjust are available because the MIDI standard is to
use a 1 based numbering system for instruments, but the MIDI protocol
uses a 0 based value.  So, selecting "Instrument 1" in your MIDI
program or on the MIDI synth will result in a MIDI packet containing
the value 0 for the instrument.  Go figure. If you'd like to edit a
translation table using the same instrument numbers that your software
or synth use (probably wise) then set dev_adjust to 1 and gm_adjust to

Inside the midisynthprofile section you specify one or more mapping
statements which simply map the values sent to DW (dev) to the value
you'd like DW to send to your synth (gm).   To select GM instrument 6
when the song selects instrument 1, you'd use:

<mapping dev="1" gm="6"/>

Hope that makes sense, I'll add most of this message into the wiki at
some point.

Here is the example profile:

<midisynthprofile category="midi" desc="Casio MT-540" dev_adjust="1"
gm_adjust="-1" name="mt540">
		<mapping dev="0" gm="0"/>
		<mapping dev="1" gm="6"/>
		<mapping dev="2" gm="11"/>
		<mapping dev="3" gm="18"/>
		<mapping dev="4" gm="19"/>
		<mapping dev="5" gm="62"/>
		<mapping dev="6" gm="48"/>
		<mapping dev="7" gm="73"/>
		<mapping dev="8" gm="54"/>
		<mapping dev="9" gm="26"/>
		<mapping dev="10" gm="14"/>
		<mapping dev="11" gm="7"/>
		<mapping dev="12" gm="50"/>
		<mapping dev="13" gm="117"/>
		<mapping dev="14" gm="4"/>
		<mapping dev="15" gm="20"/>
		<mapping dev="16" gm="21"/>
		<mapping dev="17" gm="36"/>
		<mapping dev="18" gm="119"/>
		<mapping dev="19" gm="123"/>
		<mapping dev="20" gm="3"/>
		<mapping dev="21" gm="12"/>
		<mapping dev="22" gm="68"/>
		<mapping dev="23" gm="92"/>
		<mapping dev="24" gm="46"/>
		<mapping dev="25" gm="89"/>
		<mapping dev="26" gm="94"/>
		<mapping dev="27" gm="93"/>
		<mapping dev="28" gm="88"/>
		<mapping dev="29" gm="95"/>

More information about the Coco mailing list