SynthMaker

Suboscillator problems

Archive · 2008 15 old posts

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

Vegetal ·

Hi

I'm trying to make an suboscillator for my synth project. I used the following math:

cos(x) = sqrt(1/2(1+cos(2x)))

Where 2x is our input signal which is 2 times the frequency that we want as output signal.

The problem is however that the outputsignal that I recieve is not downpitched 1 octave and I'm not sure that my circuit is working as intended (Or is the math the issue):

Is there any other way I can achieve the squareroot than using the stream power. Can I somehow get the square root with code.

Is there a page where I can lookup all the syntax formats for the code module?

/Vegetal [/img]

Andrew J ·

Yep, sqrt can be done in code as follows:

streamin in; streamout out; movaps xmm0,in; sqrtps xmm1,xmm0; movaps out,xmm1;

The code was originally from Unkargherth I think.

-Andrew

rl ·

that's an interesting idea. I played with it a little, unfortunately found 2 problems: - make sure, that the input of sqrt is never negative - the solution to y=sqrt(x) isn't y really, it's abs(y), - so the result has double frequency 🙁 (for a sine wave input you would have to flip every 2nd half-wave)

output of sqrt(1/2(1+cos(i))) | * * * | * * * * * * | * * * * * * | * * * * * * |*_______________*_______________*_______________* i

infuzion ·

rl wrote: output of sqrt(1/2(1+cos(i))) | * * * | * * * * * * | * * * * * * | * * * * * * |*_______________*_______________*_______________* i

That looks more like abs(sine(i))?

Acrobat ·

sorry, vegetal, do you mean the input coming from the SM osc output or the MIDI2Poly normalized frequency?

QuakerFloor ·

Hi everyone

I'm working with Vegetal on this project. Suboscillator might be the wrong term to use for what we are trying to make here. The synth we are working on is an additive synth with 16 harmonics using tjebychev polynoms. We add all the harmonics togeather and want to pitch down the resulting waveform. For example we make a fourier series that build up a saw we want the suboscillator to make a saw 1 octave below the original saw (Maybe calling it a pitchshifter is more correct).

Ty for the input here guys mych appretiated. I checked out the waveforms with a single cos wave in excell and it's right it's a abscos with 1/2 frequency we get from cos(x/2)=sqrt(1/2*(1+cos(x)). Looks like my math books at the university left that out.

rl ·

Isn't it easier to modify the frequency control signal instead of pitch-shifting the resulting wave?

BTW: My PitchBlack synthesizer from this year's KVR developer challenge uses Chebyshev polynomials. If you have any question feel free to ask.

TomC ·

rl wrote: Isn't it easier to modify the frequency control signal instead of pitch-shifting the resulting wave?

BTW: My PitchBlack synthesizer from this year's KVR developer challenge uses Chebyshev polynomials. If you have any question feel free to ask.

Addentum: the higher Chebychev polynoms are a little hard to compute by hand (actually, it's not hard, but you'll make about one zillion errors on your way), so if someone needs some higher Chebychevs I have them up to 32th grade.

Tom

PS: is the forum software fixed? I got no forum error (yet) today, so maybe I should start posting again...

QuakerFloor ·

I noticed that you don't realy need the higher polynoms except for the prime numbers.

For example polynom 3 coupled to a polynom 2 gives the same result as polynom 6. I also cheated a bit using ringmodulators to get the higher prime number harmonics.

For exaple harmonic 1 * harmonic 12 = 1/2(harmonic 11 +harmonic 13)

I used the following code where in1 is harmonic 1, in2 is harmonic 12 and in3 is harmonic 11. On the output I get harmonic 13.

streamin in1; streamin in2; streamin in3; streamout out;

out = ((2*in1*in2)-in3);

Dave ·

What's an sub-osc? I thought it's just another sine-osc playing -1 octave ?!

stefan ·

Dave: Or any other lower octave.

QuakerFloor: Are you sure your formula is correct? As far as I can tell, you're increasing, not decreasing, the frequency by a factor of two. Or, no, I take that back, it looks like you should get the SAME frequency on the output side of things using your formula. No?

If you want an alias free solution I think the only way is to go UP one octave using a waveshaper. To go downwards in frequency you will have to rely on counters and flip-flop switching, which would alias. Or just use a full-blown, separate, oscillator.

Dave ·

@stefan: And the sub-osc is just mixed together with the other oscs right?

stefan ·

Dave wrote: @stefan: And the sub-osc is just mixed together with the other oscs right?

Yes. It's mainly useful when doing analog electronic designs, because you can make it using very few components. Like, uhm, just a comparator and a switch, almost. No full oscillator circuitry needed, since it relies on counting for instance positive zero crossings from an already running oscillator.

QuakerFloor ·

stefan wrote: Dave: Or any other lower octave.

QuakerFloor: Are you sure your formula is correct? As far as I can tell, you're increasing, not decreasing, the frequency by a factor of two. Or, no, I take that back, it looks like you should get the SAME frequency on the output side of things using your formula. No?

If you want an alias free solution I think the only way is to go UP one octave using a waveshaper. To go downwards in frequency you will have to rely on counters and flip-flop switching, which would alias. Or just use a full-blown, separate, oscillator.

I think this thread have become a little bit mixed up. The formula I wrote was just about using polynoms to get the different harmonics.

And yes a sub oscillator is natrually pitched down but it's not always just a sine wave. I've also seen people using a square and also using the same type of wave as one of the oscillators.

I have made a solution to this now by making another set of 16 harmonics that are using the same parameters and downpitch the first oscillator one octave (the rest will follow). This works as it should but it's not very cpu friendly. I will post the osm here later on I'm a bit late for school here.

QuakerFloor ·

Hi everyone

The link below is solotion of making 16 harmonics + a sub tone with the same waveform. Would be glad for some input on this. It's my first project in synthmaker (Only got some experience from Synth Edit before). There's surely some ways to opimize this.

http://www.box.net/shared/frpa6mh4ww

[/url]

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.