Mutable Instruments UGens

Okey :slight_smile: i think i do have everything... look at it :

Last login: Fri Nov 29 00:34:02 on ttys000
MacBook-Pro-de-Tommy:~ tommyheisler$ ls -ld /Users/tommyheisler/Library/Application\ Support/SuperCollider/Extensions/mi-UGens
drwxr-xr-x@ 15 tommyheisler  staff  480 11 avr  2024 /Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-UGens
MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$ ls -la /Users/tommyheisler/Library/Application\ Support/SuperCollider/Extensions/mi-UGens/
total 14376
drwxr-xr-x@ 15 tommyheisler  staff      480 11 avr  2024 .
drwxr-xr-x   4 tommyheisler  staff      128 28 nov 07:18 ..
drwxr-xr-x@ 14 tommyheisler  staff      448 11 avr  2024 Classes
drwxr-xr-x@  3 tommyheisler  staff       96 11 avr  2024 HelpSource
-rwxr-xr-x@  1 tommyheisler  staff  3337721 11 avr  2024 MiBraids.scx
-rwxr-xr-x@  1 tommyheisler  staff   355369 11 avr  2024 MiClouds.scx
-rwxr-xr-x@  1 tommyheisler  staff   944299 11 avr  2024 MiElements.scx
-rwxr-xr-x@  1 tommyheisler  staff   134616 11 avr  2024 MiGrids.scx
-rwxr-xr-x@  1 tommyheisler  staff    99221 11 avr  2024 MiMu.scx
-rwxr-xr-x@  1 tommyheisler  staff   891894 11 avr  2024 MiOmi.scx
-rwxr-xr-x@  1 tommyheisler  staff   578377 11 avr  2024 MiPlaits.scx
-rwxr-xr-x@  1 tommyheisler  staff   251432 11 avr  2024 MiRings.scx
-rwxr-xr-x@  1 tommyheisler  staff   327400 11 avr  2024 MiTides.scx
-rwxr-xr-x@  1 tommyheisler  staff    99431 11 avr  2024 MiVerb.scx
-rwxr-xr-x@  1 tommyheisler  staff   321064 11 avr  2024 MiWarps.scx
MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$ cat /Users/tommyheisler/Library/Application\ Support/SuperCollider/synthdefs/mi-ugens.scd
// https://github.com/v7b1/mi-UGens

(
  SynthDef(\braids, {|out=0,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0,timbre=0.5,color=0.5,model=0|
    var envLength = sustain*(end-begin)/speed;
    var line = Line.ar(begin, end, envLength, doneAction: Done.freeSelf);
    var env = Env.asr;
    var volume = IEnvGen.ar(env, line);
    var sig;

    freq = max(0, freq * speed * (1 + (accelerate * line)));
    sig = MiBraids.ar(pitch: freq.cpsmidi, timbre: timbre, color: color, model: model);

    Out.ar(out, DirtPan.ar(sig * volume, ~dirt.numChannels, pan));
  }).add;
);

(
  SynthDef(\omi, {|out=0,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0|
    var envLength = sustain*(end-begin)/speed;
    var line = Line.ar(begin, end, envLength, doneAction: Done.freeSelf);
    var env = Env.asr;
    var volume = IEnvGen.ar(env, line);
    var sig;

    freq = max(0, freq * speed * (1 + (accelerate * line)));
    sig = MiOmi.ar(pit: freq.cpsmidi);

    Out.ar(out, DirtPan.ar(sig * volume, ~dirt.numChannels, pan));
  }).add;
);

(
  SynthDef(\plaits, {|out=0,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0,
      timbre=0.5,engine=0,harm=0.5,morph=0.5,level=1,lpgdecay=0,lpgcolour=0,mode=0|
    var envLength = sustain*(end-begin)/speed;
    var line = Line.ar(begin, end, envLength, doneAction: Done.freeSelf);
    var env = Env.asr;
    var volume = IEnvGen.ar(env, line);
    var sig;

    freq = max(0, freq * speed * (1 + (accelerate * line)));
    sig = MiPlaits.ar(
      pitch: freq.cpsmidi,
      timbre: timbre,
      harm: harm,
      engine: engine,
      morph: morph,
      level: level,
      decay: lpgdecay,
      lpg_colour: lpgcolour,
    );
    sig = Select.ar(mode, sig);
    Out.ar(out, DirtPan.ar(sig * volume, ~dirt.numChannels, pan));
  }).add;
);

