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

Re: AppleCrate Synthesizer goes multi-voice...



Simon Williams wrote:
Michael J. Mahon <mjmahon@aol.com> wrote:


After finishing the implementation of multiple voices for
CRATE.SYNTH, I realized that I needed to write some tools
for building sampled voices...

So it took about a week longer than I expected to make
enough "instruments" to play a rendition of In My Life
that I've added to my web site.

It's still pretty rough, with some crude voice substitutions
and some unnecessary distortion in some of the voices, but
it _sure is multi-voice_!


Not bad at all... does each apple have a single voice in memory or are
you doing shuffling them around? I was wondering how it might work
outputting each voice into a seperate mixer channel.

I wished for some "voice-specific" mixers, too, but that isn't
how it works.  Currently, all digital oscillators (boards)are
treated as resources, to be used by any instrument that needs
a voice at the moment.

There are nowhere near enough boards (eight) to allow them to
be dedicated to an instrument (which may often require 3-8
simultaneously sounding notes).

I have a heuristic for allocating oscillators (which I see ways
to improve) and which also allows for "stealing" (I prefer to
use "re-assigning" ;-) oscillators when there are no idle oscillators
left.  The re-assignment heuristic is also a work in progress.

The trick in allocating idle oscillators is to minimize both the
total number of instruments and the number of instrument changes
for each oscillator (to reduce memory load), and when re-assigning
oscillators, similar considerations apply, but with a bias toward
re-assigning oscillators which have already been sounding a while
(so it's note is "trimmed" but not eliminated).

I still haven't got around to implementing "sub-voices" which will
provide three levels of "velocity" or amplitude.  All the support
is in the syntheziser, but a little bit of code needs to be added
to the compiler and some new multi-level instruments need to be
created.

I'm looking at implementing the MIDI "channel volume" control, but
it will be pretty annoying to have to load even three different
volume versions of each percussion voice--maybe there is a tendency
to only use a single volume for these.

A deeper, more systemic problem with varying the amplitude of the
instruments is that the software DAC is only 5 bits.  That means
that if an instrument is played at half-amplitude, it has only
4-bit precision.  ;-(

If I were doing this with hardware DACs, I would, of course, use
8-bits for each digital oscillator and an 8-bit multiplying DAC
for "velocity"...in some other universe.

To paraphrase Johnson, "[An unaided Apple II synthesizing music]
is like a dog's walking on his hind legs.  It is not done well;
but you are surprised to find it done at all."  ;-)

I'm not likely to use the AppleCrate synthesizer to listen to music,
but it has certainly been an instructive project, with surprising
results!

-michael

8-voice music synthesizer using NadaNet networking!
Home page:  http://members.aol.com/MJMahon/