I recently added a cartridge to MAME that emulated a MIDI port for the Color Computer. This post is about how to use the feature with the command line version of MAME.

First you’ll need to setup your host computer’s MIDI functionality. On macOS you use a program called Audio MIDI Setup in the Utilities folder. I do not know how to setup MIDI on a Windows or Linux computer.

After setting up the host interface you will want to start MAME and have it list the MIDI interfaces it can find:
tlindner$ ./mame -listmidi MIDI input ports: IAC Driver Bus 1 (default) MIDI output ports: IAC Driver Bus 1 (default)
Next, let’s attach a Multi-Pak to the CoCo emulation’s expansion port and list the devices we can attach to each slot.
tlindner$ ./mame coco2b -ext multi -listslots
SYSTEM SLOT NAME SLOT OPTIONS SLOT DEVICE NAME
---------------- ---------------- ---------------- ----------------------------
coco2b rs232 dec_loopback RS232 Loopback (DEC 12-15336-00)
ie15 IE15 Terminal
keyboard Serial Keyboard
loopback RS232 Loopback
null_modem RS232 Null Modem
printer Serial Printer
pty Pseudo terminal
rs_printer Radio Shack Serial Printer
sunkbd Sun Keyboard Adaptor
swtpc8212 SWTPC8212 Terminal
terminal Serial Terminal
ext cc2hdb1 CoCo2 HDB-DOS
cc3hdb1 CoCo3 HDB-DOS
ccpsg CoCo PSG
cd6809_fdc Codimex CD-6809 Disk BASIC (1986)
cp450_fdc Prológica CP-450 BASIC Disco V. 1.0 (1984)
dcmodem CoCo Direct Connect Modem PAK
fdc CoCo FDC
fdcv11 CoCo FDC v1.1
games_master CoCo Games Master Cartridge
midi CoCo MIDI PAK
multi CoCo Multi-Pak Interface
orch90 CoCo Orch-90 PAK
ram Disto 1024K RAM Cartridge
rs232 CoCo Deluxe RS-232 PAK
ssc CoCo S/SC PAK
stecomp Speech Systems Stereo Composer
sym12 Speech Systems Symphony Twelve
ext:multi:slot1 ccpsg CoCo PSG
dcmodem CoCo Direct Connect Modem PAK
games_master CoCo Games Master Cartridge
midi CoCo MIDI PAK
orch90 CoCo Orch-90 PAK
ram Disto 1024K RAM Cartridge
rs232 CoCo Deluxe RS-232 PAK
ssc CoCo S/SC PAK
stecomp Speech Systems Stereo Composer
sym12 Speech Systems Symphony Twelve
ext:multi:slot2 ccpsg CoCo PSG
dcmodem CoCo Direct Connect Modem PAK
games_master CoCo Games Master Cartridge
midi CoCo MIDI PAK
orch90 CoCo Orch-90 PAK
ram Disto 1024K RAM Cartridge
rs232 CoCo Deluxe RS-232 PAK
ssc CoCo S/SC PAK
stecomp Speech Systems Stereo Composer
sym12 Speech Systems Symphony Twelve
ext:multi:slot3 ccpsg CoCo PSG
dcmodem CoCo Direct Connect Modem PAK
games_master CoCo Games Master Cartridge
midi CoCo MIDI PAK
orch90 CoCo Orch-90 PAK
ram Disto 1024K RAM Cartridge
rs232 CoCo Deluxe RS-232 PAK
ssc CoCo S/SC PAK
stecomp Speech Systems Stereo Composer
sym12 Speech Systems Symphony Twelve
ext:multi:slot4 cc2hdb1 CoCo2 HDB-DOS
cc3hdb1 CoCo3 HDB-DOS
ccpsg CoCo PSG
cd6809_fdc Codimex CD-6809 Disk BASIC (1986)
cp450_fdc Prológica CP-450 BASIC Disco V. 1.0 (1984)
dcmodem CoCo Direct Connect Modem PAK
fdc CoCo FDC
fdcv11 CoCo FDC v1.1
games_master CoCo Games Master Cartridge
midi CoCo MIDI PAK
orch90 CoCo Orch-90 PAK
ram Disto 1024K RAM Cartridge
rs232 CoCo Deluxe RS-232 PAK
ssc CoCo S/SC PAK
stecomp Speech Systems Stereo Composer
sym12 Speech Systems Symphony Twelve
ext:multi:slot4:fdcv11:wd17xx:0 qd 5.25" quad density floppy drive
ext:multi:slot4:fdcv11:wd17xx:1 qd 5.25" quad density floppy drive
ext:multi:slot4:fdcv11:wd17xx:2 qd 5.25" quad density floppy drive
ext:multi:slot4:fdcv11:wd17xx:3 qd 5.25" quad density floppy drive
There is a lot to take in, but what we’re interested in is that slot ‘ext:multi:slot3″ has an option of midi. To start an emulation with a MIDI cart in that slot you type:
./mame coco2b -ext multi -ext:multi:slot3 midi
Don’t worry there is no floppy disk cartridge specified, it is the default for slot 4.
Next we need to connect the host’s MIDI interface to MAME. Refer back the the start of this tutorial and recall the names of the available midi interfaces.
The host-to-emulation MIDI connection is made using a medial type. Issue this command to see the available media types:
tlindner$ ./mame coco2b -ext multi -ext:multi:slot3 midi -listmedia
SYSTEM MEDIA NAME (brief) IMAGE FILE EXTENSIONS SUPPORTED
---------------- --------------------------- -------------------------------
coco2b cassette (cass) .wav .cas
printout (prin) .prn
cartridge1 (cart1) .ccc .rom
cartridge2 (cart2) .ccc .rom
cartridge3 (cart3) .ccc .rom
cartridge4 (cart4) .ccc .rom
midiin (min) .mid
midiout1 (mout1) .mid
midiout2 (mout2) .mid
cartridge5 (cart5) .ccc .rom
floppydisk1 (flop1) .dmk .jvc .dsk .vdk .sdf .os9 .d77 .d88 .1dd .dfi .hfe .imd .ipf .mfi .mfm .td0 .cqm .cqi
floppydisk2 (flop2) .dmk .jvc .dsk .vdk .sdf .os9 .d77 .d88 .1dd .dfi .hfe .imd .ipf .mfi .mfm .td0 .cqm .cqi
harddisk1 (hard1) .vhd
harddisk2 (hard2) .vhd
Note the avaiablilty of midiin, midiout1, and midiout2. Midiin is the media type used to send information to the CoCo. Midiout1 is the MIDI THRU port that automatically sends any incoming data out. Midiout2 is the regular MIDI OUT that is under software control in the emulation.
This is an example of sending MIDI input into the CoCo emulation:
tlindner$ ./mame coco2b -ext multi -ext:multi:slot3 midi -midiin "IAC Driver Bus 1"
Using CoCo software to do something with all this is left as an excessive to the reader.