Making SuperCollider's 'PingPong' available as part of a Sonic Pi synth design


Besides @samaaron, is there anyone here (or does anyone know someone) who might be familiar enough with SuperCollider and the Overtone toolkit to be able to convert SuperCollider’s PingPong delay to Overtone code - in order to make it available as a component of a Sonic Pi synth design?

If so, and you/they would be willing to help me convert it over, that would be absolutely awesome. I’ve already attempted but have become stuck on various errors - and my knowledge of SuperCollider and Overtone is limited.

If you’re interested, here’s my attempt so far. (It’s a cut down version of the file where Sonic Pi’s :beep synth is defined - my attempt at the ping-pong code is simplified in several places by replacing various functions with other things as I couldn’t figure out how to avoid certain errors otherwise).

It still doesn’t compile - I couldn’t figure out how to work around the latest error:
CompilerException java.lang.ClassCastException: cannot be cast to clojure.lang.IFn, compiling:(basic.clj:31:2)
(Though even if that one is solved I’d still need to go back and figure out how to bring back the other functions I replaced to avoid other errors).

I’d love to be able to get a ping pong delay available as part of an overtone/Sonic Pi synth - if anyone thinks they can help, or can point me to someone else who might be able to, let me know!


I’ll bite on this one!

I’m not as good as Sam or Joseph on Overtone but I think the issue here is that you can’t use rotation in the synthdef like that. That error is saying buf-wr:ar is expecting a UGen, not a Clojure array. If you need to do maths inside the synthdef like that I’m sure there are ways but… I was going to suggest hard coding the initial channel to get started? Give that a shot and let me know if you have any other questions.

Making New Synths from SuperCollider SynthDefs?

Hey @xavierriley. No luck still… I replaced that line so that instead of
(buf-wr:ar (rotation (+ inputs feedback-channels) r)))))
it was just
(buf-wr:ar (+ inputs feedback-channels)))))
but I’m getting the same error.

(I’ll try to keep digging, but I’m still blundering about in the dark a bit!)


Hey - that’s a shame! I’m also in the dark a little bit when it comes to Overtone :slight_smile: Do you have this on a public repo somewhere that I can take a look?


Would a gist work?