(10 replies, posted in Sega)

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.


(10 replies, posted in Sega)

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!


(10 replies, posted in Sega)

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!


(10 replies, posted in Sega)

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.


(10 replies, posted in Sega)

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


(10 replies, posted in Sega)

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.