CompuServe Thread

Forum unknown · Audiophile

#AMIGA-MUSIC

25 messages in this thread
#35802From: Roger F. BeckerOct 9, 1986 9:23 PM
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
#35886From: Richard RaeOct 10, 1986 7:05 AM
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
#36026From: Roger F. BeckerOct 11, 1986 1:02 PM
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
#36148From: Richard RaeOct 12, 1986 9:27 PM
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
#36180From: Steven BennettOct 13, 1986 8:32 AM
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
#36180From: Steven BennettOct 13, 1986 8:32 AM
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
#36148From: Richard RaeOct 12, 1986 9:27 PM
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
#36179From: Steven BennettOct 13, 1986 8:27 AM
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
#36328From: Chris GriggOct 15, 1986 2:50 AM
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…
#36360From: Richard RaeOct 15, 1986 5:10 PM
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.
#36776From: Chris GriggOct 20, 1986 2:11 AM
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!!
#36807From: Richard RaeOct 20, 1986 4:52 PM
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.
#37028From: Chris GriggOct 23, 1986 3:02 AM
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-)}
#37044From: Richard RaeOct 23, 1986 6:52 AM
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)
#37044From: Richard RaeOct 23, 1986 6:52 AM
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)
#37028From: Chris GriggOct 23, 1986 3:02 AM
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-)}
#36807From: Richard RaeOct 20, 1986 4:52 PM
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.
#36776From: Chris GriggOct 20, 1986 2:11 AM
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!!
#36360From: Richard RaeOct 15, 1986 5:10 PM
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.
#36328From: Chris GriggOct 15, 1986 2:50 AM
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…
#36179From: Steven BennettOct 13, 1986 8:27 AM
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
#36323From: Chris GriggOct 15, 1986 2:41 AM
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
#36323From: Chris GriggOct 15, 1986 2:41 AM
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
#36026From: Roger F. BeckerOct 11, 1986 1:02 PM
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
#35886From: Richard RaeOct 10, 1986 7:05 AM
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