(
  SynthDef(\tides, {|out=0,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0,tidesshape=0.5,slope=0.5,tidessmooth=0.5,shift=0.5,mode=2|
    var envLength = sustain*(end-begin)/speed;
    var line = Line.ar(begin, end, envLength, doneAction: Done.freeSelf);
    var env = Env.asr;
    var volume = IEnvGen.ar(env, line);
    var sig;

    freq = max(0, freq * speed * (1 + (accelerate * line)));
    sig = MiTides.ar(
      freq: freq,
      shape: tidesshape,
      slope: slope,
      smooth: tidessmooth,
      shift: shift,
      output_mode: mode,
      ramp_mode: 1,
      rate: 1
    );

    Out.ar(out, DirtPan.ar(sig * volume, ~dirt.numChannels, pan));
  }).add;
);

(
~dirt.addModule('elements', { |dirtEvent|
	dirtEvent.sendSynth('elements' ++ ~dirt.numChannels,
		[
      elementspitch: ~elementspitch,
      elementsstrength: ~elementsstrength,
      elementscontour: ~elementscontour,
      elementsbowlevel: ~elementsbowlevel,
      elementsblowlevel: ~elementsblowlevel,
      elementsstrikelevel: ~elementsstrikelevel,
      elementsflow: ~elementsflow,
      elementsmallet: ~elementsmallet,
      elementsbowtimb: ~elementsbowtimb,
      elementsblowtimb: ~elementsblowtimb,
      elementsstriketimb: ~elementsstriketimb,
      elementsgeom: ~elementsgeom,
      elementsbright: ~elementsbright,
      elementsdamp: ~elementsdamp,
      elementspos: ~elementspos,
      elementsspace: ~elementsspace,
      elementsmodel: ~elementsmodel,
      elementseasteregg: ~elementseasteregg,
			out: ~out
		]
	)
}, {~elementsstrength.notNil});
);

(
  SynthDef("elements" ++ ~dirt.numChannels, {|out,freq=440,sustain=1,pan=0,begin=0,end=1,speed=1,accelerate=0,
      elementspitch=48, elementsstrength=0.5, elementscontour=0.2, elementsbowlevel=0,elementsblowlevel=0, elementsstrikelevel=0,
      elementsflow=0.5, elementsmallet=0.5, elementsbowtimb=0.5, elementsblowtimb=0.5,
      elementsstriketimb=0.5, elementsgeom=0.25, elementsbright=0.5, elementsdamp=0.7, elementspos=0.2, elementsspace=0.3, elementsmodel=0,
      elementseasteregg=0|
    var signal = In.ar(out, ~dirt.numChannels);
    ReplaceOut.ar(out, MiElements.ar(
      blow_in: signal,
      strike_in: signal,
      gate: 1,
      pit: elementspitch,
      strength: elementsstrength,
      contour: elementscontour,
      bow_level: elementsbowlevel,
      blow_level: elementsblowlevel,
      strike_level: elementsstrikelevel,
      flow: elementsflow,
      mallet: elementsmallet,
      bow_timb: elementsbowtimb,
      blow_timb: elementsblowtimb,
      strike_timb: elementsstriketimb,
      geom: elementsgeom,
      bright: elementsbright,
      damp: elementsdamp,
      pos: elementspos,
      space: elementsspace,
      model: elementsmodel,
      easteregg: elementseasteregg
    ));
  }).add;
);

(
~dirt.addModule('mu', { |dirtEvent|
	dirtEvent.sendSynth('mu' ++ ~dirt.numChannels,
		[ mu: ~mu, out: ~out ]
	)
}, {~mu.notNil});
);

(
  SynthDef("mu" ++ ~dirt.numChannels, {|out,mu=0|
    var signal = In.ar(out, ~dirt.numChannels);
    ReplaceOut.ar(out, MiMu.ar(signal, mu));
  }).add;
);

(
~dirt.addModule('rings', { |dirtEvent|
	dirtEvent.sendSynth('rings' ++ ~dirt.numChannels,
		[
			ringstrig: ~ringstrig,
			ringsfreq: ~ringsfreq,
			ringsstruct: ~ringsstruct,
			ringsbright: ~ringsbright,
			ringsdamp: ~ringsdamp,
			ringspos: ~ringspos,
			ringsmodel: ~ringsmodel,
			ringspoly: ~ringspoly,
			ringsinternal: ~ringsinternal,
			ringseasteregg: ~ringseasteregg,
			out: ~out
		]
	)
}, {~ringsbright.notNil});
);

