[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Mockingboard



BLuRry wrote:
It works that way because it's a stream of data, but the note-on and
note-off stuff could cause problems because each channel can have
multiple note-on commands at once.  You could do a quick proof of
concept by saying that Osc A = Channel 1, Osc B = Channel 2 and Osc 3 =
Channel 3.  That way you can do an easy mapping.  However, if you
wanted to support midi more fully, you have to have a round-robin
approach to mapping an oscillator to a note.  Even more fun, when you
receive the corresponding note-off, you have to hunt down the
oscillator that is assigned to that note and then shut it off (unless
another note-on event overtook that oscillator, in which case you
ignore the note off command)

Many channels will correspond to polyphonic instruments, like keyboard
instruments or guitars, which can sound multiple notes simultaneously.
Therefore some intelligent allocation is required, not a simple mapping.

I think it's totally do-able, but unless you're going to make the apple
//e a realtime midi-capable instrument (could be fun!) it might make
more sense to do a quick conversion from MIDI-to-AY to make the note
data more quickly interpreted at runtime.

And for development and debugging purposes, if no other, I suggest
that doing a real-time player is the right first effort.  Splitting
it into an off-line MIDI converter and a real-time player is then
a trivial process after it's working to your satisfaction.

-michael

Music synthesis for 8-bit Apple II's!
Home page:  http://members.aol.com/MJMahon/

"The wastebasket is our most important design
tool--and it is seriously underused."