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


#1

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: overtone.sc.machinery.ugen.sc_ugen.SCUGen 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!


#2

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?
#3

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!)


#4

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?


#5

Would a gist work?