SynthMaker

capture state

Archive · 2012 4 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

tester ·

Recently, playing with multiosc multimodulated AM/FM/slowmod stereo sounding gadget - I started to think about one interesting thing. Each oscillator (sounding, modulating, any esle) - starts at certain phase offset. But when you start to play with changes (different freiqnency/phase sends to left and right channel plus dezippers in action), then at the end - these starting offsets are inpredictable. Yet sometimes it sounds nice until you do the hard resync.

With simple/basic oscillators however (like sine, trangle and so on) - phase offset between two comparable units (between left and right sound or left and right modulator) is equal to time difference/delay between negative-to-positive zero crossings. This can be detected and then recalculated from time domain into degrees - and stored in preset (and then sent to slider on preset load).

With wavetable - I don't know if it's possible, because wavetable is not limited to particular amount of zero-crossings. But since the wavetable uses a table, then probably something can be calculated and reused from the table (some pattern detection?)

With irregular signals like quasi/random generators - it's probably impossible, since there is no reference point.

Anyway - anyone played with such topic?

oddson ·

I'm not seeing how the origin of the waveform -- whether it's from a table or otherwise generated -- makes any difference. 😕

tester ·

Input nodes for phase offset are sending only initial (start phase) positions. But if you start to play with these phase inputs (and frequency inputs too - the cycle becomes shorter or longer) sending various values and using dezippers - then at the end - there is no way to calculate what is the offset difference (between closest points if they are on different frequencies) between two oscillators. Or?

There is no output control/trigger (in SM primitives like sine), that would tell you where the wave cycle starts. The only way (at least to my understanding) to know, what is the offset difference between initial points (closest to each other, one wave is the reference) of cycle of two oscs - is to use then their outputs and catch particular zero crossing points. Sine wave has one crossing point (-/+) during the cycle, Trangle too, sawtooth too, many other that will be used - too. But on wavetable - the shape that is driven by pitch/frequency - can have multiple crossing points (yet it is still periodic). When the output is irregular (driven by irregularity) - then there is no periodicity or reference points to use (I think).

I make some reference pictures (based on sine oscs) of what I mean later, because my technical language may be inaccurate here.

tester ·

Here is what I mean. Capturing the state means to click "capture", and right channel phase offsets are stored to the preset, and restored on loading the preset (after trigger, code would seek for first -/+ zero-crossing on left channel, treating the left channel as "zero reference"). For one unit it is meaningless, but for multiple modulated sounds - you should be able restore the sounding nuances of actual setting.

What code would capture the delay between two stream inputs that way? What is the formula to convert time into degrees according to given frequency/cycle-lenght?

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.