Re: [linux-audio-dev] Catching up with XAP

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] Catching up with XAP
From: David Olofson (david_AT_olofson.net)
Date: Wed Jan 15 2003 - 20:33:26 EET


On Wednesday 15 January 2003 18.10, Steve Harris wrote:
> On Wed, Jan 15, 2003 at 03:43:52 +0100, David Olofson wrote:
> > Another observation:
> >
> > There are two ways you could start notes on a monophonic synth:
> > 1. Use the same VVID for all notes
> > 2. Use a new VVID for each note.
>
> I dont think that a (typical) monosynth should have or use VVIDs at
> all.

No, and it doesn't have to. It can still respond to VVID allocation
events by just assuming they're about this single, physically
non-existent, fake VVID. All you need to know is when the sender
wants you to start a new context, and that's what the VVID allocation
event tells you.

> However I do now see your paino example, if we can implement this
> cleanly its a natural way for the gong example to work too.

Can't see any real issues with it so far. You basically just have
each voice of a poly synth act as a mono synth.

The closest thing to an issue is that you need to implement *some*
form of "continue" feature for the synth to do something sensible
when a sender uses this feature. This could actually just be a
recommendation to synth authours, but I think it should be easy
enough to do something sensible in practically any synth.

The nice way for a sampler or similar to handle it would be to set
the current voice to a quick declick release, while grabbing a new
voice for the new note. The old voice will be released as soon
as the declick envelope has finished. Obviously, you can implement
that as part of each voice or something like that as well. Point is
that reusing a VVID effectively makes the context steal it's own
voice. *How* this is done is an implementation issue - but "nice"
voice stealing is something every serious synth must have anyway.
(This even goes for some kinds of mono synths.)

If you're *real* lazy, you can just treat new notes while the voice
is playing by restarting the envelopes. Given that you handle pitch
in the usual way (ie as continous pitch - like MIDI pitch + pitch
bend, basically), you get primitive legato when reusing VVIDs. Pretty
much a free bonus feature.

A virtual analog synth would just retrig envelopes and stuff, but
(depending on the patch) perhaps not reset the oscillator phase.
(Rather similar to the "free legato", that is.) Entirely
implementation and patch dependent, though - this is just an example.

Glisando and similar pitch effects would be handled in similar ways.

The common logic here is that the current state of the context
effectively becomes parameters for the new note - and this applies to
both mono and poly synths.

//David Olofson - Programmer, Composer, Open Source Advocate

.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
   --- http://olofson.net --- http://www.reologica.se ---


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Wed Jan 15 2003 - 20:35:57 EET