[linux-audio-dev] XAP: Pitch control

Nathaniel Virgo nathaniel.virgo at ntlworld.com
Wed Dec 11 12:12:00 UTC 2002


On Wednesday 11 December 2002 4:29 pm, David Olofson wrote:
> On Wednesday 11 December 2002 13.59, David Gerard Matthews wrote:
> > Steve Harris wrote:
> > >On Wed, Dec 11, 2002 at 12:40:18 +0000, Nathaniel Virgo wrote:
> > >>I can't really say I can think of a better way though.
> > >> Personally I'd leave scales out of the API and let the host deal
> > >> with it, sticking to 1.0/octave throughout, but I can see the
> > >> advantages of this as well.
> > >
> > >We could put it to a vote ;)
> > >
> > >- Steve
> >
> > I vote 1.0/octave.
>
> So do I, definitely.
>
> There has never been an argument about <something>/octave, and there
> no longer is an argument about 1.0/octave.
>
> The "argument" is about whether or not we should have a scale related
> pitch control type *as well*. It's really more of a hint than an
> actual data type, as you could just assume "1tET" and use both as
> 1.0/octave.

I don't think that should be permitted.  I think that this case should be 
handled by a trivial scale converter that does nothing.  No synth should be 
allowed to take a note_pitch input, and nothing except a scale converter 
should be allowed to assume any particular meaning for a note_pitch input.  
If you have an algorithm that needs to know something about the actual pitch 
rather than position on a scale then it should operate on linear_pitch 
instead.  I think that in this scheme note_pitch and linear_pitch are two 
completely different things and shouldn't be interchangeable.  That way you 
can enforce the correct order of operations:

	Sequencer
	    |
	    | note_pitch signal
	    |
	    V
	scaled pitch bend (eg +/- 2 tones) / 
	arpeggiator / shift along scale /
	other scale-related effects
	    |
	    | note_pitch signal
	    | 
	    V
	scale converter (could be trivial)
	    | 
	    | linear_pitch signal
	    |
	    V
	portamento / vibrato / 
	relative-pitch arpeggiator / 
	interval-preserving transpose /
	other frequency-related effects
	    |
	    | linear_pitch signal
	    |
 	    V
	  synth

That way anyone who doesn't want to worry about notes and scales can just 
always work in linear_pitch and know they'll never see anything else.

> The need for 1.0/note or similar arrise when you want to work with
> something like 12t without deciding on the exact tuning, and also
> when you want to write "simple" event processor plugins that think it
> terms of notes rather than actual pitch.
>
>
> //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 -'
> .- M A I A -------------------------------------------------.
>
> |    The Multimedia Application Integration Architecture    |
>
> `----------------------------> http://www.linuxdj.com/maia -'
>    --- http://olofson.net --- http://www.reologica.se ---



More information about the Linux-audio-dev mailing list