Kyma Forum
  Tips & Techniques
  Osc sync

Post New Topic  Post A Reply
profile | register | preferences | faq | search

next newest topic | next oldest topic
Author Topic:   Osc sync
BobTheDog
Member
posted 02 July 2009 10:28         Edit/Delete Message   Reply w/Quote
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
posted 02 July 2009 18:14         Edit/Delete Message   Reply w/Quote

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
posted 02 July 2009 18:22         Edit/Delete Message   Reply w/Quote
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.
2. the reset field does work at audio rates but when pasting the audio rate osc output into the reset field, i forgot to remove the L that lets it run at audio rate rather than control rate.

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
posted 02 July 2009 18:58         Edit/Delete Message   Reply w/Quote
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
posted 03 July 2009 02:48         Edit/Delete Message   Reply w/Quote
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
posted 03 July 2009 11:01         Edit/Delete Message   Reply w/Quote

syncmodwithliveinput.kym

 
In sync modulation, the phase of the oscillator is reset once for each cycle of the modulator. So the only thing that matters about the modulator is its frequency. We could use the FrequencyTracker to determine the frequency of a live input and use that to control the Formant of the Oscillator module. Since we know that Formant = Freq/ModFreq, we could use the following expression in the Formant field:

code:

(!Frequency/ ( [freqTrackerOnLiveInput] L * SignalProcessor halfSampleRate)) vmax: 1

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
posted 03 July 2009 11:18         Edit/Delete Message   Reply w/Quote
Thanks very much for that, will have a look at it tonight.


IP: Logged

Luddy
Member
posted 03 July 2009 18:25         Edit/Delete Message   Reply w/Quote
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
posted 03 July 2009 19:44         Edit/Delete Message   Reply w/Quote
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
posted 04 July 2009 19:27         Edit/Delete Message   Reply w/Quote
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
posted 04 July 2009 23:43         Edit/Delete Message   Reply w/Quote
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
posted 05 July 2009 09:28         Edit/Delete Message   Reply w/Quote
quote:

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.

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
posted 05 July 2009 11:15         Edit/Delete Message   Reply w/Quote
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
posted 10 September 2009 15:21         Edit/Delete Message   Reply w/Quote
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

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply

Contact Us | Symbolic Sound Home

This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.


Ultimate Bulletin Board 5.45c