(
SynthDef("rings" ++ ~dirt.numChannels, { |out, ringsfreq=440,ringsstruct=0,ringsbright=0,ringsdamp=0.5,ringspos=0,ringsmodel=0,ringspoly=0,ringsinternal=0,ringseasteregg=0,ringsbypass=0|
	var signal = In.ar(out, ~dirt.numChannels);
	signal = MiRings.ar(
    signal,
    trig: ringsinternal,
    pit: ringsfreq.cpsmidi,
    struct: ringsstruct,
    bright: ringsbright,
    damp: ringsdamp,
    pos: ringspos,
    model: ringsmodel,
    poly: ringspoly,
    intern_exciter: ringsinternal,
    easteregg: ringseasteregg
  );
  ReplaceOut.ar(out, signal)
}).add;

);

(
~dirt.addModule('ripples', { |dirtEvent|
	dirtEvent.sendSynth('ripples' ++ ~dirt.numChannels,
		[
			ripplescf: ~ripplescf,
			ripplesreson: ~ripplesreson,
			ripplesdrive: ~ripplesdrive,
			out: ~out
		]
	)
}, {~ripplescf.notNil});
);

(
SynthDef("ripples" ++ ~dirt.numChannels, { |out, ripplescf=0, ripplesreson=0, ripplesdrive=1|
	var signal = In.ar(out, ~dirt.numChannels);
	signal = MiRipples.ar(
    signal,
    cf: ripplescf,
    reson: ripplesreson,
    drive: ripplesdrive,
  );
  ReplaceOut.ar(out, signal)
}).add;

);


(
~dirt.addModule('warps', { |dirtEvent|
	dirtEvent.sendSynth('warps' ++ ~dirt.numChannels,
		[
			warpsalgo: ~warpsalgo,
			warpstimb: ~warpstimb,
			warpsosc: ~warpsosc,
			warpsfreq: ~warpsfreq,
			warpsvgain: ~warpsvgain,
			warpseasteregg: ~warpseasteregg,
			out: ~out
		]
	)
}, {~warpsalgo.notNil});
);

(
SynthDef("warps" ++ ~dirt.numChannels, { |out, warpsalgo=0, warpstimb=0, warpsosc=1, warpsfreq=440, warpsvgain=1, warpseasteregg=0|
	var signal = In.ar(out, ~dirt.numChannels);
	signal = MiWarps.ar(
    modulator: signal,
    algo: warpsalgo,
    lev1: 1,
    lev2: 1,
    timb: warpstimb,
    osc: warpsosc,
    freq: warpsfreq,
    vgain: warpsvgain,
    easteregg: warpseasteregg
  );
  ReplaceOut.ar(out, signal)
}).add;

);

(

(1..SuperDirt.maxSampleNumChannels).do { |numChannels|

  SynthDef("global_mi_verb" ++ numChannels, { |dryBus, effectBus, verbwet=0, verbtime=0, verbdamp=0, verbhp=0, verbfreeze=0, verbdiff=0.625, verbgain=0|
    var signal = In.ar(dryBus, ~dirt.numChannels);
    Out.ar(effectBus, MiVerb.ar(
      signal,
      verbtime,
      verbwet,
      verbdamp,
      verbhp,
      verbfreeze,
      verbdiff
    ) * verbgain);
  }, [\ir, \ir]).add;

  SynthDef("global_mi_clouds" ++ numChannels, { |dryBus, effectBus, cloudspitch=0, cloudspos=0, cloudssize=0, cloudsdens=0, cloudstex=0, cloudswet=0, cloudsgain=0, cloudsspread=0, cloudsrvb=0, cloudsfb=0, cloudsfreeze=0, cloudsmode=0, cloudslofi=0|
    var signal = In.ar(dryBus, ~dirt.numChannels);
    Out.ar(effectBus, MiClouds.ar(
      inputArray: signal,
      pit: cloudspitch,
      pos: cloudspos,
      size: cloudssize,
      dens: cloudsdens,
      tex: cloudstex,
      drywet: cloudswet,
      in_gain: cloudsgain,
      spread: cloudsspread,
      rvb: cloudsrvb,
      fb: cloudsfb,
      freeze: cloudsfreeze,
      mode: cloudsmode,
      lofi: cloudslofi
    ));
  }, [\ir, \ir]).add;
};

);


{ MiBraids.ar(440) }.play;

MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$ cat /Users/tommyheisler/Library/Application\ Support/SuperCollider/synthdefs/mi-ugens-params.hs
let
-- mutable synths
    timbre = pF "timbre"
    color = pF "color"
    model = pI "model"
    mode = pI "mode"
    tidesshape = pF "tidesshape"
    tidessmooth = pF "tidessmooth"
    slope = pF "slope"
    shift = pF "shift"
    engine = pI "engine"
    harm = pF "harm"
    morph = pF "morph"
    level = pF "level"
    lpgdecay = pF "lpgdecay"
    lpgcolour = pF "lpgcolour"
    lpg d c = lpgdecay d # lpgcolour c
