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:
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..
}
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...
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].