SynthMaker

yes.... I have a first too :D

Archive · 2005 22 old posts

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

HansM ·

Not finished yet, of course... but I'm happy 🙂

It's a simple 4-fold stereo delay with cross-feedback...

My to do list: master out, bypass switch, GUI, LP/HP filter for each delay...

http://www.hansm.com/SM/HM%20delay.osm

(In case anybody is going to look at this: I do appreciate feedback on my DSP design technique 😉 ).

stefan ·

I don't have SynthMaker installed at the computer I'm currently at, so I'll have to take a look when I get home.

But, have you considered using mono4 streams? That way you could reduce the number of components significantly. Unless I'm missing something when looking at the screenshot 🙂

HansM ·

I had not really thought of that, thanks, although I'm using a stream at a certain point now...

What I'm trying to do is feed 4 outputs + dry in into 4 delays ==> 20 connections (and stereo makes it 40). So indeed I can save half the lines by using streams.

skOre ·

well, stream is the data type that can be mono, poly or mono4, so working that out with your schematic should be easy.

HansM ·

I've done some reading up in the forum about streams and mono4:

If I understand correctly instead of mono -> delay -> mono, I should have used mono4 -> delay -> mono4, to process 4 times as quickly? Or am I adding up the wrong things now?

skOre ·

Well, the delay is fixed to be mono afaik, so if you want to use that, this here would be your solution:

http://www.skore.de/synthmaker/examples/HM%20delay_sk.osm

Now it could be even easier with that fractional delay, but I can't get that working atm.

sambean ·

Basically yes.. Rather than having 4 identical modules, you can have 1 module with mono4 connectors, you will have to 'pack' the data from the controllers into the module though..

Also, ATM the delay module only takes mono data, there is a stream delay available though.. if you look in the 'freeverb' module -> allpass section -> allpass filter, there is a stream delay in that..

Hope this helps..

Cheers

Sam

skOre ·

Oh, and I'm not that sure that my schem is correct, so somebody please verify it 🙂

HansM ·

Thanks !! 🙂

yes it seems correct, at least it's working and producing the same sounds that I got earlier...

EDIT: Some of the outputs of the Superpack constructs weren't connected correctly, as far as I can see now... Still it tought me a lot.

Thanks for the feedback and advice in this thread. 😀. I need to learn to think differently about design, DSP needs a different approach than software algoritms...

sambean ·

I was wrong about the stream delay being in the freeverb..

Here's the code for a simple delay:

streamin in; streamout out; streamin delay; float mem[44100]; float index; stage(2) { mem[index] = in;

} stage(3) { index = index + 1; index = (index<delay)&index; out = mem[index]; }

I'm not 100% if I've got the stage orders correct, but it seems to work..

So instead of unpacking then repacking the delay, you can just use one code module with the above code and connect using the mono4s. Max delay is 1 second, this can be easily adjusted..

sk0re wrote: Now it could be even easier with that fractional delay, but I can't get that working atm.

Have you tried using the code I posted in this thread?

Good work Hans, thanks for this..

Just noticed though I'm getting denormals..

Cheers

Sam

HansM ·

I uploaded the new osm and capture at the same location as above... So much more pretty now...

skOre ·

Glad I could help out.

What exactly was wrong about the Superpack?

HansM ·

As far as I could see, some of the left and right signals were mixed up... You treated the connectors as L1, R1, L2, R2, etc, but they were in fact L1, L2, L3, L4, R1, etc...

Anyway it was a good exercise for me, I disconnected all streams, labeled them (L1, R1, etc), and then reconnected. It took me a while though to understand that model... instead of grouping together what 'functionally' belongs together, you group together the things that can be processed together 🙂.

Shifrin ·

Looking good! This is one of the great things about SM using SSE, you can get four lots of delays for the cost of one (or filters etc...), well provided you're working with mono signals with respect to these sort of effects 😉

Cheers!

Shif.

skOre ·

Well its not really SSE by now, I can't get this to work...

Can somebody check over this schematic:

http://www.skore.de/synthmaker/examples/HM%20delay_sk.osm

?

stefan ·

Shifrin wrote: Looking good! This is one of the great things about SM using SSE, you can get four lots of delays for the cost of one (or filters etc...), well provided you're working with mono signals with respect to these sort of effects 😉

Cheers!

Shif.

When it comes to the actual delays, it isn't really at the cost of one. The memory access takes quite a lot of the CPU in a delay, and this will quadruple when using mono4 or poly instead of mono, if you really make the delay a mono one. Not doable in the code component atm though, just explaining the theory 🙂 You CAN do it with asm, but in the general case, I think a stream delay is of much greater use than a "true" mono delay.

skOre ·

ah, maybe this clears up why my second schem wont work...

fritzman ·

stefan wrote: Shifrin wrote: Looking good! This is one of the great things about SM using SSE, you can get four lots of delays for the cost of one (or filters etc...), well provided you're working with mono signals with respect to these sort of effects 😉

Cheers!

Shif.

When it comes to the actual delays, it isn't really at the cost of one. The memory access takes quite a lot of the CPU in a delay, and this will quadruple when using mono4 or poly instead of mono, if you really make the delay a mono one. Not doable in the code component atm though, just explaining the theory 🙂 You CAN do it with asm, but in the general case, I think a stream delay is of much greater use than a "true" mono delay.

Hm,

I don't understand "stream". What is it? Is there a performance difference between poly, mono and stream in such a "mono" case like an FX and why?

Best wishes, FRitz

Shifrin ·

stefan wrote: When it comes to the actual delays, it isn't really at the cost of one. The memory access takes quite a lot of the CPU in a delay...

Good point, I'd totally failed to consider the impact of the memory access! Thanks for the heads-up 🙂

Shif.

stefan ·

fritzman wrote: stefan wrote: Shifrin wrote: Looking good! This is one of the great things about SM using SSE, you can get four lots of delays for the cost of one (or filters etc...), well provided you're working with mono signals with respect to these sort of effects 😉

Cheers!

Shif.

When it comes to the actual delays, it isn't really at the cost of one. The memory access takes quite a lot of the CPU in a delay, and this will quadruple when using mono4 or poly instead of mono, if you really make the delay a mono one. Not doable in the code component atm though, just explaining the theory 🙂 You CAN do it with asm, but in the general case, I think a stream delay is of much greater use than a "true" mono delay.

Hm,

I don't understand "stream". What is it? Is there a performance difference between poly, mono and stream in such a "mono" case like an FX and why?

Best wishes, FRitz

A stream is a template data type. You can use it as mono, poly or mono4. This makes components using the "stream" type very generic, and you can use them either as normal mono fx, or as poly fx etc.

You can make mono stuff just calculate its stuff for the first SSE channel, instead of for all four (not in the code component though, atm). This makes a performance difference when doing for instance a delay.

fritzman ·

stefan wrote: A stream is a template data type. You can use it as mono, poly or mono4. This makes components using the "stream" type very generic, and you can use them either as normal mono fx, or as poly fx etc.

You can make mono stuff just calculate its stuff for the first SSE channel, instead of for all four (not in the code component though, atm). This makes a performance difference when doing for instance a delay.

Ah, cool Stefan. 🙂

Thank you, FRitz

Shifrin ·

stefan wrote: You can make mono stuff just calculate its stuff for the first SSE channel, instead of for all four (not in the code component though, atm).

Indeed, I used that when I wrote a mono pow function - only calculates the first SSE channel.

Shif.

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.