-- mutable effects
    cloudspitch = pF "cloudspitch"
    cloudspos = pF "cloudspos"
    cloudssize = pF "cloudssize"
    cloudsdens = pF "cloudsdens"
    cloudstex = pF "cloudstex"
    cloudswet = pF "cloudswet"
    cloudsgain = pF "cloudsgain"
    cloudsspread = pF "cloudsspread"
    cloudsrvb = pF "cloudsrvb"
    cloudsfb = pF "cloudsfb"
    cloudsfreeze = pI "cloudsfreeze"
    cloudsmode = pI "cloudsmode"
    cloudslofi = pF "cloudslofi"
    clouds p s d t = cloudsgain 1 # cloudspos p # cloudssize s # cloudsdens d # cloudstex t
    cloudsblend w s f r = cloudsgain 1 # cloudswet w # cloudsspread s # cloudsfb f # cloudsrvb r
    elementspitch = pF "elementspitch"
    elementsstrength = pF "elementsstrength"
    elementscontour = pF "elementscontour"
    elementsbowlevel = pF "elementsbowlevel"
    elementsblowlevel = pF "elementsblowlevel"
    elementsstrikelevel = pF "elementsstrikelevel"
    elementsflow = pF "elementsflow"
    elementsmallet = pF "elementsmallet"
    elementsbowtimb = pF "elementsbowtimb"
    elementsblowtimb = pF "elementsblowtimb"
    elementsstriketimb = pF "elementsstriketimb"
    elementsgeom = pF "elementsgeom"
    elementsbright = pF "elementsbright"
    elementsdamp = pF "elementsdamp"
    elementspos = pF "elementspos"
    elementsspace = pF "elementsspace"
    elementsmodel = pI "elementsmodel"
    elementseasteregg = pI "elementseasteregg"
    mu = pF "mu"
    ringsfreq = pF "ringsfreq"
    ringsstruct = pF "ringsstruct"
    ringsbright = pF "ringsbright"
    ringsdamp = pF "ringsdamp"
    ringspos = pF "ringspos"
    ringsmodel = pF "ringsmodel"
    ringspoly = pI "ringspoly"
    ringsinternal = pI "ringsinternal"
    ringseasteregg = pI "ringseasteregg"
    rings f s b d p = ringsfreq f # ringsstruct s # ringsbright b # ringsdamp d # ringspos p
    ripplescf = pF "ripplescf"
    ripplesreson = pF "ripplesreson"
    ripplesdrive = pF "ripplesdrive"
    ripples c r d = ripplescf c # ripplesreson r # ripplesdrive d
    verbgain = pF "verbgain"
    verbwet = pF "verbwet"
    verbtime = pF "verbtime"
    verbdamp = pF "verbdamp"
    verbhp = pF "verbhp"
    verbfreeze = pI "verbfreeze"
    verbdiff = pF "verbdiff"
    verb w t d h = verbgain 1 # verbwet w # verbtime t # verbdamp d # verbhp h
    warpsalgo = pI "warpsalgo"
    warpstimb = pF "warpstimb"
    warpsosc = pI "warpsosc"
    warpsfreq = pF "warpsfreq"
    warpsvgain = pF "warpsvgain"
    warpseasteregg = pI "warpseasteregg"

