[linux-audio-dev] XAP: Pitch control

David Olofson david at olofson.net
Wed Dec 11 10:32:00 UTC 2002


On Wednesday 11 December 2002 12.06, Steve Harris wrote:
> On Wed, Dec 11, 2002 at 01:26:01 +0100, David Olofson wrote:
> > You're missing that I'm not talking about 1.0/octave, linear
> > pitch, but <something>/note, *note* pitch. That means
> > <something>/note should *always* apply, and that <something>
> > should be constant. Changing it is totally pointless, since you'd
> > still have note pitch.
> >
> > Changing the "size" of one note is about as silly as changing the
> > "size" of one octave; that's my whole point. (1/12)/note for note
> > pitch *is* just as silly as 12.0/octave for linear pitch.
>
> Well, only if you regard a note as a first class object (I dont).

I do, definitely. It's the *only* logical reference to anything in a 
scale, since you may not even have octaves. (BTW, this applies to the 
the tuning of most grands. Lower octaves are tweaked downwards, while 
higher octaves are tweaked upwards. Not 100% sure why, but I suspect 
it has to do with the overtone spectra for low notes. At least, that 
seems to be why some phatt synth/techno bass sounds don't sound right 
if you play them at the "correct" pitch.)


> (1/12)/note makes more sense because theres /is/ someting very 12ey
> about 12tET notes (the clues in the name ;), whereas there is
> nothing 12ey about octaves. At all.

There is nothing 12ey *at all* about notes if you're into 16t...

So, 1.0/note makes sense, (1/12)/note does *not*. :-)


> > Some plugins think in 1.0/note, and others in 1.0/octave. If you
> > want to connect them, you'll need "something" that expresses
> > 1.0/note as 1.0/octave according to your scale of choice. Just as
> > if you were going to connect a MIDI controller to a CV synth.
>
> Just for the record I do think that having a note representation in
> the API is wrong, but I'm letting it slide. I guess I'l never write
> any code to support it anyway.

I would have agreed with you a while ago, but I think the VST guys 
have a point. Why would you *force* harmonizers, autocomp "machines" 
and the like to think in terms of linear pitch?

I personally think in semitones rather than musical scales when I 
compose and arrange (0-4-7, 0-3-7 etc; tracker arpeggio remember? 
:-), but I would think that classical tone/scale based theory is 
pretty deeply rooted in most musicians/coders. So, I'm afraid the 
general reaction to an API that doesn't understand that concept would 
be something like this:

	"Huh? Not aware of *notes*!? Useless for music!"


Either way, I *do* see advantages in being able to say whether you're 
only interested in actual pitch, or "virtual tones in a scale of the 
user's choice." For example, that avoids having to re-record or edit 
everything just because you decide to change from 12tET to some other 
12t tuning.

And finally, you *can* tell the host that you want 1 note/octave, and 
use 1.0/octave throughout. No special support needed for that. (Well, 
expect that hosts that like to nag about control hint 
incompatibilities would have to be told that 1 note/octave and 
1.0/octave are "compatible enough" for implicit casting.)


//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