[linux-audio-dev] more on XAP Virtual Voice ID system

Steve Harris S.W.Harris at ecs.soton.ac.uk
Tue Jan 7 04:26:01 UTC 2003


On Tue, Jan 07, 2003 at 03:21:22 +0100, David Olofson wrote:
> > > Problem is step 1. If the voice allocator looks at velocity, it
> > > won't work, since that information is not available when you do
> > > the allocation. Likewise for setting up waveforms with velocity
> > > maps and the like.

But in the general case this is just mapping to parameters, you have to be
able to handle parameter changes during the run of the instrument, so why
not at creation time too?

for samples
   if (event)
      if (event == new_voice)
         voice = allocate_voice()
      if (event == velocity)
         voice.set_voice_map(event)
   out = voice.run()

> > > When are you supposed to do that sort of stuff? VOICE_ON is what
> > > triggers it in a normal synth, but with this scheme, you have to
> > > wait for some vaguely defined "all parameters available" point.
> >
> > So maybe VOICE creation needs to be a three-step process.
> > * Allocate voice
> > * Set initial voice-controls
> > * Voice on

I think this is harder to handle.

> >  This is essentially saying that initial parameters are
> > 'special', and they are in many-ways (I'm sure velocity maps are
> > just one case).
> 
> Yes; there can be a whole lot of such parameters for percussion 
> instruments, for example. (Drums, cymbals, marimba etc...)

I still dont think there special. Velicty maps only behave this way in
midi because you cant change velovity during the note in midi, you still
need to be able to call up the map instantly, so it doesn't matter if you
dont know the map at the point the note is 'created'.
 
> > Or we can make the rule that you do not choose an entry in a
> > velocity map until you start PROCESSING a voice, not when you
> > create it.  VOICE_ON is a placeholder.  The plugin should see that
> > a voice is on that has no velocity-map entry and deal with it whn
> > processing starts.  Maybe not.
> 
> No, I think that's just moving the problem deeper into synth 
> implementations.

Why? You can create it with the map for velocity=0.0 or whatever, and
change it if needed. This seems like it will lead to cleaner instrument
code.

- Steve



More information about the Linux-audio-dev mailing list