Don't base anything on 7-bit MIDI, it's too low-fi for a modern system, plus
it's keyboard-centric (i.e the concept of each note 'stuck' at a single
pitch is too restrictive). Plus it's being replaced by hi-def MIDI.
My suggestions:
* Use at least 32-bit floating point to represent pitch to give high
accuracy.
* Base pitches internally on octaves. E.g. 440Hz = 'octave 0.0', 880Hz =
'octave 1.0' etc. An octave is a fundamental unit of pitch which is not
biased to any particular tuning system.
Don't use plain frequency in Hertz, Hz are very un-musical because they do
not scale the same way as our ear perceives pitch.
* Separate the concept of 'key number' and 'pitch' (MIDI seems to confuse
people on this point). A key-number is NOT pitch and vice versa. This is so
you can...
* Support two 'keys' playing the same pitch, this is critical for stringed
instruments like guitars.
* Support 'bending' pitch on each note independently.
* Support the concept of re-triggering a voice that's already playing, this
is important for any percussive instrument. E.g. hitting a cymbal twice in
quick succession should not trigger the sound of two cymbals playing
together.
Best Regards,
Jeff
SynthEdit