octal-dev
[Top][All Lists]
Advanced

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

Re: info on voice architecture (was re: simple modelling)


From: David O'Toole
Subject: Re: info on voice architecture (was re: simple modelling)
Date: Tue Mar 13 02:33:01 2001

I'll try to give the short answers, I'm about to get to bed :-)

> Will there be any direct representation of channels in the sequencer?  
> What will they look like?  

Yes. In the piano roll sequencer it will be less obvious, you can just
lay out notes. Each note is associated with a channel number (each one
gets its own voice, basically.) In this view you do not have to choose
channel numbers yourself (i.e. you don't have to do voice allocation
manually like in a tracker.) To automate parameters on that channel,
select the note(s) you're automating and then draw your line or curve or
whatever.  You could pretend that a machine is a virtual MIDI device
that treats each voice as a midi channel. 

Why do I want to give channel ID's to notes? Without identifying each
note with some kind of number, we can't specify which note is to be
turned off when you get a note-off event. You could use the note number
itself as the ID, but then you couldn't play the same note twice
simultaneously in the same machine, which will make implementing a
sampler or drum-machine very awkward because the same note number is
often played with different samples. In addition, to be able to control
each voice individually, we need to mentally separate control events
meant for that note from other events. 

Thus we assign a channel number to every event sent to a machine (just
as a Buzz machine can accept events on any of its tracks.) Oh, maybe I
should delete those two paragraphs above and just leave that one
sentence :-/

It should also be possible to send events to all channels at once... for
when you want an automation or fadeout to affect all notes at once. 

> Is a channel a tracker-style track  (a sequence of notes for one voice)?  Is 
> a channel
> an internal bookkeeping device for voices?  

Both. 

> If the last, how does Octal
> know enough to assign them properly

Easy---by keeping track of which voices are currently in use. As for
assigning them, we can just use the first free channel.   

> have a few examples.

yes. I will add this to squaregen in the next cvs snapshot (probably
this weekend.) Also, perhaps you and I should chat on ICQ or IRC and
discuss how you might add the capability to your machine? It would be a
great test-case. 

> > the basic idea is to create an object that captures the concept of
one
> > voice in your machine, and decide how they will work together
(mixing or
> > adding during generation, etc) to create a multi-voice machine.
> This much, at least, sounds good.

To sum up my ramblings: 

1. all events are associated with a channel, sort of like a buzz track
2. each _channel_ is considered to be a monophonic _voice_ (like in
buzz, though there were a couple exceptions)
3. there must be some automatic mechanism to assign new events to
channels/voices (otherwise how would Octal map midi input notes to a
machine?)
4. If you find it convenient to organize your synth with a Voice object
that handles generating one voice and all the parameters for a voice,
then you can use the voice allocation to your advantage. basically keep
the objects in an array, and use the channel number of each event to
select which voice recieves the event.

For effects, of course, there aren't any voices, and so just assume
everything is coming in on channel 0. 

-- 
@@@ david o'toole
@@@ address@hidden
@@@ www.gnu.org/software/octal




reply via email to

[Prev in Thread] Current Thread [Next in Thread]