Help! Error messages when installing MI-UGens

Hello<3
I am in the middle of installing the Mutable Instruments Ugens into SuperCollider to use with tidal. I have followed the instructions as close as i can, but i keep getting this error message when i restart SuperCollider->

ERROR: Message 'prSetEdited' not understood.
RECEIVER:
nil
ARGS:
Integer 1
CALL STACK:
DoesNotUnderstandError:reportError
arg this =
Nil:handleError
arg this = nil
arg error =
Thread:handleError
arg this =
arg error =
Object:throw
arg this =
Object:doesNotUnderstand
arg this = nil
arg selector = 'prSetEdited'
arg args = [*1]
Process:interpretCmdLine
arg this =
^^ ERROR: Message 'prSetEdited' not understood.
RECEIVER: nil

ERROR: Message 'prSetEdited' not understood.
RECEIVER:
nil
ARGS:
Integer 0
CALL STACK:
DoesNotUnderstandError:reportError
arg this =
Nil:handleError
arg this = nil
arg error =
Thread:handleError
arg this =
arg error =
Object:throw
arg this =
Object:doesNotUnderstand
arg this = nil
arg selector = 'prSetEdited'
arg args = [*1]
Process:interpretCmdLine
arg this =
^^ ERROR: Message 'prSetEdited' not understood.
RECEIVER: nil

server 'localhost' disconnected shared memory interface
'/quit' message sent to server 'localhost'.
compiling class library...
Found 853 primitives.
Compiling directory 'C:\Program Files\SuperCollider-3.12.1\SCClassLibrary'
Compiling directory 'C:\ProgramData\SuperCollider\Extensions'
Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\Extensions'
Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\Vowel'
Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\Dirt-Samples'
Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\SuperDirt'
numentries = 1291801 / 20048200 = 0.064
5900 method selectors, 3398 classes
method table size 21137568 bytes, big table size 160385600
Number of Symbols 15120
Byte Code Size 447242
compiled 567 files in 0.41 seconds

Info: 2 methods are currently overwritten by extensions. To see which, execute:
MethodOverride.printAll

compile done
localhost : setting clientID to 0.
internal : setting clientID to 0.
Class tree inited in 0.01 seconds
ERROR: syntax error, unexpected NAME, expecting ')'
in interpreted text
line 62 char 54:

  s.latency = 0.3; // increase this if you get "late" messages
                                                ^^^^

};

ERROR: Command line parse failed

Could this have anything to do with the help file, maybe? (my helpfile)->
/*
This is an example startup file. You can load it from your startup file
(to be found in Platform.userAppSupportDir +/+ "startup.scd")
*/

(
s.reboot { // server options are only updated on reboot
// configure the sound server: here you could add hardware specific options
// see ServerOptions | SuperCollider 3.12.2 Help
s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages
s.options.numWireBufs = 64; // increase this if you get "exceeded number of interconnect buffers" messages
s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
s.options.numOutputBusChannels = 2; // set this to your hardware output channel size, if necessary
s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
// boot the server and start SuperDirt
s.waitForBoot {
~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
//"C:\Users\kostp\Desktop\Samples"
~dirt.loadSoundFiles("/users/kostp/Desktop/Samples/*");
// s.sync; // optionally: wait for samples to be read
~dirt.start(57120, 0 ! 12); // start listening on port 57120, create two busses each sending audio to channel 0

    // optional, needed for convenient access from sclang:
    (
        ~d1 = ~dirt.orbits[0]; ~d2 = ~dirt.orbits[1]; ~d3 = ~dirt.orbits[2];
        ~d4 = ~dirt.orbits[3]; ~d5 = ~dirt.orbits[4]; ~d6 = ~dirt.orbits[5];
        ~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8];
        ~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
    );
};
	// Mutable instruments ->>



	  // load mi-ugens.scd synthdefs
	load("C:\Program Files\SuperCollider-3.12.1\synthdefs\mi-ugens.scd\");

// end load mi-ugens.scd synthdefs
// ...
~dirt = SuperDirt(2, s);

//...
~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
// );

    // define global effects for mutable instruments effects
    ~dirt.orbits.do { |x|
        var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]);
        var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain]);
        x.globalEffects = x.globalEffects
          .addFirst(clouds)
          .addFirst(verb);
        x.initNodeTree;
    };

    // end define global effects for mutable instruments effects



s.latency = 0.3; // increase this if you get "late" messages

};
);

Any help will greatly appreciated<33

Hi - Are you able to give anymore info about the environment? Operating system etc

There are some links talking about the prSetEdited not understood error here:

Beyond that, your sc startup file could potentially be an issue since it's formatting funny in the forum -
The trick to get it to format as code is to put triple backticks before and after the block of code - can you do that with your startup file and error messages to get it formatting more readably please?

```
example
code block
```

which looks like this when rendered in markdown

example
code block

My enviroment-> windows 11

start up file->

