![]() |
![]() ![]() ![]() ![]() ![]()
|
next newest topic | next oldest topic |
Author | Topic: Osc sync | |
BobTheDog Member |
![]() ![]() ![]() Hi Guys, Sorry if the is a basic question. I am trying to do some osc sync using the Reset field of the Oscillator. I expected just pasting another oscillators output into the field would do the job but it doesn't seem to work how I would think. Any help would be really apreciated. Cheers Andy IP: Logged | |
keph Member |
![]() ![]() ![]() I seem to remember a similar problem a while back so I just created a trigger that fired at the frequency of OSC A and put that in OSC B's reset field and that sorted it. IP: Logged | |
keph Member |
![]() ![]() ![]() It just occurred to me that the problem may have to do with the update rate in that field. I don't have kyma in front of me so I can't test it right now but there could have been 2 areas for problems: 1. the reset field doesn't run at audio rates so then it would only reset at 1000 hz or below. I think I was dealing with sub audio rate signals though (LFOs) though so maybe it was something else altogether. -- Ben. IP: Logged | |
SSC Administrator |
![]() ![]() ![]() By using the Formant field in the Oscillator, you can get a sync modulation effect without discontinuities in the waveform. The frequency of the (invisible) modulator is the Frequency of the Oscillator divided by the value of the Formant. If you prefer, you can think of it as modulating the duty cycle of the waveform within each cycle (see the Prototypes named 'Oscillator+Duty Cycle'). Another approach is to use a Waveshaper as an Oscillator. That way you can feed it an audio rate input as the index into the wavetable. If the input is a repeating sawtooth shape (a full ramp from -1 to 1), you will traverse the entire wavetable. Every time the input jumps back to -1, it resets the phase of the Oscillator (the waveshaper) back to 0. For examples of this approach, look in Kyma Sound Library/ Synthesis-Keyboard Controlled/Analog KBD.kym at examples whose names start with 'Sync Mod...'. IP: Logged | |
BobTheDog Member |
![]() ![]() ![]() Hi Guys, Thanks for the replies. The reset field not running at audio frequency seems to be correct I think, removing the L had no effect. What we are really after is to be able the sync the oscillator from an external audio input so using the formant field is not going to work (with my very limited understanding!). Also the Waveshaper would not work from the audio input either I take it as the input is the index into the waveform. I'm a bit stuck really! Andy IP: Logged | |
SSC Administrator |
![]() ![]() ![]()
code: the vmax: is added because the Formant cannot be less than 1. The output of freqTrackerOnLiveInput is in the range of (0,1) so we multiply it by the maximum frequency (half the sample rate) to bring it into the range of (0, maxFreq). The advantage of doing it this way is that you won't get discontinuities in the waveform when the oscillator is reset to 0 phase. Some examples are attached. Try 'Strings: Live input Sync Mod on 4 detuned oscillators' as an example with 4 detuned oscillators all controlled by the same modulator. IP: Logged | |
BobTheDog Member |
![]() ![]() ![]() Thanks very much for that, will have a look at it tonight. IP: Logged | |
Luddy Member |
![]() ![]() ![]() The formant field does modulate the oscillator output in an interesting way, and it very much matches the description in the manual of sweeping a bandpass filter over the output, but I haven't found it to sound much like hard sync on an ordinary synth. Maybe my expectation for the sound is wrong, dunno. It's tricky to analyze because the details of hard sync implementations in commercial synths are not so readily available, and I actually don't understand exactly what the formant field does either. If you have CAG's modules, you can implement hard sync more directly, by feeding a CAGRawSaw into the Phase1/2 field of a CAGWavetable1. This is very much like your Reset idea. The raw saw output is simply a repeating ramp function (from -1 to 1). You use this to sweep through the wavetable position. When the ramp sweeps something less than -1 to 1, then not all of the wavetable is visited in a cycle. This is akin to having the slave oscillator running at a lower frequency than the master. In other words, the frequency of the RawSaw is the master frequency, and the amplitude of the RawSaw controls (indirectly) the slave frequency. Everything is updated at audio rate in those modules so it works pretty well. edit: oh, I see that SSC posted the same idea but in terms of Waveshaper... -Luddy [This message has been edited by Luddy (edited 03 July 2009).] IP: Logged | |
SSC Administrator |
![]() ![]() ![]() In Kyma Sound Library/ Synthesis-Keyboard Controlled/Analog KBD.kym there are 10 examples with 'Sync Mod...' in the title that use the waveshaper-as-oscillator with a scaled input oscillator controlling the 'oscillator' phase. One way to modify these to be modulated by a live audio input (which is what "Bob the Dog" was trying to do), is to control the modulator oscillator frequencies by a FrequencyTracker on the live input. (See the examples I uploaded with an earlier post). This technique cuts into the waveform and results in discontinuities (i.e. infinite slopes == infinite bandwidth) in the waveform. In a digital system, infinite bandwidths result in aliasing. You might be able to reduce some of the aliasing by using a Triangle waveform in the modulating oscillators in place of the FullRamp (and reducing the modulator oscillator frequencies by one octave). This would have the effect of sweeping back and forth through the carrier wavetable. There will still be pointy bits in the waveform where the phase reverses direction but they should be at lower amplitudes than the jumps produced by cutting into the waveform, so the aliasing will be lower in amplitude. IP: Logged | |
Bill Meadows Member |
![]() ![]() ![]() So, the short answer is that you can't actually mimic hard sync on an analog synth. It would require writing a new oscillator with a sync input. It seems like the waveshaper approach would work if you could reset the phase of the scanning ramp, but this may just move the problem to a different module. IP: Logged | |
SSC Administrator |
![]() ![]() ![]() Implementing sync modulation as a simple phase reset in a digital system would not give you the same result as an analog synthesizer hard sync. A simple phase reset results in a discontinuity in the waveform which, in a digital system, results in aliasing. No amount of POST filtering can remove the aliased elements (some of which lie on top of the desired components in the spectrum). To do it right requires a more complex solution than simply resetting the phase of a table lookup oscillator. IP: Logged | |
Luddy Member |
![]() ![]() ![]() quote: By reducing the amplitude of the scanning ramp, you can cause it to visit only a fraction of the scanned wavetable. And by increasing the amplitude and "wrapping around" (i.e., treating 1.0001 as -0.9999) you can cause it to visit the scanned wavetable more than once per cycle. So control over the frequency and amplitude of the scanning ramp is enough to get the right scanning effect. This does nothing to address the aliasing problem however. I don't know whether CAG's modules have any code to address the case in which there is a sharp discontinuity in the phase inputs. I have gotten some pretty nice sounds out of his wavetable module using this technique ... -Luddy IP: Logged | |
Bill Meadows Member |
![]() ![]() ![]() I vaguely remember looking at hard sync of an analog oscillator with an oscilloscope back in the '80. It does result in a rapid (but not infinitesimally small) reset of the phase. The Kyma oscillator would need an audio rate sync input that would reset the phase over the course of a few samples, thus eliminating the discontinuity. IP: Logged | |
RobSol Member |
![]() ![]() ![]() I came across this paper (pdf file) on digital hard sync, maybe it could be useful... http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf 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.