MacBook-Pro-de-Tommy:~ tommyheisler$
MacBook-Pro-de-Tommy:~ tommyheisler$ cat /Users/tommyheisler/Library/Application\ Support/SuperCollider/startup.scd
/*
This is an example startup file.
If you want to modify it, best copy it elsewhere to keep the git repository clean.

You can then load it by calling
"path/to/my/superdirt_startup.scd".load
from the supercollider startup file

The supercollider startup file is to be found in
Platform.userAppSupportDir +/+ "startup.scd",
or via the menu File > Open startup 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 = 2048; // 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.stop; // stop any old ones, avoid duplicate dirt (if it is nil, this won't do anything)
		~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels

		 // load mi-ugens.scd synthdefs
  load("/home/tommyheisler/Library/Application Support/SuperCollider/synthdefs/mi-ugens.scd");
  // end load mi-ugens.scd synthdefs

		~dirt.loadSoundFiles("/Users/tommyheisler/Library/Application Support/SuperCollider/downloaded-quarks/Dirt-Samples/sample_tom/*");

				~dirt.loadSoundFiles("/Users/tommyheisler/Desktop/RECUP\ SAMPLE\ USB/PRISM\ Retro\ Pop\ Tool\ Kit\ -\ BONUS\ Files/01\ -\ Organic/*");



		~dirt.loadSoundFiles; // load samples (path containing a wildcard can be passed in)
		// for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/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
		SuperDirt.default = ~dirt; // make this instance available in sclang (optional)

		// 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];
		);


		        // 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


		// directly below here, in your own copy of this file, you could add further code that you want to call on startup
		// this makes sure the server and ~dirt are running
		// you can keep this separate and make it easier to switch between setups
		// by using "path/to/my/file.scd".load and if necessary commenting out different load statements
		// ...

	};

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


};


Ok I think I found the problem, and it was directly related to the bug I fixed :wink:

In startup.scd:

Change your path to:

 load("/Users/tommyheisler/Library/Application Support/SuperCollider/synthdefs/mi-ugens.scd");

Okay, I know where I found the complete Ugens folder! I did it with Git in the terminal.
But what's that :

*** Welcome to SuperCollider 3.12.2. *** For help press Cmd-D.
Booting server 'localhost' on address 127.0.0.1:57110.
*** ERROR: dlopen '/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiBraids.scx' err 'dlopen(/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiBraids.scx, 2): no suitable image found.  Did find:
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiBraids.scx: cannot load 'MiBraids.scx' (load command 0x80000034 is unknown)
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiBraids.scx: cannot load 'MiBraids.scx' (load command 0x80000034 is unknown)'
*** ERROR: dlopen '/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiVerb.scx' err 'dlopen(/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiVerb.scx, 2): no suitable image found.  Did find:
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiVerb.scx: cannot load 'MiVerb.scx' (load command 0x80000034 is unknown)
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiVerb.scx: cannot load 'MiVerb.scx' (load command 0x80000034 is unknown)'
*** ERROR: dlopen '/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiElements.scx' err 'dlopen(/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiElements.scx, 2): no suitable image found.  Did find:
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiElements.scx: cannot load 'MiElements.scx' (load command 0x80000034 is unknown)
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiElements.scx: cannot load 'MiElements.scx' (load command 0x80000034 is unknown)'
*** ERROR: dlopen '/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiTides.scx' err 'dlopen(/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiTides.scx, 2): no suitable image found.  Did find:
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiTides.scx: cannot load 'MiTides.scx' (load command 0x80000034 is unknown)
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiTides.scx: cannot load 'MiTides.scx' (load command 0x80000034 is unknown)'
*** ERROR: dlopen '/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiClouds.scx' err 'dlopen(/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiClouds.scx, 2): no suitable image found.  Did find:
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiClouds.scx: cannot load 'MiClouds.scx' (load command 0x80000034 is unknown)
	/Users/tommyheisler/Library/Application Support/SuperCollider/Extensions/mi-ugens/MiClouds.scx: cannot load 'MiClouds.scx' (load command 0x80000034 is unknown)'

Your path doesn't work either... I tried everything I could....
I did the work twice, but my computer refuses to fetch or install them.
Do you still have any ideas?

Summarising our discussion on discord:

The key issue is:

ERROR: dlopen '<path to any>.scx' err 'dlopen(<path to any>.scx, 2): no suitable image found.  Did find:
	<path to any>.scx: cannot load 'MiBraids.scx' (load command 0x80000034 is unknown)

From searching errors:

It should mean the LC_BUILD_VERSION load command (0x80000034) is not recognized on the user's Mac OS version (10.14.6) since it was introduced in later versions of macOS (before: LC_VERSION_MIN_MACOSX).

That load command is used to specify the minimum OS version on which the binary can run, as well as the SDK version used to build it.

In summary, OSX High Sierra on a 2011 MBP is not supported by (at least) the mi-ugens 0.0.6 release, and possibly all of them. @tom_gop is testing older releases now to see if there was ever support for older OSX

1 Like

Well, everyone, I thought we only had one release... but the v0.0.3 release seems to work perfectly on my macOS High Sierra! Now, I need to dive in and explore the "do let" language. :blush:
Thanks, @cleary, for your time and invaluable help!

Hi everyone, I tried to follow the instructions to install and use the MI U-Gens, but I don't really understand what I'm doing and it seems I did something wrong. I can play notes with plaits and braids, but that's about it. If I try to use rings it seems it isn't installed and I don't really know how to even test something like ripples or warps. I discovered tidal cycles few days ago, and never used SC, so everything is very new to me. Is there something I could test to find out where my errors are? Thank you!