Problem rebuilding Reaktors Skrewell in Max/Gen
The last couple of weeks I have been trying to rebuild Reaktors chaotic sound generator, Skrewell in Max. A bit of work, but gone pretty well - until recently. And now I am really stuck. It's not easy to explain the problem for people that is not familiar with the reaktor ensemble, but I am hoping to reach at least one person who knows both Reaktor and Max, and can help me make sense of this.
The Skrewell ensemble has a parameter called Flow, that shatters the sound from a group of pulse oscillators and creates a chaotic structure. Flow controls multiple parameters in the ensemble, for instance frequency and amplitude modulation and resonance for multiple filters. I have patched everything correctly in Max, but I can't recreate this chaotic structure.
I tried to debug and found out that what causes the chaos when tweaking the Flow dial in reaktors Skrewell, is the resonance parameter in a 2-pole filter being turned down. This is a pretty surprising behavior. When doing the same in my Max rebuild, it behaves as expected when turning down a filters resonance. So, I can not seem to wrap my head around this.
Someone in here have any idea why this is happening (I know this is a pretty weak explanation, but hope someone has been playing around with reaktor at some point). I also know the creator of Skrewell, John Nowak, was a part of this forum some years ago......
How did you implement the 2-pole ? Is it inside gen~, or did you use biquad ?
I have some idea of what might be happening, as I dove into Skrewell a while ago... Include the patch if possible.
Hi Hugo, and thanks for relying!
Didn't get further on this project after i posted this question. Since then i have moved to a new computer, and for some strange reason the skrewell-sketch i created, doesn't work at all on this computer. Have to find out what is wrong before i can post the patch.
But to answer your questions, the filter was my first challenge. I read that the reaktor filters was modeled after musical filters, and sound more like a moog ladder. The max 2-pole are more straight forward. I ended up finding some good sounding ladder gen patch, which made the filter in my skrewell rebuild sound almost like the reaktor patch.
I first made a neat patch using mc-objects, but ran into lots of problem when trying to create the feedback loop, so I ended up making everything inside of gen.
Wil try to post the patch in a day or two after debuging it....
That's what I was gonna suggest — [PM.ladder] for example — mainly because of Q parameter behaviour.
Yeah mc unfortunately does not derogate from max's reticence to feedback...
Anyway, still curious about that project. Keep us updated :)
Really interested about this too.
Do you think you could resume what is the main architecture of the skrewell patch ?
Hey Zangpa,
I'm a huge fan of the Skrewell ensemble! I never tried to port it to Max, but I did port part of the TG-8H ens a while ago, which is a spin-off of Skrewell. For what I can tell, a pivotal part of the job was to get the filters right: being a sound generator tool based on feedback, any minor difference in any of the modules makes the result very different (butterflies, hurricanes, and stuff...).
The job was easier for TG-8H because the filters are built in Reaktor Core, which facilitates a 1-to-1 porting of the original ensemble to gen~. Skrewell, on the other hand, uses built-in Reaktor filters, which cannot be cracked open.
My suggestion would be to set up some sort of debugger - try to compare numerically what you get out of Reaktor's filters and what you get from Max filters: if the values are different, try to understand what must be changed to make them coincide; if the values are the same, maybe the problem could be somewhere else.
Check out also what goes on with Reaktor's filters not only frequency-wise, but also amplitude-wise, as i suspect some form of saturation is going on with their filters implementation
Hello, pure data user here... I'm embarking on the same project of porting Skrewell on pure data (purr-data actually). Even if I'm not dealing with Max (I would like to, but I'm on Linux :-) ), I'd like to exchange some thoughts with you since we are on the same boat. I've both the reaktor patch and the pd patch running in parallel. I started building up atomic macros in pd (filter, smooth, flow...) and checking that input/output was the same than those in reaktor. That was the first step, in which I made some kind of UT/IT tests on those patches.
So far I'm almost finished with TG1 (including the lever structure). The first difficulty I has was to address correctly the polyphony of the 8 parallel voices (which I'm unrolling in 8 "scalar" voices, 8-tuplicating any structure explicitly). Second difficulty, feedback. I use the explicit "block" object, available in pd, setting it to "2" samples to make just the "lever" feedback loop. The outer feedback loop (the one that involves the crossvoice macro), I leave it less tight (I use a delwrite/delread structure for this with 1.5 ms reading on the delay line). Based on the results I got, i think this is an acceptable trade-off. Third: as pointed out in this thread I think the most critical part is the filter implementation. So far I use one prefabricated hi-pass (2nd order) from iem-lib and biquad for the LPF. This is where I'm not happy with my implementation, since I guess that many scalar values that go in the reaktor objects behave differently with the pd filter implementation. Fourth: "pulse FM". In reaktor that is basically a square wave generator (the width W inlet is not used, meaning 50/50 hi-low and the P inlet is fixed to -300 .. ) with modulation index left outside of the object. Last point (otherwise I become too tedious) is the controls responsivness. In reaktor everything is very responsive, in my implementation first I have to transition to a chaotic behaviour, and only after this I got responsivness on the 8x8 + 4 controls (osc, filter, delay, flow).
Concerning the "Reaktor's filters not only frequency-wise, but also amplitude-wise" that Matteo raised yes, I think some measuring of the filters alone would be necessary, by injecting different stimuli.
Best regards, Alberto
Very nice Alberto. Would love to hear it !
Zangpa : Any development otherwise ? I'm almost over recreating in max Reaktor's Steampipe, will share soon. I'm curious about your filter / saturation finds.
For now, I'm using the simplest possible HPF & LPF algos found in the vanilla gen~.filters
And [tanh] for saturation...