Exception in GrafDef_Load: UGen ' ' not installed

I am using SuperCollider 3.8.0 on Ubuntu 64bit and trying d_load

I have saved a working SynthDef to a .scsyndef file and have tried d_load “full file path and name” using s.sendMsg. The error message that I see in the post window is …

exception in GrafDef_Load: UGen ’ ’ not installed (while reading…)

Normally, I would check the plugin, but there is nothing named in the ’ ’ reference, so I do not know where to start investigations. Can anyone point me in any direction? I have tried naming the synthdef in both \name and “name” formats and both give the same result.

Many thanks,

P

Update:

I am able to load an existing scsyndef that was created by someone else (sonic-pi), so it is not a fundamental failure of the \d_load function on my installation. I suspect that the problem is to do with the writeDefFileOld that I use to create the scsyndef. I also tried writeDefFile, which gives the same error messages.

Does anyone know the format of the scsyndef files? I would like to compare the Hex code of a working scsyndef against a non-working scsyndef and understand the file structure to troubleshoot this problem.

Apologies… I seem to be having a conversation with myself!

.writeDefFileOld sets the 8th Byte in a scsyndef file as a 1 (version=1), so changing this to a 2 (version=2) will work.

.writeDefFile does set the version as “2”, but uses a different format, which requires just the save directory and no filename. The synthdef name is saved as the filename.

I hope this helps someone with the same problem.

P

This is actually documented in SC’s help system:

http://doc.sccode.org/Reference/Synth-Definition-File-Format.html

Almost nobody ever looks at it because usually SynthDefs “just work.”

I’d try to identify which SynthDef file is failing to load, and then search for the SynthDef code that created it.

hjh