Group Project: Reverse Delay
-
Hello Awesome people!!!
OK so here is the idea... I have seen it in the forum but there did not seem to be much movement. I would like to incorporate a Reverse Delay into a plugin. Like the kind of guitar effect where you play a few notes and the playback of the delay is reversed. So here is how far I have gotten and I would love to share... and would be grateful for any advice or help in getting this thing to work properly.
I have managed to get it working 2 different ways.
HISE MASTER with Faust
The first way through scriptnode Faust using a DSP of a reverse Delay from GITHUB under a MIT license.
Download of the DSP
https://gist.github.com/tomoyanonymous/d527fca58e929de6a021565505589406HiseSnippet 1317.3oc2X0rbaTDDdVIM1QNFSBUJJNtG3fSUFWRPHPUbvxV1JnhHaUdUL4lqw6NxZPyNyxrijsfheNlC7NvC.uCT4cfaTbH23H4NGB8ryJuqrULxJFe.6pboo6dl9a5o+5tkaqj9z3XoB4TtynHJxYYr2HgtW8dDl.0bajyJ3VjXMU4ZEs0nHRbLM.43T7QFANkKgR94karEgSD9zLQHzARlO8wrPlNSZ6ZeAiyaPBncXg4r9A0Z5KE0kb4..OEwUPQD+9jio6RLlU.ibVXm.lVp7zDMMFrYKYvHudxSDV6OfEyNhSMKph7fCxJFUuGiGzd7cMFgbvsyt4Es276gawBXmIOKBbmDEtY6HeLvovkAopWAH4jCRkrP5tXOeEKRmowfmaiaJfGjtDHTmGJVaQNOGWWBFHzqGR5SanfEmsgUeXkJq4B+49eV2ABeMSJbkhckZ5dhUu+Re6RkW56Vx87p51cp5LtQI4bpZppMutpKaiqJFDdDUsl6PBe.8LCgq+jwzElsXpu8VmyPonofo2KhlttgjGXhUlOewW.TZXC9zSZtMQSLOJox.6hnJMy.GmsoCgrZ6STY71z39ZYDjWeg2OHyQFLfSzSlNY3MoJf3wDuglGJQLSOJOu574Xkd8wiJ4hG+K21YDt2E2lo86Mc7VXJ3EhZyNmnxkxIPWjk9V3c51k5qy.XIbimNuTxJWYJ4RoTRvmFmub5R2FOs5TIiOCmk3GonQDEsirMmLZ0XRXDmtOfw0bOhK866w9F5EYKQVHrkwhU86QDBJOddHUKbMUnBsubflINtEQqXmBkR2cPnGTx1mVOEcfLmBF9jccEyZSdgGUDjr3UvOoJqZV6jpr5Xk4nh6R0mHU8SdNR+LxYQarONIHeX2Sqh1jykmTWFFwRyRg2fDYsk7QQ8jBluQj0hwHcyP4.vIov8yIwcHLtIs1aPLTzHXOgGXbRKMmhGPUwIG7h3JqC+Bo46JC.U3FDeHvNpMQ2yvWL0gfjSpZc+yRRm.q4ySLGw3Vd1nD.wPyUOogWwbEdr4ilU.aqf8TaFefQqOgiNv7da.Oxbl13kEeFSWD2kLHVil.qKCXUQW2pYtQUgygpx35b3jZFLFRqfUzgPziFPgD+DVcd6eaSFTahB5xCcohGuKqeQ4T.jvyVA4ysXhTSyJ8zhb5Dxdg7Oq4ooQFtU9Rpd8omXCE4kZ6tlfRsYzjIO9m8a0PWQ+Wa8W8WabN++hVG09R7eIb2ix63e7N+vW8GabUcr8RdkbLFGBz47GxO8q+7ueS34agigRij.zENaj2IllOcHpio53ykMf1RJ6GRRpM7F2wdEqxai8.laxHvI712MYs6WRFRceDE3zlliUecSA+7+96+kYcJ3nYdJ3870f66nHh3HY7DGrGMj0QJL2wLgOIFF5i906apClWdcIQMUUubiFvkbp6winGnRJnNtVYt17Em4wRx2QYxoexY+TZ.W5+pwzuQGg5MehuqmQXJOFidLynG6HFR4.IIAiuCvJf9.b8XoSlj2RJji6hlkArOEFA33ioSxnm1EZSsF9tbYRtWs8obJIe176W6wPVHQ0Joo0bEKt5eCqo9d8dXKbcMLS2+eLodwYZR8qc7N+Sse8.kahYUuI7QHwWIOz2NhuIW9VIRf6sH4eNRYbKyZ2pngoSOYFREEBUDOz22Dt+.H9L887gywd9n4XOOXN1yGOG64gywd9j4XOe5ktGSynMGnkgVpHHn8NIin33rif.YxIY8n+AfyMMyU
This works but I was only able to export using the Autogeneratedproject file through projucier and then compile to make a hard coded effect. 9 i will post the forum link if I can find again)
I was able to load the plugin in Ableton and Reaper, but there are clicky artifacts. Any ideas on how to reduce them and make it smoother. The artifacts are in HISE as wellThe Second way I got this kinda working was through Script FX
HiseSnippet 1422.3oc2X80aaaCDWJIpawsqXcnXXOxG1.jaZRs6Z6FPVPShSbQvZZLhR6JPPPAiDsMQjI0nnRa1P1Wn8knej566gsihxVTVxdNdY8g5GBJu+P969w6NcrcDbeRbLWXYu7QWDQrruki2ELY+V8wTl0d6XYeam8wwRh.oEs8EQ33XRfks8hOSIvd4krR+8gmtMNDy7I4hrrdEm5SdNc.UlKsyl+LMLrMNfbDcfg0OZy874rV7PdBfmEcZXEg8OC2i7BrxrEbrruwtATIW3IwRRLXy17fK75yeKSa+qnwzSCIpEMs7fMRK1pUeZXPmgwZrkksSm7HeQcjeWm8oAzQxyYfuLUAJ2CSNvdgoAolWAHYa.okzP5NNd9BZjLWiBO2zYOFbgzECTsITz1ZY+dmVbv.lbsA3yHsEvhQN39jFMtOB9S806lv7kTNCwYufKIGvbqW62qsbsKqgFWU2tUpScLBdXHQToZ0sqXZN5xRFbJQbez43vDxHCgvuHmdiYiS80Qsggb1dLp7fHR1517v.EWo92kuArxnM3e8x81AKwpKkLYfcQDgjpfi8NjygrZ8UzxN6PhOSxif75R2ePlCOHIDKKlNopaxT.7Qg6P0EEKlJuvrtZ7brklLezvfO9Wh1YDt2woCU52uZ7tPE3EXsYulnwTqIrJWk9EN61sKwWlCvkbZ+54sjrwUtjrVVIIblpC+VYKQsecypJFW3telCjWFKgbbAJFOHJjbH.KzFncY8nLxZ8HRuQhcqudsbyCHg3KTUQdDevgGtNxP4oI.OH7n+lZuhvhXBbW3ZbB2qf+0AmGsmam5K32wmjI9sBpD1f.x6.oMxDJH3fgxVsYlPZr161Iggf7t3vXRlJeAONtKzW+4DVOY+IhqFq03w.ddvCzto73fDoIbTh1iMTRMiVGpB5zdJH3WWtvMESZPSQ+jAs.qWYk5HskpeFg9ZQIw8cAb.7sR0ko+cR64XwUoMdHhekpMF3FE8fR9LxXcnoAvHmpWTOvFZCZhVEMtQWB8HyYjHAAHYxQ7NPvYPy2GcZH2+LEQTtCbjNsdakEt98wLFILdXDohFnwrNoLFBmgFbbiSVKLKZlDUk6XIVh1E4Zl7XpaH4axnoLX6T1RmB5ZjxuhQx4pEzr53Te85nuyLsnzAQiakcTTVOU7V7fKe+WqvVTZ+RyyHAZd.1Oi7tiGg5SJhCM4XfiwXmxmznL5Qmz81HK453hQvXGUYGWoHFcyo1UJQlE3xSfh4r70oelWNEJyH85X5IC4qgfaZjsY+IWy7gl.vyQ4zt+U7tw1rgQivptAlPyuwMqTiyhbQErRUMoNNGKmTrLD3o0qv2BMwcMVsBp4jHAEAX5GTIOdfOVPKEIlw7kiZJcUlvy4ZZpYqC4IRnbYerTPeGruu.Z.AuevmzJit.Y1KnFtSutgZsZHEOBKHcweC+xT1Ts1NSYygJuFmK71Zk2zwC9ze5CsRmh3qSWi9E74DzyHLhPMBVyI8Vq2+W+weNqu0JZleq0A9R33ORfYwQ73BarGY.8HNSEi4BeYL7zBxudnZlPS4s3pu4WgpO7z1PPVoOdXYhHc3xsFvSXxBCSt3LO7qYpRwYrMruhw7V5+qGC9QcP8+6uq35YP4kGhQOppA9tryIgPQRJF+JnpnKNITNTZwj784LdTeNi5alAbHAps60iHLwdkAzVRI1+rbI2cyCIgDrY172t4ygrPr.3IxbxEW82wW48023ngKRUYh9z38fKNSuG7ZGuy+aCudfxGiOB8w3LFfgo3diu9a2pb4OOUBD2rz+K3V1Ye0ZTSqzumC94.ugxZ.zQ7M99J5dUfep1mGNG978ygOOZN74wygOOYN74GlCe9wo5i5iQakH4CzkhffN6lNhhs8tLLjIml0a8O.vGEf2
Its rough and it works (Really badly). (Play three notes quick and you will hear them in reverse) but it is like the sample rate has changed and its just fuzz. I am still in the 101 and experimenting.
Well that is where I am. This has been my obsession the past few days. Open to anything.
Best Regards,
A Fool.
-
@WaterSpoon I have been working on a reverse delay in RNBO/Gen that I am pretty happy with. Haven't finished working out the Scriptnode network yet (for tempo syncing, etc.) but once its done I would be happy to share.
-
@HISEnberg That is awesome!!! I have not yet messed with RNBO yet, going to check that next.. Glad to hear you are happy with what you are getting and thank you for sharing notes. I know this effect is possible. HISE is one of those door beyond a door, beyond a door things. There is a way!!!! Do you get artifacts with the delay playback?
-
@HISEnberg So wow!!! RNBO was the way to go!!! I have export some of the guitar pedal effects and was able to bring into HISE. This is an EPIC addition. Thank you for steering that way!!! i am going to focus on learning RNBO and building the reverse delay in there. Awesome tip. It still would be cool to get working in script fx.
Well, if anyone else has anything, thank you for it!!! i will continue to post any progress. Cheers.
-
@HISEnberg Thank you for steering to RNBO. i found this video and was able to recreate this as a RNBO c++ export and load into HISE!!!
https://www.youtube.com/watch?v=hOX5eg7QCqM
This was great and Kudos!!!
Some things do not copy 1 to 1 from Max/Gen to RNBO.
This is not the MAX forum so I will spare everything RNBO talk. But here is the few things I had to trial and error... and would recommend...
- Build all buffers in the RNBO patch, not the max patch.
- Gen stuff in the Gen~ Object is all the same as in the video.
- When the video references.. "Gen @expr..." Just use "expr..." in RNBO
4.Buffer~ "@samps" in MAX is "@samples" in RNBO.
Here is a screen shot of the RNBO Patch of how I got it working and with no clicking. As you adjust the delay time the Windowed buffer adjusts. In the video he goes go further into adjustments.
Here are two great videos that helped me finish it up, export it and get to HISE.
https://www.youtube.com/watch?v=-0tkr5ypLT4
https://www.youtube.com/watch?v=64dTcwnP40o
Kudos to these folks and @Christoph-Hart
Hope this helps someone. I would still love to see this concept work in straight script FX with scriptnode or coding, but I am not there yet, LOL.
Anyway on to the next thing to learn. Happy building!!!
Will
-
@WaterSpoon Congrats on finding a solution! Very similar approach to the one I took. You can embed the RNBO patch in scriptnode as well for any further adjustments.
I know there are some new features like time stretch and core.record in scriptnode as well, which means storing buffers. I.e. once these are fully functioning things like a reverse delay should be possible.
Just fyi, buffers can communicate in RNBO and Gen~, so you just need to store a copy in both and your good to go.
-
@HISEnberg Thanks again. yep, i referenced the buffers in both gen and RNBO and it worked. I was able to export and it worked the same in HISE as Ableton.
Agreed on the script node for further processing and I look forward to exploring the nodes you mentioned.