'prepareForProxySynthDef' error when loading buffers

Hey all,

First off, I’m new to SuperCollider and forum, so hello!

I’m currently working my way through Eli’s tutorials (https://www.youtube.com/watch?v=oR4VZy2LJ60) and I’ve hit a roadblock when instantiating buffers. Here’s my code:

~b1 = Buffer.read(s, "/Users/kevin/Documents/sound/Samples/FX & Foley/Gate/ZOOM0001_MN.WAV");
~b2 = Buffer.read(s, "/Users/kevin/Documents/sound/Samples/FX & Foley/Gate/ZOOM0002_MN.WAV");
~b3 = Buffer.read(s, "/Users/kevin/Documents/sound/Samples/FX & Foley/Gate/ZOOM0003_MN.WAV");

~b1.play;

When I execute any of the ~b1 = lines, I receive the following error at the end of the stack trace:

	Process:interpretPrintCmdLine
		arg this = <instance of Main>
^^ The preceding error dump is for ERROR: 'prepareForProxySynthDef' should have been implemented by Buffer.
RECEIVER: Buffer(32, nil, nil, nil, /Users/kevin/Documents/sound/Samples/FX & Foley/Gate/ZOOM0001_MN.WAV)

I haven’t been able to find much useful information, and many tutorials I’ve seen use this syntax. Is there something obvious I’m missing? I’m using 3.13.0.

Any help is greatly appreciated.

Thank you!

Same question was asked a few days ago: Buffers will be stored but doesn't work with ssynth - #4 by jamshark70

hjh

Ah apologies, I’ll delete this duplicate post in that case.

Edit: looks like I don’t have permission.

No worries, finding the right search terms can be tricky. Pure coincidence that it was the same week :laughing:

hjh

Thank you. Is there any particular reason why these lines aren’t working for me but they’re working fine in the video I linked? Perhaps there’s a startup configuration script Eli is using that I’m unaware of?

I think eli runs this code before he has pushed the ProxySpace. Once you skip fore and back, this becomes a problem.

alternatively, you can just keep the buffers around in a dictionary in an interepreter variable, like:

q = ();
q[\b1] = Buffer.read(s, "/Users/kevin/Documents/sound/Samples/FX & Foley/Gate/ZOOM0001_MN.WAV");

// refer to them:
q[\b1].play

Thanks @julian, using a dict works perfectly for me.

Just for a bit more context in case anyone experiences the same issue, it turns out I had created a ProxySpace in an earlier session and completely forgot. Exiting the ProxySpace with p.pop allowed me to store buffers in global variables again.

As mentioned by julian, storing a buffer in a dictionary was the best solution for me. I happened upon the error in a later video by Eli which covers ProxySpace in more detail: https://www.youtube.com/watch?v=9db7v1nEBm8.

Hope it helps!

1 Like