On Monday 09 December 2002 15.59, Steve Harris wrote:
On Mon, Dec 09, 2002 at 02:48:10PM +0100, David
Olofson wrote:
For an
apregiate in 12 tne you just add 1/12 per semitone, not
1.0, I dont think thats hard.
Well, yes - but did you get the actual point; that linear pitch
may not be all that useful to plugins that don't care about the
details of your scales?
OK, I think I must be missing something.
I dont see how a plugin can usfully process and note information
without any explicit knowledge of the scale (execpt for some
trivial cases, eg. octave shift, 5ths), but those can be handled in
linear pitch too.
You can do a lot more than that even with just integer MIDI pitch, at
least if you assume that the scale in use is *somewhat* similar to
12tET. Even if some notes in the scale deviate a bit from the pitch
they have in the 12tET scale, basic 12 tone theory still applies -
and that's what the vast majority of harmonizers, autocomp units and
whatnot are based on.
So, why force these plugins to look at the scale in use, convert
linear pitch into note pitch, process that, and then look at the
scale and convert note pitch back into linear pitch for proper
playback? They *could*, but IMHO, it should be optional, since it
should be easy enough to have separate converter plugins for this.
I guess you can do something if its an equal tepmered
scale, and
you dont know the note/octave division, but isn't that an unusual
case?
Yes, probably. That would be 16 tone scales and that kind of stuff -
but even then, the *actual* problem is still there: You cannot know
for sure what linear pitch values mean in terms of tones in the
current scale, unless you have a description of that scale at hand.
If the linear pitch of a note is more than 50 cents off from the
corresponding tone in the corresponding ET scale, you get the wrong
note.
Granted if you have some way of expressing scale
information then
note data makes things easier, but we dont (AFAIK). It sounds like
a hard problem.
That's why simple plugins should not be forced to worry about it.
As to scale information, that's basically something that's built into
sequencers, scale converters and that kind of plugins. The
implementation may be the definition, or the implementation might
convert according to a scale definition loaded from a file of some
(non-)standard format.
However, it doesn't matter. If you deal only with 12tET, all you need
is that multiplication or division by (1.0/12.0), if even that.
(Linear pitch is still just linear pitch, and most synths should
probably just use that.)
Synths could chose not to have note_pitch controls at all (host or
user throws in a suitable converter), to have note_pitch and built-in
12tET conversion (or more advanced converters) or to have *only*
note_pitch and some kind of note->pitch conversion. Anything will
work, and should be easy enough to deal with.
If you allow note data then you still have to provide
some
mechanism/information for oscialtors to convert this back to a
frequency, and doesnt this nullify the point?
No, because a synth is not *required* to have note_pitch inputs. It's
considered an integrated bonus feature, if found on a synth. *If* a
synth has note_pitch input, the synth could be seen as having builtin
scale converters - which is something you might just as well plug in
in between the synth and the event source. (Which would allow you to
have different senders playing the same channel of the same synth
with different scales, BTW. :-)
Same thing applies to sequencers. Normally, you'd probably want a
sequencer to "think" in terms of note_pitch, so you can tweak scales
without destructively (and potentially irreversibly) modifying the
database. However, since you'll normally connect a sequencer directly
to a synth (and synths usually want linear_pitch), it might make
sense to throw in a scale converter on each output channel. (Or a
single global one, or whatever.) But that'd also be a bonus feature,
since you might as well output *only* note_pitch, and then just throw
in your favourite scale converter/generator plugin whenever you want
or need to give some synth linear_pitch rather than note_pith.
//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 ---