> I respectfully disagree.
>
> A _historical_ context on how two, different, legacy systems both "play music" is indeed:
>
> a) a comparison, and
> b) relevant.
Well, as I tried to express, MIDI doesn't "play music" at all. It is simply
directs a "musical instrument" to play music.
The Mockingboard is one (rather limited) example of a "musical instrument"
that MIDI, either in real time or recorded in a file, can "play", given an
appropriate MIDI interpreter or converter.
You wouldn't compare sheet music to a trumpet, but MIDI is "sheet music"
and a Mockingboard is like (three to six) trumpets.
> A new user won't understand _WHY_ the MIDI to Mockingboard converter even
> exists in the first place. A short blurb:
>
> a) To let them know that the Mockingboard **pre-dates** General MIDI, let
> alone MIDI, provides the a context to answer the question.
>
> b) Which question? Namely, the problem was: How does Apple 2
> software/hardware play music? The Apple 2 Mockingboard was a proprietary,
> short-lived solution, due to design limitations. Since the Apple 2 can't
> natively play back MIDI files the data needs to be transcoded into a
> format that _can_ be played back by hardware that existed at the time --
> specifically the Mockingboard which provides crude polyphony music.
>
> Providing a quick summary introduction is valuable for those that aren't
> aware of the history, the context, the problem, and solutions.
I agree that some background is indeed useful, but putting things in the
proper perspective is an important part of that.
Recorded MIDI files are a great source of machine readable "sheet music"
for virtually any musical application, particularly polyphonic ones. That's
why I wrote CVT.MIDI--to provide a ready source of polyphonic music for the
AppleCrate 16-voice synthesizer. Because of the wide range of music
available in MIDI format, I recommend it for such purposes.
>> The "notes" for a Mockingboard are not frequencies,not frequencies, but
>> times, specified as 16-bit counter values for the particular clock
>> frequency driving the sound generator chip(s) in a system --
>
> 16-bit counter pedantry aside, at the end of the day that's what they are
> since Frequency is loosely equivalent to Time, but point taken.
Sorry it came across that way, but both the 16-bit precision of the
half-period time and the fact that it's a time, not a frequency, is *very*
relevant.
If frequencies could be specified to 1Hz precision, the Mockingboard could
provide excellent note accuracy. But since half period times are specified,
the counts are small for higher octaves, and the frequency resolution is
quite poor. This results in the Mockingboard being annoyingly out of tune
above the middle octaves, though the low octaves are accurate. (The usual
speaker tone routines for the Apple II suffer from the same problem.)
Unfortunately, the human ear is relatively insensitive to low frequency
inaccuracy, but very sensitive to mid-to-high frequency inaccuracy, so
specifying frequencies by half-period timing with a relatively low clock
frequency (to allow 16 bits to specify low frequencies) results in a pretty
limited "musical instrument", though it's accurate enough in the middle
octaves where it matters most.
>> and therefore completely specific not only to the chip, but to the
>> system in which it is used.
>
> Right, that's one of the limitations.
>
>> Comparing MIDI to the Mockingboard is like comparing the alphabet to a pencil! ;-)
>
> The analogy isn't _that_ bad, since both DO produce polyphony music, but
> yeah, that's not a bad succinct summary.
In hindsight I prefer the sheet music to musical instrument analogy. ;-)
I also think that the ready availability of an IRQ-driven polyphonic
Mockingboard player for the Apple II, plus a fair amount of MCS music,
makes a strong case for converting MIDI or whatever to the MCS music
format, with percussion extensions, if desired.
In any event, have fun making music with the Apple II--it's capable of
great things! The Mountain Computer Music System is a fine example of what
can be done with hardware extensions, and RT.SYNTH and DMS.DRUMMER are good
examples of what can be done with just the native hardware.