SynthMaker

creating loops in code (example)

Archive · 2008 7 old posts

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

exonerate ·

Ok just felt like posting about this....

Basically when learning to use the code component in SM one of the first things you learn is how to create loops, in every example of oscillators I saw the loop was always written like this....

count = count +freq; count = count - (count>=1)&1;

or it can be written...

count = (count+freq) - (count>=1)&1;

Which would cut out one memory access for count.

The shortest possible way of creating a loop in SM is like this...

count = (count+freq)&(count<=1);

Which cuts out the need for a subtraction.

Cheers 😉

Exo

stefan ·

exonerate wrote: or it can be written...

count = (count+freq) - (count>=1)&1;

Which would cut out one memory access for count.

This one can go over 1.

exonerate wrote: The shortest possible way of creating a loop in SM is like this...

count = (count+freq)&(count<=1);

Which cuts out the need for a subtraction.

And this one can go over 1 too, and also it will result in an inaccurate frequency (the cycle length will vary and hence add noise).

You need to add "+freq" in the comparison for both to be correct 🙂

exonerate ·

stefan wrote: exonerate wrote: or it can be written...

count = (count+freq) - (count>=1)&1;

Which would cut out one memory access for count.

This one can go over 1.

exonerate wrote: The shortest possible way of creating a loop in SM is like this...

count = (count+freq)&(count<=1);

Which cuts out the need for a subtraction.

And this one can go over 1 too, and also it will result in an inaccurate frequency (the cycle length will vary and hence add noise).

You need to add "+freq" in the comparison for both to be correct 🙂

Ah thank you stefan, I see why that would be the case now, as I'm comparing the previous value of "count" rather than the current value. And obviously the current value will be more than the previous, hence the over shoot. 🙂

so the code could still be written...

count = count +freq; count = count &(count<=1);

still with no need for a subtraction.

Cheers 😉

Exo

stefan ·

That one will still have a varying frequency for every cycle though, because the cycle length will vary...

MegaHurtz ·

add an "optimised" oscilator to the side, maybe?

MegaHurtz ·

or.. add or subtract nth sample every cycle the target nr of samples is a float.

MegaHurtz ·

Come to think of it. You really can`t avoid the need for infinite precission here. ..sry 😉.

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.