rhargreaves / mega-drive-midi-interface

Control the Sega Mega Drive's Yamaha YM2612 and PSG with MIDI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A GNU/Linux alternative for hairless-midiserial: ttymidi (patched by me)

jaffa225 opened this issue · comments

On GNU/Linux (debian) I first had trouble compiling
hairless-midiserial, but after a few tweaks, got it to build. After
that it still didn't see any of my MIDI interfaces to use to bridge
with. Never one to give up, I looked at your code changes to it, and
ported it to a more linux-native simple program: ttymidi. When that
worked, I also decided to add support for standard MIDI 31250 baud
rate (nonstandard serial baud, apparently), which Scott Baker had
modified it for, and my own changes allowing SysEx output (although
not SysEx input), to give my Roland MIDI modules another source from
GNU/Linux. Of course, real USB MIDI is available on GNU/Linux for
them.

Here's the source to share with anyone interested:
ttymidi-mega-drive-midi-interface.tar.bz2

It's a simple program, which "make" will build (with a few compiler
warnings), at least on my systems. It works great for the mega
everdrive pro and your latest prebuilt ROM. Before knowing I'd need
serial conversion, your mega-drive-midi-interface was the best excuse
I had to buy the Mega EverDrive PRO, and now I'm truly enjoying it as
much as I thought I would. Thanks for your great idea and its quality
implementation!

Using the "-m" or "--megaeverdrivepro" option enables your Mega EverDrive PRO-required header.

By the way, are the MIDI instrument patches heard, custom coded by
you, or are the sounds built-in and dictated by an API for the
Genesis/Mega Drive?

Thanks again, it's been fun so far,

Lucas

Hi Lucas,

Thanks for sharing your patched version of ttymidi! I'll give it go at some point. 😁

The MIDI instrument patches are based on Wohlstand's XG bank from libOPNMIDI. They are hardcoded in the build of the ROM. You can of course swap them out at compile-time. At some point I hope to support loading/saving of patches either to the SD card of a Mega Everdrive, or over the USB or serial port connection.

However, compile-time will do for now :)

You can compile in your own presets by using https://github.com/rhargreaves/deflemask-preset-viewer to generate the C code for a patch.

Hope that helps!

You're quite welcome and I hope it is is of use for all other GNU/Linux Sega enthusiasts. I don't mind if you want to offer it as another choice in your wiki, assuming it passes your test. ;)

That's great to hear that the sounds are so customizable, although I am happy with your current XG default. I have mostly Roland (LA & GS) synths, but my one Yamaha XG synth is awesome too. XG (or Yamaha anyway) seems more related to the Genesis/Mega Drive, both of which have roots in FM synthesis. This is making me curious enough to try compiling a GS version, though.

Thanks for the detailed response!

When you try ttymidi, don't forget that its ports are reversed from most ALSA MIDI programs: Its input port is 1, and its output is port 0, although you'll only need to connect its input to your hardware MIDI input (with aconnect or something compatible) or MIDI playing program (such as aplaymidi).

Here's an example for aplaymidi (just type what's within the quotes, but not the quotes themselves):
Having already connected a USB cable from your computer to the mega everdrive pro, you can run "ttymidi -m -s /dev/ttyACM0" in one terminal window/tab. Then from another terminal window/tab it can be simply tested by running "aplaymidi -p 128:1 /$PATH_TO/$FILENAME.mid" ("aconnect -l" will list your MIDI ports if ttymidi isn't running at 128 like mine).

I gave it go and it seems to work pretty well. I've added it as a suggested tool to use in the wiki. Thanks for the suggestion and efforts at making ttymidi compatible with the Mega EverDrive PRO 😁

Thanks! I really appreciate that! Others will be able to find it now too. Also, I applaud your hosting of the source in github too!

I couldn't be more pleased. :) (Well, maybe if Microsoft ends ownership of github someday.)

Lucas