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!

Hi and welcome - first thing we'll need to know in order to troubleshoot is, what operating system are you using?

I'm on osx Ventura 13.2.1

OK I don't know much about OSX, but that sounds pretty old.
If you've got some of the synths working already, then you're definitely on the right track.

The mi-ugens page in the docs has examples for all of the different effects - could you give each a try using the example code provided, and let me know which ones aren't working?

I just went through the installation process again, I think I didn't escape a whitespace in the script's address the first time. Now they (almost everyone) seem to work!
When trying to use the Ripples example from the docs I get this error in SC though:

*** ERROR: SynthDef ripples2 not found
FAILURE IN SERVER /s_new SynthDef not found

which seems strange to me, "ripples2" is not written anywhere...

Another thing: I'm used to use Rings as an instrument in vcvrack, here it seems I can only use it as an effect?
Thank you for your patience!

1 Like

Glad to hear you got it going!

When trying to use the Ripples example from the docs I get this error

There is a chance that ripples is missing from the mi-ugens zip archive, some of those releases are a little incomplete - so you may not actually have the ripples module included in the version of the mi-ugens you grabbed. You may be able to find it in another release though, and copy it in with the rest?

Another thing: I'm used to use Rings as an instrument in vcvrack, here it seems I can only use it as an effect?

I've never used rings outside of tidal so I can't really offer anything here... my understanding is that it requires a sound source to operate on so in tidal that basically boils down to it being an effect?

Could you please clarify what you mean with "tarball"?

Hi!
I had that same problem, and I just went with an older version. As @cleary mentioned, it doesn't seem to be fully ready for macOS. I’m not entirely sure, but I managed to make it work. However, I can’t play with the parameters today just with braids/plaits/omi sound...

1 Like

When I say tarball, I mean an archive file, specifically with a .tar.gz prefix - in this case, I'm actually wrong, the mi-ugens releases all use the .zip archive format, so replace "tarball" with "zip archive"

1 Like