alinebee / Boxer

The DOS game emulator that's fit for your Mac.
http://boxerapp.com/
773 stars 139 forks source link

Feature request: line-in support #5

Open mratzloff opened 12 years ago

mratzloff commented 12 years ago

Hi Alun! Since you're doing so much with Roland devices lately, I've got an idea for an improvement.

I have several physical Roland devices (MT-32, CM-32L, SC-55mkII) and in order to use them I of course plug the analog cable into my audio input port and then use a utility called LineIn (http://rogueamoeba.com/freebies/). It's a great utility, but I always forget to start it when I play a MIDI game and so there's inevitably this ritual of me checking cables and making sure everything is arranged properly before I remember: start LineIn, you dope.

I figure since you're familiar with Core Audio and the MT-32 and General MIDI specs now (SC-55mkII is primarily a General MIDI device) it could be possible to automatically detect MIDI input and pipe it in.

Or maybe you're already doing this and something's not configured correctly on my end?

Either way, thanks for your fantastic continued work on Boxer! This is easily my favorite open source project.

alinebee commented 12 years ago

Boxer does try to autodetect when you have an MT-32 or CM-32L connected to your Mac, and will pipe MT-32 music to it automatically (but not General MIDI, because that would sound wrong through an MT-32.)

The detection basically 'pings' the device with an MT-32 specific sysex message and waits for a response: this requires that both midi-in and midi-out cables are connected to the device (so that the device can send its response back to Boxer). The detection is prone to interference from poor cables and 3rd-party MIDI-routing apps, and isn't 100% reliable at the best of times.

There's no detection yet for General MIDI synths like the SC-55, because it's a much broader target to hit and I've no idea yet how to limit the scope so that Boxer will only choose actual MIDI synths, and not glom on to some inappropriate MIDI device. Implementing such detection hasn't been a priority, because OS X already has a great General MIDI synth built-in.

At the point when I add a per-game mixer panel to Boxer, I'll also add a dropdown to choose the MIDI device to send to. The options will be populated from the connected MIDI devices of course, but as the final decision then rests in the hands of the user, it will remove the need for complex guesswork on Boxer's part (as well as making up for any lapses in Boxer's MT-32 detection.)

mratzloff commented 12 years ago

At the point when I add a per-game mixer panel to Boxer, I'll also add a dropdown to choose the MIDI device to send to. The options will be populated from the connected MIDI devices of course, but as the final decision then rests in the hands of the user, it will remove the need for complex guesswork on Boxer's part (as well as making up for any lapses in Boxer's MT-32 detection.)

Thanks for the in-depth explanation! That's perfect--I almost prefer manually selecting it anyway.