![]() |
![]() ![]() ![]() ![]() ![]()
|
next newest topic | next oldest topic |
Author | Topic: Two basic questions |
dan.dan Member |
![]() ![]() ![]() Hi All, I apologize in advance, since the answers to these are probably to be found somewhere in the documentation. On the other hand, there is quite a bit of documentation, and I've only managed to systematically go through about a third of the manual yet. I decided somebody here might know the answers to these specific questions. First question: Is there a straightforward way in Kyma to do "Wavetable" synthesis of the kind used by the PPG/Waldorf Wave? The idea is to create a table of single-cycle waveforms and then index the table by a controller (envelope, LFO, etc.) Interpolation of some form is used to morph between two adjacent waveforms when the controller does not select one of them directly. The output of that is then filtered to complete the timbre. I can think of similar things Kyma does, like GA synthesis. One could use a controller to morph along a continuum between two timbres, for example, using GA or additive synthesis. But it's not exactly the same thing. To get better control, one could create a spectrum where the frames correspond to waveforms, and then use a time index to move about in that spectrum by some controller. But the process of arriving at a spectrum by analysis and editing doesn't have the same creative flow as the process of building a table of single-cycle waveforms. Second question: How does one use a spectrum or synthetic spectrum to control individual osciallator modules? The idea I have in mind is to do Synclavier-like FM synthesis by using two oscillators for each partial, one as the modulator and one as the carrier, whose frequency envelopes are related by a scaling factor, and where all of the amplitude envelopes of the modulators are multiplied by an ADSR. The first challenge is getting the frequency and amplitude envelopes for individual partials out of the spectrum. The second challenge will be assembling all of those oscillators, which is probably a good task for scripting. Thanks, IP: Logged |
keph Member |
![]() ![]() ![]() quote: Funny enough you ask this as last night I was completing a set of PPG wavetables to use in a wavetable synth. I was going to publish a couple building block modules to tweaky this weekend once finished. Along with the PGG, should have some Oscar and K3 wavetables along with updated objects for previous waves I've put up. There are a couple ways to do it. One is a single file with the waveforms stacked back to back. Then you set the loop length to wavetable size and scan through it. Then you can band-limit, sample and play it out of an Oscillator sound. Another is to use the multifile player. This is better if you want to keep the wavetables as individual files. You define the files and then use the index parameter to pick the file. After that it is the same process as above: band-limit, sample and feed into an oscillator (thanks to pete we have some handy sounds for this). You could also use keymapMultiSample and turn off transposing. Then the keyNN would be mapped to a wavetable (use is !Index rather than !Pitch.) And I am sure there is a couple other methods as well. A key to any method is to use wavetables of equal length. I tend to make the 4096 samples long as these means I can easily use them in a range of kyma sound objects. Anyway, if you want to wait a couple days, I'll get get a couple of examples up on tweaky (there are hints on how you do it within the P5 and grain synths already up there.) IP: Logged |
dan.dan Member |
![]() ![]() ![]() Thanks! --Dan IP: Logged |
keph Member |
![]() ![]() ![]() examples are posted to Tweaky. more forthcoming. IP: Logged |
pete Member |
![]() ![]() ![]() Hi Dan Re Question 2 I think that the synclav FM was a lot simpler. I think that the carrier had all the additive harmonics but the modulator was just a simple sine wave that in effect modulated the whole lot as if it were a single waveform. But now I see your explanation, I wonder if I've got it wrong. I know I worked for them for a while but I never looked at the inside of the FM that closely. If my own assumptions are correct then a way to do it would be to start with a spectrum from array module and make sure that the fundamental pitch was 4096 samples long, i.e. sample rate / 4096. All the controls for the harmonic levels would be put in the amplitude array. This would feed an osc bank that would then feed a 4096 sample memory writer. Then we use an osc module to read that memory and this is where the pitch control and FM would be done. This is just the same principle as Keph mentioned above as used in the P5. The FM would be a simple sine wave osc controlled by the same controllers as the pitch but with offsets to act as the ratio control. This osc would also have an ADSR module for the modulation ADSR control. You may also need the bandlimiting filter between the osc bank and the memory writer to overcome aliasing. The Synclav didn't have an aliasing problem as the DtoA converters changed their sample rate depending on the note that was being played, and each note had it's own DtoA convertor. Also : can't wait to have a play with the PPG wave thing Keph Pete. IP: Logged |
dan.dan Member |
![]() ![]() ![]() Thanks Pete! Your explanation of Synclav FM makes a lot of sense. I know they did something vaguely "wavetable"-like with it for reasons of computational efficiency. I guess the computer would calculate a single cycle of the waveform and send that to a voice card, and the voice card would play it back at some pitch (with pitch modulation, etc.). It makes sense to me that the voice card might simply phase-modulate that one waveform over time. Either it could use a sine wave, or the *same* waveform could be used as the phase modulator. It would be interesting to know which. I suppose either might yield interesting results. For timbre frames, I am told it was a crossfade from one voice card to another in the analog domain, each playing some waveform. I guess the same overall phase modulation envelope could still be used in that scenario, feeding both voice cards at once. In Kyma, this architecture has the additional benefit of being relatively computationally efficient. A monophonic oscillator bank creates a waveform, and then only a single oscillator per voice is used to make it polyphonic, and the FM envelope changes its harmonics over time. Two oscillators per voice are required for FM. In Kyma, it can also be filtered to change its harmonics over time. For chorusing/doubling, four oscillators per voice can be used, detuned, both reading the same memory writer. Now, the next step would be to find a way to combine the two approaches. One way to do it would be to build a PPG-style wavetable and index that into a memory writer feeding an oscillator that is phase modulated and/or filtered. With both phase modulating and filtering, we essentially have the best of both worlds (PPG and Synclav). When I get home I'll have to check out the PPG-ish stuff in tweaky. One question that remains in my mind is how to switch smoothly between different waveforms. If I am remembering correctly, the Synclav did it by a simple crossfade, while the PPG Wave used some form of interpolation to allow the controller index to hit points between individual wave indexes in the table. So the Synclav's timbre frame approach would be something like a wavetable with one waveform per timbre frame, each having a programmable sustain length and crossfade time, and an overall phase modulation envelope. I suppose two different oscillators feeding a mixer into a memory writer might be used for the cross-fading, but it would be rather complicated figuring out how to switch waveforms and vary the mix amounts in a coordinated fashion, using something like an analog sequencer that is triggered by a key down. A similar approach could be taken for the PPG-style interpolation, but calculating the wave indexes and mixer levels from a single controller via a complex set of expressions. Lots of food for thought. Thanks again! [This message has been edited by dan.dan (edited 27 May 2004).] [This message has been edited by dan.dan (edited 27 May 2004).] IP: Logged |
dan.dan Member |
![]() ![]() ![]() Well, I started playing with the Synclav idea and it works well. I used a SyntheticSpectrumFromArray feeding an oscillator bank into a memory writer into one side of a mixer. On the other side is a couple of ADSRs feeding two oscillators with one phase modulating the other. The carrier takes its waveform from the memory writer. That whole thing is doubled with detune for chorusing, and then feeds a MIDI voice before feeding the mixer. I can get 16 voices of polyphony, including doubling with detune, with only about 5 DSPs. I've added an LFO for vibrato, and I still plan to add another one for AM effects (tremolo, panning). It's turning into a massive VCS, so I'll have to see if I can figure out how to partition it better, but it works great. Thanks again, IP: Logged |
pete Member |
![]() ![]() ![]() Hi Dan I'm not sure if this will work but you might try to put the spectrumfrom array and osc bank along side the midivoice and not to the left of it. This way kyma would not need to make 16 invisable copies (for 16 note poly) and should use less DSP juice. But it might not work or it might screw up the scheduling a bit. you will let us see the finnished results, won't you? Pete IP: Logged |
SSC Administrator |
![]() ![]() ![]() "I guess the computer would calculate a single cycle of the waveform and send that to a voice card, and the voice card would play it back at some pitch " If your spectrum is harmonic, you might also try experimenting with the GA oscillators. That would do something very similar to what you're describing here. IP: Logged |
dan.dan Member |
![]() ![]() ![]() "...you might try to put the spectrumfrom array and osc bank along side the midivoice and not to the left of it..." It's already placed that way. Otherwise I'm pretty sure I wouldn't be able to get 16 voices of polyphony in 5 DSPs. (I've already tried a pure additive approach without FM, and it seemed to take a lot more than that.) "you will let us see the finnished results, won't you?" Sure thing. Once I get it all working and cleaned up a bit, I'll post something here. "If your spectrum is harmonic, you might also try experimenting with the GA oscillators. That would do something very similar to what you're describing here." I haven't reached the point in the manual yet of doing GA analysis on spectra, so I haven't played with GA oscillators yet. Can they be phase modulated? Can they be driven by synthetic spectra? Thanks, IP: Logged |
dan.dan Member |
![]() ![]() ![]() I'm still working on the "Synclav" FM. I've been busy, but I do plan to share the results here at some point. So far it's working well in theory, and I'm just trying to work out some of the kinks to make it more complete and usable. Yesterday I tried using the additive waveform as the modulator as well as the carrier (but with the potential for a frequency difference), and the results were actually quite a bit more interesting than using a sine wave modulator. To really get to the point of musically interesting sounds, I'm working out details like panning, keyboard scaling of modulation, etc. --Dan IP: Logged |
kelvin Member |
![]() ![]() ![]() Hey Dan, glad to see you are still working on it. It should be very cool. Can't wait to see it. Kelvin IP: Logged |
All times are CT (US) | next newest topic | next oldest topic |
![]() ![]() |
This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.