Mutable Instruments UGens

Based on my little knowledge, a "local" effect works only on single event (eg, a note of a synt or a sample), while a global event works on all the sounds played on a orbit.
So, the effects that modulate the time in my opinon works better as global effects (e.g. reverb/delay/leslie of superdirt), while other kind of modulations (distortion, waveshaping, filters, tremolo, phaser, etc...) are good as local effects.

I'm trying clouds as local effect, but it's not good as when it's a global one.
Rings works well as local.

(ps: to turn them off, when there's a gain (like for clouds) I set it at 0, if there's no gain in the ugen, I add a * <effectname>gain)

Thanks for the explanation. If I do this: d1 $ "bd bd sd ~" # delay 0.5 # delayfb 0.7 # delaytime 0.9 and then do hush i still hear echos afterwards which makes me think time based effects still work locally. Is what you meant something different? Sorry if I'm not understanding exactly the difference still (in terms of the end resulting sound). Or is delay a global effect and that's why it works? And each d1, d2, etc. has a different orbit?

In superdirt delay is a global effect, that's why you hear echoes after an hush. If it were a local one, it would shut off together with the sound generated by the event.

Tidal defines an orbit for each "connection" (d1, d2, etc..).
Every orbit has its set of global effects.
Local effects are instantiated for every event.

Said that, I'm porting all that MI synths/effects into superdirt, for those who are interested here's the code:

(The code to load the global effects is in the superdirt startup file: https://github.com/ndr-brt/sc-adente/blob/master/superdirt_startup.scd#L31)

6 Likes

Got it, thanks!

This should be placed in the docs (for "effects") more prominently. What is the best place?

The "local/global" distinction is mentioned here: https://tidalcycles.org/orbit but to find that, I already have to know about the "orbit" concept. (When I search for "effect" I get too many results. Can the search engine make a difference between: definition and use of a concept (name)?)

After finding the "orbits" page I still don't know whether any given effect is local/global. Is it possible to tag or group the effects description in https://tidalcycles.org/All_effects_and_synths accordingly?

Or is there another way to find out? So instead of tagging each effect (too much work), we can put a description "Each effect is either local or global (link to explanation of concept). To find out which, look for property ?? in (link to effect definitions in Superdirt??)".

[EDIT] Ah you already answered this? "the code for loading global effects ..." (sc-adente/superdirt_startup.scd at master · ndr-brt/sc-adente · GitHub) Or is this specific to your setup?

Sorry for going on a tangent here. Feel free to move to Innards (?). What is the current process to contribute documentation? I recall there was a recent discussion, also leading to some changes, but I did not follow closely.

1 Like

Yep, there's another discussion about documentation (Updating the Tidal website and documentation - #47 by yaxu), there's a plan to move everything on a markdown based static site (https://doc.tidalcycles.org), at the moment the documentation is the wiki on tidalcycles.org, everyone signed in can modify it.

The code I linked is specific to my setup, I did some trial/error to load those synths/effects.
Not particulary complicated, I admit that I had to look at the superdirt code to understand the signature of some functions, but it worked well enough.

1 Like

What are you guys using as documentation for these ugens?

Just the code, or their own website, or?

The .schelp files in the repository:

2 Likes

The manuals on the MI site (e.g this one for plaits) are also very useful.

2 Likes

I'm having a hard time getting clouds to work. I used your mutable.scd file and afterwards did:

 ~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;
  };

In Tidal I'm doing:

d1 $ s "bd bd sd ~" # cloudspitch "1" # cloudspos "0.5" # cloudswet "0.5" # cloudssize "0.5" # cloudsdens "0.5" # cloudstex "0.5" # cloudsgain "5.5" # cloudsspread "0.5"# cloudsrvb "0.5" # cloudsfb "0.5" # cloudsfreeze "0" # cloudsmode "0" # cloudslofi "0"

Any thoughts? What am I missing?

You see anything on the consoles (tidal/superdirt)?

Nope, both sc and tidal consoles are clean.

Executing that supercollider code you should see in the console an output like:

[ a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit, a DirtOrbit ]
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2
MiClouds > numAudioIns: 2

do you see it?

Sorry yes, I did see that. I thought you meant if there were any errors.

At this point don't know what the problem could be... have you copied into the extensions folder of supercollider the *.so files?

I copied .scx files to the extensions folder (I'm on a mac). Was there something else I needed to copy too? Where do I get those? I've got your plaits and rings working fine. I haven't tested the verb. I should do that since that is the other global effect I think.

Uhm...no, if rings and plaits are working you should be ok, on linux also the *.so (compiled libraries) are needed

Being able to easily use plaits in Tidal would be a huge step forward. So much possibilities within one little synth...

+1

I got clouds to work! I removed the text plus colon you had before passing the params into clouds here:

Out.ar(effectBus, MiClouds.ar(
      inputArray: signal,
      pit: cloudspitch,
      pos: cloudspos,
      size: cloudssize,
      etc.......
    ));

Mine looks like this now and works:

  SynthDef("global_mi_clouds" ++ numChannels, { |dryBus, effectBus, cloudspitch=0, cloudspos=0, cloudssize=0.5, cloudsdens=0.5, cloudstex=0.5, cloudswet=0.5, cloudsgain=0.5, cloudsspread=0.5, cloudsrvb=0.5, cloudsfb=0.5, cloudsfreeze=0, cloudsmode=0, cloudslofi=0|
    var signal = In.ar(dryBus, ~dirt.numChannels);
    Out.ar(effectBus, MiClouds.ar(
      signal,
      cloudspitch,
      cloudspos,
      cloudssize,
      cloudsdens,
      cloudstex,
      cloudswet,
      cloudsgain,
      cloudsspread,
      cloudsrvb,
      cloudsfb,
      cloudsfreeze,
      cloudsmode,
      cloudslofi
    ));
  }, [\ir, \ir]).add;
};

Maybe try yours similar to mine and see if it still works?

2 Likes

I've spent some time exploring Plaits and have noticed that many parameter configurations have two distinct signals in the left and right channels. According to the Mutable Instruments docs, many of these sounds have both an 'out' and an 'aux': The AUX output carries a variant, sidekick, or by-product of the main signal produced on OUT.

It seems that these two signals are hard panned left and right, which isn't ideal.

Are there any out-of-the-box (either in Tidal or SuperDirt) ways for combining these signals? Failing that, I suppose I'll figure out how to build an effect in SuperDirt for mixing stereo signals together, but hoping that there is already some way to do that.