(
s.reboot { // server options are only updated on reboot
    // configure the sound server: here you could add hardware specific options
    // see http://doc.sccode.org/Classes/ServerOptions.html
    s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
    s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages
    s.options.numWireBufs = 64; // increase this if you get "exceeded number of interconnect buffers" messages
    s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
    s.options.numOutputBusChannels = 2; // set this to your hardware output channel size, if necessary
    s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
    // boot the server and start SuperDirt
    s.waitForBoot {
        ~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
		//"C:\Users\kostp\Desktop\Samples"
		~dirt.load("C:\Program Files\SuperCollider-3.12.1\synthdefs\mi-ugens.scd\");
        ~dirt.loadSoundFiles("/users/kostp/Desktop/Samples/*");
        // s.sync; // optionally: wait for samples to be read
        ~dirt.start(57120, 0 ! 12);   // start listening on port 57120, create two busses each sending audio to channel 0

        // optional, needed for convenient access from sclang:
        (
            ~d1 = ~dirt.orbits[0]; ~d2 = ~dirt.orbits[1]; ~d3 = ~dirt.orbits[2];
            ~d4 = ~dirt.orbits[3]; ~d5 = ~dirt.orbits[4]; ~d6 = ~dirt.orbits[5];
            ~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8];
            ~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
			 ~dirt.orbits.do { |x|
            var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]);
            var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain];
        );
				            x.globalEffects = x.globalEffects
              .addFirst(clouds)
              .addFirst(verb);
            x.initNodeTree;
    };


    s.latency = 0.3; // increase this if you get "late" messages
};
);

Ok, there's a whole lot of mistakes in there that I can see at a first glance:

  1. Line 15 - wrong load function, requires double backslash for windows (it's a highlighted tip in the docs), and it has an extraneous backslash at the end of the path
~dirt.load("C:\Program Files\SuperCollider-3.12.1\synthdefs\mi-ugens.scd\");

should be

load("C:\\Program Files\\SuperCollider-3.12.1\\synthdefs\\mi-ugens.scd");
  1. Path you've put the mi-ugens.scd file is different to the docs
    This may or may not be an issue, but the file needs to exist at the path you've defined.
    The docs recommends:
C:\Users\<youruser>\AppData\Local\SuperCollider\synthdefs\mi-ugens.scd

Let's start with getting these two right for starters and see how it goes

Hi again:)
New startup file after changes->

(
s.reboot { // server options are only updated on reboot
    // configure the sound server: here you could add hardware specific options
    // see http://doc.sccode.org/Classes/ServerOptions.html
    s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
    s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages
    s.options.numWireBufs = 64; // increase this if you get "exceeded number of interconnect buffers" messages
    s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
    s.options.numOutputBusChannels = 2; // set this to your hardware output channel size, if necessary
    s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
    // boot the server and start SuperDirt
    s.waitForBoot {
        ~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
		//"C:\Users\kostp\Desktop\Samples"
		~dirt.load("C:\\Users\\kostp\\AppData\\Local\\SuperCollider\\synthdefs\\mi-ugens.scd");
        ~dirt.loadSoundFiles("/users/kostp/Desktop/Samples/*");
        // s.sync; // optionally: wait for samples to be read
        ~dirt.start(57120, 0 ! 12);   // start listening on port 57120, create two busses each sending audio to channel 0

        // optional, needed for convenient access from sclang:
        (
            ~d1 = ~dirt.orbits[0]; ~d2 = ~dirt.orbits[1]; ~d3 = ~dirt.orbits[2];
            ~d4 = ~dirt.orbits[3]; ~d5 = ~dirt.orbits[4]; ~d6 = ~dirt.orbits[5];
            ~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8];
            ~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
			 ~dirt.orbits.do { |x|
            var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]);
            var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain];
        );
				            x.globalEffects = x.globalEffects
              .addFirst(clouds)
              .addFirst(verb);
            x.initNodeTree;
    };


    s.latency = 0.3; // increase this if you get "late" messages
};
);

This seems to have solved some of the problem. however i still get this error message

compiling class library...
	Found 853 primitives.
	Compiling directory 'C:\Users\AppData\Local\SuperCollider\SCClassLibrary'
	Compiling directory 'C:\ProgramData\SuperCollider\Extensions'
	Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\Extensions'
	Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\Vowel'
	Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\Dirt-Samples'
	Compiling directory 'C:\Users\kostp\AppData\Local\SuperCollider\downloaded-quarks\SuperDirt'
	numentries = 1291801 / 20048200 = 0.064
	5900 method selectors, 3398 classes
	method table size 21137568 bytes, big table size 160385600
	Number of Symbols 15120
	Byte Code Size 447242
	compiled 567 files in 0.32 seconds

Info: 2 methods are currently overwritten by extensions. To see which, execute:
MethodOverride.printAll

compile done
localhost : setting clientID to 0.
internal : setting clientID to 0.
Class tree inited in 0.01 seconds
ERROR: Parse error
  in interpreted text
  line 38 char 1:

  };
  ^
  ); 
-----------------------------------
opening bracket was a '(', but found a '}'
  in interpreted text line 38 char 1
ERROR: syntax error, unexpected BADTOKEN, expecting DOTDOT or ':' or ',' or ')'
  in interpreted text
  line 38 char 1:

  };
  ^
  ); 
-----------------------------------
ERROR: Command line parse failed

you should always use standardizePath to automatically adjust paths depending on the OS.

probably a non-matching parentheses in the mi-ugen.scd?

Can you elaborate? i'm still quite new to this.

The file in the MI-UGens seems to be a little roughly written. I haven't seen it, so I only guess.
When you open the startup file and select all, hit cmd-ender, you can check if the same error occurs. Then it is in that file. You can try and balance the brackets so everything comes in pairs. Then it should work …

The mi-ugens.scd file is standard and well tested:
https://raw.githubusercontent.com/cleary/ansible-tidalcycles-synth-mi-ugens/master/files/mutable-instruments-synthdefs.scd

It may depend on how that file was copied to @AilaKri 's machine though - if it was not copied completely it may be missing a parentheses or matching brackets etc