Forum unknown
· Audiophile
#AMIGA-MUSIC
25 messages in this thread
Richard:
The technique used to create multitimbreal waves from the Amiga's sound
channels are not dependant on the processor. The technique involves ANDing
waves.
Instant Music does not provide mutiltimbreal waves, although this is what I
had guessed at first. When using double stops and triads, IM waits for a
hole in another voice and swaps wave arrays on the fly. That is, at no
time are there more than four voices playing at once; it's documented in
the manual.
Roger
Roger,
I am quite aware of both points you made. By "straightforward programming
techniques" I was referring to setting up four wavetables and telling the
audio device to play four tones. Anyone who can read the manuals and
program can do this. More than four voices requires the
processor/programmer to do significantly more work and therefore requires
more CPU horsepower. Sorry if I did not make this clear.
I'm not sure what you mean by "Instant Music does not provide multitimbreal
(sp) waves". You can indeed generate multitimbral music, as can any program
which uses the stock audio drivers. You are correct in your statement that
IM hdoes not attempt to generate more than one note per channel; four
voices is the limit, and it works as you describe.
I stand by my statements that generating four simultaneous tones is
trivial, that more tones are possible but require greater CPU horsepower,
and that no commercially available programs (which I am aware of) have this
capability at this time.
I would be delighted if someone proved me wrong on either the second or
third counts.
Nybbles,
Rick
Richard:
What I meant by 'multitimbreal waves' was the ANDing of two or more waves
to give an effect of multiple tones or multiple voices from one channel. I
wasn't referring to multitimbreal music, which, of course, IM does use.
I still don't see why this requires extra processing power. I'm not
talking about ANDing the waves on the fly, but setting up a wave (in a
array or structure for the sound chip) previously and using it as the
channel's wave, the same way one does when creating any voice. Ahhh…
syntactical.
By the way, I'll be delighted too.
Roger
Roger,
Oh, you were referring to polyTONAL (or multitonal, if you prefer) sounds.
This is quite different from multitimbral; your earlier comment was correct
in this light.
You say you still don't understand why this requires extra processor time.
There are several reasons; I will quote you one example for now.
Let's take a simple case: you want to generate a 1 Khz tone from one
channel. Okay, you build your sine wave or whatever, load it into the
table, and turn the sound generator loose. Fine. Now, you want to add a
second tone; for the sake of simplicity we'll take a perfect fifth above
the first tone, which is 1500 Hz. This is the simplest musical ratio after
an octave, but it will illustrate the point well enough.
Now, you can't just compute a second sine wave or whatever at 1500 Hz, AND
it with the existing table contents, and re-store it. Why? Because while
the period of the 1 KHz tone is 1 mSec, the period of the 1500 Hz tone is
666 uSec; in other words, one cycle of the 1500 Hz tone is over in 2/3 the
time of the original waveform. If you just compute one cycle 1/3 of your
waveform will be missing; if you fill the table with 1500 Hz, you'll have
1.5 cycles and no longer a sine wave or whatever.
The solution to this is to double the length of the table to find the least
common denominator of the two periods. In this space you can fit two 1 KHz
cycles and three 1500 Hz cycles, so everything works out wonderfully… for
this simple case.
Now, consider a major triad, which is the root, fifth, AND third. OR any
of the more complex chords. Figure out what the LCD is and you might be
surprised. Keep in mind also that you'd have to constantly change the table
length for EACH and every note change (potentially, at least).
No, typically polytonal output from a single channel is going to require a
LOT of CPU, regardless of whether the CPU is calculating the waveforms "on
the fly" or using the wave tables and dedicated hardware.
Nybbles,
Rick
BTW, a good example of this is the minor organ chord in the Sound Demo on
Workbench Demos 2. Listen to it, and you'll notice a very muffled
periodicity, caused by the fact that some of the notes of the chord are
missing a bit of their last waveform because they are a different frequency
than the "main" note. –>Steve Bennett
BTW, a good example of this is the minor organ chord in the Sound Demo on
Workbench Demos 2. Listen to it, and you'll notice a very muffled
periodicity, caused by the fact that some of the notes of the chord are
missing a bit of their last waveform because they are a different frequency
than the "main" note. –>Steve Bennett
Roger,
Oh, you were referring to polyTONAL (or multitonal, if you prefer) sounds.
This is quite different from multitimbral; your earlier comment was correct
in this light.
You say you still don't understand why this requires extra processor time.
There are several reasons; I will quote you one example for now.
Let's take a simple case: you want to generate a 1 Khz tone from one
channel. Okay, you build your sine wave or whatever, load it into the
table, and turn the sound generator loose. Fine. Now, you want to add a
second tone; for the sake of simplicity we'll take a perfect fifth above
the first tone, which is 1500 Hz. This is the simplest musical ratio after
an octave, but it will illustrate the point well enough.
Now, you can't just compute a second sine wave or whatever at 1500 Hz, AND
it with the existing table contents, and re-store it. Why? Because while
the period of the 1 KHz tone is 1 mSec, the period of the 1500 Hz tone is
666 uSec; in other words, one cycle of the 1500 Hz tone is over in 2/3 the
time of the original waveform. If you just compute one cycle 1/3 of your
waveform will be missing; if you fill the table with 1500 Hz, you'll have
1.5 cycles and no longer a sine wave or whatever.
The solution to this is to double the length of the table to find the least
common denominator of the two periods. In this space you can fit two 1 KHz
cycles and three 1500 Hz cycles, so everything works out wonderfully… for
this simple case.
Now, consider a major triad, which is the root, fifth, AND third. OR any
of the more complex chords. Figure out what the LCD is and you might be
surprised. Keep in mind also that you'd have to constantly change the table
length for EACH and every note change (potentially, at least).
No, typically polytonal output from a single channel is going to require a
LOT of CPU, regardless of whether the CPU is calculating the waveforms "on
the fly" or using the wave tables and dedicated hardware.
Nybbles,
Rick
This could be done in advance IF you know the frequency of both of the
original waves. In fact, this is how harmonic synthesis works. On the
other hand, if the frequency between the two waveforms changes, then it
pretty much has to be calculated on the fly… –>Steve Bennett
BTW, in general, harmonic additive synthesis hardware has consisted of a
large number of independent sinewave generators, either hardware oscilators
or software sinewave generators, being generated or summed in realtime, so
the problem of choosing wavetable lengths to fit least-common-multiples
hasn't had to be faced very often. In fact, doing it in a fixed table as
has been discussed here kind of misses the whole point of harmonic additive
synthesis, which is: DYNAMIC timbres, with a fairly intuitive control
mechanism. A steady-state tone is just going to sit there, whether you've
computed it from added sine waves or from FM equations or whatever. The
big challenge to Amiga audio programmers is: How shall we produce
interesting dynamic timbres, and still have enough horsepower left over to
do anything else? Hmm, let's dig out those Copper documents…
Chris? Nit? Mr. Picker???
I see lots of postings from you here; I'm gonna reply to them individually
rather than lump the reply all in one.
"Fairly intuitive control mechanism?" Sounds easy, don't it. Actually, if
you're going to do polytonal stuff using a single wavetable, the dynamic
timbre changes sorta come for free. I.E., you've got to recalculate the
table CONSTANTLY to change chords, amplitude envelopes for individual
tones, and such; you might as well do it every millisecond or so and reload
the waveforms with the desired timbre variations.
Actually, creating dynamic timbre, say by additive synthesis in wavetables,
is TRIVIAL compared to trying to do polytonal stuff; and the additive stuff
takes gobs of CPU. I did some work with a 16 harmonic system of my
design… it used a 1K 16 bit wavetable with independant amplitude
envelopes for each harmonic. It was built around a TMS32010 (that's the DSP
chip, not a CPU); if you're familiar with this chip you know it is FAST. It
had problems keeping up! I seriously doubt the 68000 in Ami is capable of
doing even that well, custom chips notwithstanding.
You seem to have a reasonable understanding of the complexities involved;
have you worked with this sort of thing alot? Most people look at the
problems of direct digital synthesis and intuitively see it as a simple
task, but when one actually tries to DO it… Well, you find out that it
is no small task to do it well. This is the reason it's taken VAXes (and
now, dedicated VLSI) to do it so far. Ami is definitely a step in the
right direction, though; I for one am looking forward to what the true
hackers can do with her.
Agreed, it'll be nice to see what really into-it people come up with on Ami
audio. Re: direct audio synthesis, the complexity of it depends upon the
model from which you start. Doing polyphonic stuff with a wavetable is, as
you have demonstrated, not the world's most straightforward thing to do.
Direct computation, on a sample-to-sample basis rather than a
cycle-to-cycle basis, avoids that particular set of problems. Of course,
not all CPU's are up to direct synthesis. And there are synthesis
techniques other than harmonic additive which can get more interesting
results for the same amount of CPU horsepower– like FM, for instance, the
basic algorithm of which only requires 1 multiply and 1 addition per sample
period per operator per voice. Not quite sure I agree about dynamic
timbres coming for free, since fractional envelope values would have to be
updated every time you touch the wavetable (for your point to be
valid)…enlighten me? Hey, it's nice to have people to talk to this kinda
stuff about!!
The point was simply that if you were going to do
polytonal-from-a-single-table stuff you'd have to be pounding the wavetable
constantly to keep things in shape, so you might as well hink with the
modulation values and reload new waveforms each time as well. Granted I
overstated the case, though.
Yow, I think we agree– you kinda gotta compute a sample at a time
and spit it to the DACs. How come you're so hot on additive harmonic
synthesis? You got something against FM, maybe? 8-)}
Chris,
Me? Got something against FM??? I've got a DX7 and several TF1s… I'd better
NOT have anything against FM! 8)
Hmm, didn't mean to imply that I was "hot" on additive… in the context of
the wavetable discussion additive is prolly one of the better ways to go,
is all. Of course I will state for the record that additive WILL provide
you with the ability to generate ANY sound, bar none, given an infinite
number of parameters. The trick in real life is balancing complexity with
results.
I guess I believe fairly strongly in additive as a very viable technique,
both in direct imitative synthesis, and as a complexity reducer in
resynthesis, but that doesn't blind me to other techniques.
Now, you want to talk to somebody who's hot on additive, go give Wendy
Carlos a call! 8)
Chris,
Me? Got something against FM??? I've got a DX7 and several TF1s… I'd better
NOT have anything against FM! 8)
Hmm, didn't mean to imply that I was "hot" on additive… in the context of
the wavetable discussion additive is prolly one of the better ways to go,
is all. Of course I will state for the record that additive WILL provide
you with the ability to generate ANY sound, bar none, given an infinite
number of parameters. The trick in real life is balancing complexity with
results.
I guess I believe fairly strongly in additive as a very viable technique,
both in direct imitative synthesis, and as a complexity reducer in
resynthesis, but that doesn't blind me to other techniques.
Now, you want to talk to somebody who's hot on additive, go give Wendy
Carlos a call! 8)
Yow, I think we agree– you kinda gotta compute a sample at a time
and spit it to the DACs. How come you're so hot on additive harmonic
synthesis? You got something against FM, maybe? 8-)}
The point was simply that if you were going to do
polytonal-from-a-single-table stuff you'd have to be pounding the wavetable
constantly to keep things in shape, so you might as well hink with the
modulation values and reload new waveforms each time as well. Granted I
overstated the case, though.
Agreed, it'll be nice to see what really into-it people come up with on Ami
audio. Re: direct audio synthesis, the complexity of it depends upon the
model from which you start. Doing polyphonic stuff with a wavetable is, as
you have demonstrated, not the world's most straightforward thing to do.
Direct computation, on a sample-to-sample basis rather than a
cycle-to-cycle basis, avoids that particular set of problems. Of course,
not all CPU's are up to direct synthesis. And there are synthesis
techniques other than harmonic additive which can get more interesting
results for the same amount of CPU horsepower– like FM, for instance, the
basic algorithm of which only requires 1 multiply and 1 addition per sample
period per operator per voice. Not quite sure I agree about dynamic
timbres coming for free, since fractional envelope values would have to be
updated every time you touch the wavetable (for your point to be
valid)…enlighten me? Hey, it's nice to have people to talk to this kinda
stuff about!!
Chris? Nit? Mr. Picker???
I see lots of postings from you here; I'm gonna reply to them individually
rather than lump the reply all in one.
"Fairly intuitive control mechanism?" Sounds easy, don't it. Actually, if
you're going to do polytonal stuff using a single wavetable, the dynamic
timbre changes sorta come for free. I.E., you've got to recalculate the
table CONSTANTLY to change chords, amplitude envelopes for individual
tones, and such; you might as well do it every millisecond or so and reload
the waveforms with the desired timbre variations.
Actually, creating dynamic timbre, say by additive synthesis in wavetables,
is TRIVIAL compared to trying to do polytonal stuff; and the additive stuff
takes gobs of CPU. I did some work with a 16 harmonic system of my
design… it used a 1K 16 bit wavetable with independant amplitude
envelopes for each harmonic. It was built around a TMS32010 (that's the DSP
chip, not a CPU); if you're familiar with this chip you know it is FAST. It
had problems keeping up! I seriously doubt the 68000 in Ami is capable of
doing even that well, custom chips notwithstanding.
You seem to have a reasonable understanding of the complexities involved;
have you worked with this sort of thing alot? Most people look at the
problems of direct digital synthesis and intuitively see it as a simple
task, but when one actually tries to DO it… Well, you find out that it
is no small task to do it well. This is the reason it's taken VAXes (and
now, dedicated VLSI) to do it so far. Ami is definitely a step in the
right direction, though; I for one am looking forward to what the true
hackers can do with her.
BTW, in general, harmonic additive synthesis hardware has consisted of a
large number of independent sinewave generators, either hardware oscilators
or software sinewave generators, being generated or summed in realtime, so
the problem of choosing wavetable lengths to fit least-common-multiples
hasn't had to be faced very often. In fact, doing it in a fixed table as
has been discussed here kind of misses the whole point of harmonic additive
synthesis, which is: DYNAMIC timbres, with a fairly intuitive control
mechanism. A steady-state tone is just going to sit there, whether you've
computed it from added sine waves or from FM equations or whatever. The
big challenge to Amiga audio programmers is: How shall we produce
interesting dynamic timbres, and still have enough horsepower left over to
do anything else? Hmm, let's dig out those Copper documents…
This could be done in advance IF you know the frequency of both of the
original waves. In fact, this is how harmonic synthesis works. On the
other hand, if the frequency between the two waveforms changes, then it
pretty much has to be calculated on the fly… –>Steve Bennett
Umm, when you said ANDing waves to combine, didn't you mean ADDing waves to
combine? And multitimbral is a different idea from poly- phonic, which are
both distinct from the idea of combining multiple tones of differing
frequency and/or timbre in the same wavetable. Address hate mail to: The
Nitpicker, Chris Grigg, 76566,672
Umm, when you said ANDing waves to combine, didn't you mean ADDing waves to
combine? And multitimbral is a different idea from poly- phonic, which are
both distinct from the idea of combining multiple tones of differing
frequency and/or timbre in the same wavetable. Address hate mail to: The
Nitpicker, Chris Grigg, 76566,672
Richard:
What I meant by 'multitimbreal waves' was the ANDing of two or more waves
to give an effect of multiple tones or multiple voices from one channel. I
wasn't referring to multitimbreal music, which, of course, IM does use.
I still don't see why this requires extra processing power. I'm not
talking about ANDing the waves on the fly, but setting up a wave (in a
array or structure for the sound chip) previously and using it as the
channel's wave, the same way one does when creating any voice. Ahhh…
syntactical.
By the way, I'll be delighted too.
Roger
Roger,
I am quite aware of both points you made. By "straightforward programming
techniques" I was referring to setting up four wavetables and telling the
audio device to play four tones. Anyone who can read the manuals and
program can do this. More than four voices requires the
processor/programmer to do significantly more work and therefore requires
more CPU horsepower. Sorry if I did not make this clear.
I'm not sure what you mean by "Instant Music does not provide multitimbreal
(sp) waves". You can indeed generate multitimbral music, as can any program
which uses the stock audio drivers. You are correct in your statement that
IM hdoes not attempt to generate more than one note per channel; four
voices is the limit, and it works as you describe.
I stand by my statements that generating four simultaneous tones is
trivial, that more tones are possible but require greater CPU horsepower,
and that no commercially available programs (which I am aware of) have this
capability at this time.
I would be delighted if someone proved me wrong on either the second or
third counts.
Nybbles,
Rick