Offline

Hi all,

I've developed an MIDI Interface for the Mega Drive, similar to GenMDM, but the code is open-source. Whilst it currently (mostly) supports the same GenMDM CC's to configure FM parameters, the focus (at least at the moment) is on increased MIDI compatibility, including some General MIDI support in the form of FM presets (instruments and percussion) and common MIDI 1.0 CCs. I also want to add other functionality such as PCM support in the future. I also want to implement some form of MIDI channel pooling to allow for dynamic MIDI channel routing to better support polyphony and the full range of MIDI channels.

Connectivity currently requires use of the Mega Everdrive X7 cartridge's USB port and a PC that can route MIDI events via some sort of serial-to-MIDI connector application (such as Hairless MIDI). I'd like to support the GenMDM "connector port" hardware too at some point but I'm unsure on the method I should read the signals from the controller port to interpret the MIDI is as AFAIK this part is closed-source (maybe someone knows how it is implemented?)

GitHub - Mega Drive MIDI Interface

Would be great to know what people think of it and get feedback on how it could be improved. Let me know if you have any questions / ideas.

Offline
Sea of Souls

All of your ideas sound great. Except for the requirement of the Everdrive.
There are a few options such as port 2 and port 3 and since not all Sega's have a port 3, go with port 2.
Read this:
https://digital.library.adelaide.edu.au … 11_PhD.pdf

Offline

Ah ha! I shall give that a read and see how compatible it is. Thanks!

Last edited by kiyouta (Oct 26, 2019 8:26 pm)

Offline

Seems like the GenMDM interface interprets the MIDI messages on the hardware itself and sends register address & data values to the controller ports, rather than passing the raw MIDI messages to the Mega Drive and have the ROM interpret the messages. Conceptually that's the major difference between the two approaches.

The GenMDM hardware might still be able to be used - but I'd need to write my own firmware for it that passes the MIDI messages through untouched over the controller port. Or alternatively, make my own cable. Not sure if the newer GenMDM interfaces sold by Catskull electronics allow the firmware to be upgraded.

Last edited by kiyouta (Oct 26, 2019 9:46 pm)

Offline
Sea of Souls

As you know, Little-Scale's firmware is closed, but Catskull's boards can be updated via the ICSP pins that I broke out on the bottom and potentially via the on-board USB connector. I'll ask Cats if he programs them with the USB or ICSP connector.

EDIT: He said you have to use the ICSP connector on the back because it doesn't have a bootloader.

Last edited by Orgia Mode (Oct 27, 2019 5:23 am)

Online
NUMBSKULL

You'd be way way better off with new hardware if all you need to do is convert din midi to the controller port. It would be way cheaper too!

Offline

Thanks guys! Seems like I could get something working with a basic USB FTDI breakout cable, making use of the serial mode of the controller port. That however will only get me a maximum transfer rate of 4800 bps. That might be sufficient for most use cases.

The GenMDM makes use of the parallel mode of the controller port. I suspect this is quicker as it can write 4-bits at a time, rather than one-by-one. However, this would be more complex and require dedicated hardware to accomplish. I think I'll have a go with the serial mode first as it's easier to get started and see I can see how it performs with some realistic use. Nothing wrong with supporting multiple I/O methods anyway!

Last edited by kiyouta (Oct 27, 2019 9:38 am)

Offline
Milwaukee, WI

You had me at FM presets. GenMDM is great, but sending a lengthy string CCs before a patch change is hardly ideal. Would your concept mitigate this?

Offline

So at present the General MIDI presets are baked into the ROM. They can be swapped out at compile time of course, but that's not that flexible. I know GenMDM supports storing preset settings for a specific channel into RAM which can then be restored back to that channel at a later time. But this doesn't easily allow you to create a bank of presets by itself. You'd need to something like the Max for Live plugins that little-scale made to assist with that.

I was considering adding the ability to save/load presets the General MIDI presets stored in the ROM, allowing them to be overridden on-the-fly and stored in RAM. I was also thinking of adding some functionality to "dump" out the presets in the ROM to another device (such as PC, or even the SD card on the Mega Everdrive X7). Just ideas at the moment though!

Offline
Sea of Souls

Does the Everdrive support serial eeprom as memory yet?

Offline

Not sure. I know it supports making the ROM memory space magically writable which I guess gives you some memory providing you don't  accidentally tread on your program. You can also write to "SRAM", and I believe this persists back to the SD Card. There's also an API to write directly to the SD Card as a block device which might be useful to read/write instrument presents as part of the file system.