[linux-audio-dev] XAP: Pitch control

David Olofson david at olofson.net
Tue Dec 10 15:28:01 UTC 2002


On Tuesday 10 December 2002 13.15, Steve Harris wrote:
[...]
> > > If you just represent pitch, then I can create a virtual
> > > instrument (connected to a physical one if neccesary) that can
> > > create the right pitches for the scale (or be analogue).
> >
> > I *am* suggesting to represent pitch; just that it is expressed
> > as 12.0/octave instead of 1.0/octave, to eliminate all
> > conversions in 12tET systems.
>
> But it doesn't, it increases thee number of conversions. There are
> more times when you care about octaves than where you care about
> making the 12tET note number to pitch mapping *very slightly*
> easier.
>
> If you allow host writers to assume that note->pitch mapping is as
> easy as casting then they will! Therefore, no interesting scale
> support, you may as well have dropped all pretense at supporting
> pure pitch.

You're missing the point with the "cast is conversion" hack. A host 
writer *cannot* prevent other scales from being used, unless they 
specifically refuse to load plugins that happen to do scale 
conversion.


> > > I think this is better for unusual tunings, and it doesnt hurt
> > > the 12tET case.
> >
> > It *does* hurt the 12tET case, at least unless you're suggesting
> > that sequencers should always store 1.0/octave...?
>
> I thought sequencers were going to send note numbers?

Sequencers are going to store pitch in the form of floats. The 
argument is about whether these should be in 1.0/note or (1/12)/note 
format. (And this has nothing to do with scales or notes/octave; it's 
<something>/note, period.)


> > Well, that's exactly why I want to avoid it entirely, by working
> > in 1.0/tone until I actually *need* pitch. If you do 1.0/octave
> > everywhere, the tone/scale logic is lost. As long as you're doing
> > 12tET, it might not matter, but when you start using other
> > scales, it may quickly become both expensive and innacurate.
>
> The tone/scale magic is hardly ever useful though, it it forces
> everyone else to work around a factor of 12.

Or forces a few (or so we seem to thing) to work around a factor of 
1/12...

Either way, this is the situation: We have to pick *two* out of three 
good things:

	1. 1.0/octave
	2. 1.0/note
	3. No conversions for 12tET.

I think I would pick 1 + 2, and accept that conversion is required 
whenever you want to drive 1.0/octave from 1.0/note, but you rejected 
that. I rejected the alternative of using special host callbacks to 
deal with these conversions. You also rejected 2 + 3, since that 
results in 12.0/octave. I rejected 1 + 3, since it results in 
(1/12)/octave.

So, are there any more alternatives?


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