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