Remake stock Phaser Module in Scriptnode
-
I love the stock Phaser but I'd like a bit more customisability. Any ideas how to remake it in Scriptnode anyone?
-
@DanH 5 phase delays in serial with a feedback loop will replicate it to 99%.
-
@Christoph-Hart thank you! And the two frequency settings? Do they control a number of delays each?
-
@DanH they are just the lower and upper range of the frequency sweep that you can modulate as you wish in scriptnode, the phase delays are all set to the same frequency.
You can also play around with the clone container there to increase the amount of phase modules or introduce spreading, but for the base replication you wonโt need that.
-
@Christoph-Hart ok please advise me on my fumblings around with this
HiseSnippet 2213.3oc6ZsDaiabFlTRiesa1toYaPOJf1CNMKLrrjs2E8fjsrkWgXYoJp0YCJPclkbjDgI4vRRYuJEEH.8R5odN2J5sdonWaOsmBPOTfhlq8POUfda68.j7ObHoHEornkkc8tXsAL773m7a99eNblVVTYhsM0RPbkNCMIBh2EIMzvoe09XUCg56IHdOTCrsCwJOuqcGZhssIJBhhYOf0g3x4Db+4Uk2EqgMjIi5RP3XppL4PUcUmQ81pxGopoUCqP5npGZ1kpTWlZTkpQG.3IKZcASr7o3djivrokAI7DrceAweB5wcK93Gs053hJORlHKWp6lauUIbgRE2DSdbwt3Bxjs2bCY.jKruhpC0RxA6PrEDysKUYnTe54F7Wvwp1pOWivZTPPBdy7tqQ0TXKQ1+KTsuplRKehxVPPD0ZDskkSaO.0PUQMn+Qz28cGH+HIBSfhYhBurQfWgIAuDfjXHHkiCo2EIIaoZ5LZDFdtCptAnM6hA8TXnvmqf3KQUovDLbVSGeJolEzHPfU2Z80eXd3OevOs6.CYGUpQdpwQTGRSiU+fU9Uqr7J+5UxO9Pc6l3XrWiEUSiXk3vLSCqKRvUMFn+bh0CyeFVa.IXhvxOJmtP53TY9pNzDoF0MTcZZR7ZOxnnPBZ.AOZC9umVeOrCloT75ClmIwxQkAGw8HmAtDbUzxn8H1m5PMAmhX5OvxgpLPC6D0bh4z4M.vGQzgLEkgspyvvNkiaikax7w5I5Bj3pMkv8cQsTcj6mLdyj.dAV65FuddruCZ+tcIxNi.aNTsmcgtm4RmozThdjMN2shmqJ79Y.4tdMyW6YERzI8KPibHLsHlXKRGZKM7vUsw5lZj1.deX9mqQkOUR8yHw8hL4PXW1LVUtO1vfnYOKNaKLmBfIzlNvQ0nWCrik5KfPrGMPWBxCHSp5gNnOwLL+Ld60YsY1KRDCE2FeK7i2fEXsE8Frf+fgbQOh3bN05T2Hmd+uf3hLt+cPsdxNR629jN6K0QXGMM54Uo5lpdlufRvsuVTsgl8oFpxrt3yvGp6nSG.uEO7B4r5fU0X16RCrgnIJMMjfI6lnTL6wDKa2G7hn0WC9Er+Ohp.CsXMrLvrCagc5ybjXAn.KUh0ZxAVrQAaXKEdJyniydt9YW4bGfacFgvxsxzZsvVfbPzdVfpLtVp9At3oXXs.u0Lbqz51GyFUFqIbLytfIj6agyqtKiEXScQjsoFTBvDWR7giu.7E7hgdTfFffLQP.m0lBolDB3ibYPvkkpxEBnKirHxD0yHiCUKtCxZ9CGGpiDcJfMSD5JjRmgb+VvRugpgGXGEdtA9Ei02qJK4PLYwYBOOoSImyWAgmIaEtBpFgn7bnzNgfmz27G+e+yF69eJuGoKdflSr2pPHFZItFYiKutLPxqSkIxy8kW6rYerM4DEBDadqn.99ntuXsPCmn6a3wuXP6mzgk0Jcp2khqdKUIl58K95Jiod+8e4W9WJGS8V42n+2KyKvrlE4WN.huMTHzi5GscwS97JIqeGVYmANTcHEhR.UlDCt4MCCl4MWFr3aYvqHCV5sL3UjAK7VFLkLXXHGNC3BHanLxnz38BJPvcr3jnmPWlRCRH0GTBsAwcyAAKpfpNRBuKxK9pGj1cL89cfD1Vj05Moxt3hLOT1YuXk8m7x30z.0ujFk8K68m+AU3ZD2uEVrmxjpmYB54zVyUkeW5LF+z2auu1yXTRmRc5C1GBwr0SFjkpLEbMO3s6hZSrIdu5TydSzPyq.uBW9RCQnF0eV5Kw5JUgXlHEy9htXEfgGKlnLee2q4MZR0x5MzkpV1LigzuGae1gXSOvx24pvXSdA1W3IPMgPsaHA56yYefmNXqdDG22P3N79FXdQLri1ziHpy9Jstd6iTq79bcoDlkmmeziDefWlDAyi86rHZLy6ewes9cy7g+gxoK3Pj398hsG1KNLpmDy99Aeary2nicNwFhKFdAvMiq0d+eVAg4uSRLQSF6up7XN+BICwMtMCwbnZ6daFe77f2d.3DBvGj8KRDd+HswVUKgNr4IUeZmayL+RnmT+1NFAqil6ccBvu5i192tym+uRs0AJQqiw9raQrQBusLgoK8lWIoKdkjtzUR5BWfz6RompicO+iq7oUtTv8FPkczSGL5dCv6H+AtkhE9b+hduA9jWtm695CYk7wpJrZaBlQkDtYA0MNCPYKpF1Z7SPL675T0yk5i4jsjx+Zywx98QtT9qS.10j30G.eeTK7sAChahiUMDkrnejhVr.QdGm8c3sF+zryDDPpP.O7o8qDz6FA8tvWUI3HiBJM9uUtAaEEh.ydMdYZlfUIegcMoluD2ofvH99bDiPGVqomsH7e4CvegoCxQoJB57eWlcgspaDdeTeL9LRWpktmROP7CI8fWT3d5PzMoRCMjiTKf+1phdMvdPkCoTy8Mv.MnD9g3R1M61E1zSjGC7X6P4WRsprKzPjrD8LfsGyuhRg6u5.aXWj9K.9AfCkq3lJT7mi1pzZvOc+P1eebU3OEaNeZKL+txWYRoU564p9CzyLCga4AO4HNvH7+mH9FN9483rxcfZmLHtWDSWB48cammYtl+.hAwJtebzZp9Go8tXZl56hYSYG302wBaXaRsiVTOQWsC0fw5i57oP7ePC1lEWLhmGEak3PPXGXQlnLRXmAVtAX8uaMtik+Ocv+MVX+TFPM50nKz7mRYfy0664MbIIW0qNX1zA2ojeZYeLx2ev9Pc7ZvNNBJL0cme98F0HuA0f5eqqFYczl.Nm85Qh9kWSZAsiiCNb9gGToMQifCaM+iqbHXEhsb+T2yFWLmpt3Gh3vMOyyL+aFW4yruAckOukkE4l3cniksnm3c1TLa4kb6AV2Fd2.sFr14KHb13efHcHp3IxxQeTwDbiYUvhypfklUA2bVEbqYUvsmUAezzEjkzx6fUXtrBBMZsOuXXwfJwEyJ7c.VqTbL
-
@DanH There you go:
HiseSnippet 2642.3oc6a0DaaibElTxibri2zr6lVrG5AAz8P1tAFVxxNwnGr7exQnVwpVJYy1BTuSHGIQXRNpjTNV8Gf.zK6sdduUzSs.EE8Z6obZQWTTfhcurWJPOUf8V54Vf12vgjZnHkL0uwsvN.NlyLugeuel26MONSUKpBw1lZIIub8tsIRxqfp00zo0dsvZlRk2WR9VnJXaGhUVdS61sM11lnJIKm9PVCxKsfj6OuZ6cw5XSERuljjdBUSgbjlglSuVqV76poqWBqRpqYHL5BEKqPM2ipS6.3IMZMo1XkyvMIOByFVJjzCw1sjj+1nMxutRA06qlO+FasoBdSxVMvMZjac0BE17Aaka8svEdvlj01PRNyApZNTqZNXGhsj7B6RU6VqE84l7WvSzr0dlNg8PNoZval2bIptJiEYsJsWKMc0p9BJaIIYT0dhszbw1cPUzT0BZum361tcjsGEhBP4TggW5PvKmH7VS.dw.IYAHs.GRuIplhkVamd8vvyMQkMAsYCLnmDgBerRxuDsGEFfoypF3yHkrfGBH3tat1Z2KK7q266zniohiF0LK07QTGxwl288V9mr7RK+yVNa+c0nQr8wdMVTcchUrcyLMrFFg20riwyHV2K64X8NjfABreXYJZvxTQUtBmqEFH0rrolywsIlCxPPxSTA+0iKuO1AyTDdsAiqMwxQiAA48ImCKC3pkkP6SrOyg1FVHDQmAVKT0N5XmvlPrEZdc.xfP5MlxwzVyoq3BwolcURg3ahpp4nzJdLlJFLBRpYAF8VM9FnCZzfn3zCfKfJ8zYzRuzQkQK6szCdmrW9JdOlszSyE6htOF0y.usEoM1hTmVUG28t1Xi15jS.LdurOSmpbVMseLI5ph1bHrKaD2UoE1zjnaONKdxjXoRtgqTNg1wQyrYErik1EvpvG0wnF3WWgrmG5f1jSwVCwedM1yL6hZDSU2G9OvOdcli8rrWm476TX42iHNOmZclqmPu+VRdQlr+MPUe3N0N3jSqePs5R6nqSe9dTi1ZdlofRvsspT8tsaQM0TXMwGgOT2wf1AdKd3EhAUGqoyrqq0wF7NndrYMXvtA9jS+Dhks6DuHZsUg+A14OhpBcsXIrBHY6VE6zhsfg4vArNIVqpDXkFFrhVJ7Pfg6mMu9QK4xN.2FLABKVISqUEaAzAduYNgR4Zo56ThGxf8DrpLE2Jsr8SX8pf0kdBytfQj6agKWcYiL7bBZvl37m5ZRJEhydGANKznhxN8MMCmelLzmR.82.4JwWW5RzHQAb.kyKntLxfpxQSHvdGAvFLhn3Uf7YIhSKf3UPTaEH8NV7gnBXKxpBcGEvgndTfLqKvQ4E9Qg2WytM3+b2NPb.dBRgZgwWlpjK7ckb.3MTER4ykbe2KBqd.lK3IXobEMSOoPu3YUvWzWa2tXMGRalCawXy0Ni7btbQrUlnKCKxJQJxLuOoAtitSj1kFcH8tw.Ivq5.gzMQkrH+nNfyst8iq+91whqWbVwKAWuZ6n3ZsQTTshKtxdByItTj4OdA1q1dLDX.HFQc3gPjy4NjFlNbQT0VX6Yqc0nhoLtozNBhIAOLKgr0ZlGbrE18xsPFv+upeeQ8szitKwwRpPNVB4EPddnt3SPxUWBxlLn1DbeAjuI2uqaGQkJdTbIhjEBIR5klecrUShis29dLIJ7jpbCgUVkEvzPyz.eQOoHqUeVbV6zN7Cgx.vCVgDT21MnJjc7pd8FWB.dcMRwlhSdkIV40sPsYqUOUk.b8lgkZh9hktbp2Xhnd8Ih5BSD04lHpyODpGXD8aLmVK+a+lee0+0m8kaOn0x6zwgBtw3aaVZ3.rPwH.7i+hDDe+O+S+p6+yM9Kay8kByqlQGCoHS9UHHhuHFHBSzfhVLPH1uK6e4m7I+gsG6rjd4Ru3y8hlw56JUPe.Rv3m6w7GVpQKifMYisXkAZLfUedvWDAAFzbF7V33cG0CtOgijC731Z1hnX1WVR1DoOgyxcjsPn7krHJDsyI8CUKdIZV0u63RYxuuoSJSyH2rKiJQHpOCqbVOKq+8u4e94U18ejPOsQqNP9wt5.4mAZ1zAZ1LdUShWFlPYKzWxLMtXUgtisZRh8ObP6+EQXENcr00IJbfqO4H55h9gCFvNR+V2e8Sew.BHzsXbJ6nRvMtVBNgRv0uVBNgRvBWKAmPIXtqkfSnDL+0RvDJAGT1oYP1DyH0mxOeK29hqRLtcLJYZESxCBaP1G7AIwEGdWjmKaSHwkbwV2nlCJKVNISCkc5gqr+vWFMEQHcvjnreYye+Wu3fK33f23Qh2BY7ovV7WjLiwO5s2+K7LFqYPoNs.6ijtU7BWVg1mFxsUPmPrINiZIIGjglWJx4F8jqQnJkeZxs1lhervKZfUIVCpTgd8F2tA75Zj1MPp9P5Wi8gyEjldfk+onk5avg+.RHzIUpA56myNYF8J7XJwFBW31AWG2Ltq1CWYMukTRiy7468H1Ibdu8wHUo6G9GKuRp2+WM56czSLMBtQ8nX72d809N++ZemI6A4EE4FtMcoSN36kSZ5WS1vj9QsFXUXSlmf3+BQ8pKsT7bV9YNm8Ve5rhy7JmcDNaATockl9t3BH8OoU+c+0a921dxXqdoSFhuDpAWDFiG6dFxYWVA2SpByKhc7erx94pafN53S26w0uBwXwfwGV9pNFAqii2e1CvA4wMJ.2kROy.6dZBm3y06MBNU8ZrO08g8NU87FxdnadPhmV1vmp9O7k66toZA93CzTYIVDLhhwbt6KadNfxfO3h34tM8T5Hd5dn.R1gClwRYuRe.leKjqX9pNHcU8WsA4sQUwutT1yiCcrfXXQ+U9tGvJuC68M4O0+Y8NUPwlxIl7TPq4CZMymVLHTZPdle11UXbjfPapsLVNwVebFaFoZGATdaNJQniJcrmMG7WYCvbtKGX8J8mvAZjckjJaJtQjO.eNoA0xvSQGP9QjlvKRrk5Di1zZcMUBEXxeeIgunS2o3QTZ6CLw.qqJNItB3iaz.10PnoAl15T90vZO2iJsnm9llv9K4WBGw12qiMrMLeFfejvgXm7CK0O.sYgUgeZ79reu0dvuV+3oyyRSOcdpDZY91tp+.8LyPXzMMWHYdcF9UCSZjPbfQ3qSDOm8YdKtTA1ytlIw8pF5JP9FtOmkYtl8PhIwJ553v4E8WS5sMrchusgGq3.u95VXS61T6vYXRLzpSMYR8dM9XvmOnA4GBYwUdTrUrcAtc.lLVZpgc5X45T0+1l31W1e2geUDW8KjrETWxkXbgY0kXbttP503ciKTHok7wHOs9Cfzu0gMJDjao6NO7aMrccEpI0+pG0yf3DBrdrYSR3pUFGCsiiCVLjvcJdBQmfsCcf1NBL7vVtkGdlGddX5q2AwgaV1hwIJUh4pY1PueioSz8abpi2w+tN9+NANlGuCCrhE8TuumCyV9Fts.7so2gfqB64r4jNu+JJX.dEOUQI7TEgv7iKgqOtDVXbIbiwkvMGWBu+3R3CtbBYAs79XDrkrRRUpd.O+W4fjukSK8eAHF1RaK
Some notes:
- you need to use frame processing for the modulation source (or if you're relying on outside modulation, use a smoothed parameter that smoothes the frequency modulation for each sample, or you'll get zipper noises. This makes this a prime example of an effect that should be compiled to C++ before shipping.
- I did some quick & dirty A/Bing and somehow the feedback value needs to be twice as high as the HISE module one. Not sure why though...
- Remember when I said, you need 5 phase delays? That was a really funny prank from my side, you actually need 6.
- going from there you might apply some skew factor to the frequency range and other tweaks
- I haven't investigated the mix parameter, but the combination of RMS with a skewed gain range looks off to me (the original one uses plain linear 50%/50% mixing without any skewing).
-
About frame processing, why do you recommend it here? I've yet to find many use cases for frame processing aside from cases where you need access to both channels simultaneously to process each sample... You said something to do with smoothing? I'm just curious
The default c++ node has frame processing set up, same as the snex node. Yet I always end up just using process in 95% of my dsp because I can vectorize each channel and do things much more efficiently when not interleaving them.
-
I've yet to find many use cases for frame processing aside from cases where you need access to both channels simultaneously to process each sample...
As soon as you do modulation that should be sample accurate (delay line modulation or FM), you absolutely need to do frame processing. You might get away with a small fix_block container (eg. fix_block8 or 16) for slow modulation changes.
Most of the delay modulates are not smoothed by design so that you can implement these effects properly, but they rely on a smooth modulation signal which will get zippered if you're resorting to block-based modulation.
-
@Christoph-Hart oh and also when you use the routing nodes you'll introduce a latency of the current block size so in order to get that down, you also need frame processing.
-
-
Ah yeah yeah.
That's fine then, it's not an issue in my designs I don't think. I end up creating systems for the sample accurate parameters which smooth and then update the internal variables of the dsp. And sometimes I create per sample paths for when modulation is happening.But that's very interesting, i never thought about it that way, you could process left and right in one iteration if frame processing. For sample accurate changes that indeed is more efficient. I never thought of that.
Edit: oh that latency thing is interesting though I'll have to investigate. Although I've never used a routing node.
-
Usually as soon as you're doing more than just trivial stuff, the overhead of interleaving and deinterleaving the signal becomes irrelevant compared to the actual DSP workload and if you can't vectorize the stuff then operating on a per-sample basis is more straightforward.
So if you eg. have two rampers that smooth out the values for each channel, using one ramper will compensate the overhead of deinterleaving the channels.