Mutable Instruments Max port

By vb, 20/02/2020

It’s been more than a year ago that I have started working on the mutable instruments source code available here, to bring the sound and thoughtful layout of some of these fabulous eurorack modules into Cycling74’s Max. The project is not finished (and might not ever be…), but I want to use this space to make the intermediate results available.

A huge thanks goes to Émilie Gillet, the original author of the mutable instruments module family, for making the sources publicly available for people to explore, learn and derive new stuff from!

So here we go – currently there are versions of:
Plaits, Rings, Clouds, Braids, Elements, Grids, Marbles, Tides, Warps and a few additional objects inspired by selected features of the original modules (download see below).

Source code is available on github.

latest versions (compiled for macOS and windows) running in Max8,
vb.mi-objects (a max package) containing:


vb.mi.plts~ — a clone of the Plaits module
vb.mi.rngs~ — a clone of the Rings module
vb.mi.brds~ — a clone of the Braids module
vb.mi.clds~ — a clone of the Clouds module
vb.mi.mrbls~ — a clone of the Marbles module
vb.mi.grds~ — a clone of the Grids module
vb.mi.elmnts~ — a clone of the Elements module
vb.mi.rppls~ — a clone of the Ripples module
vb.mi.tds~ — a clone of the Tides (2) module
vb.mi.tds1~ — a clone of the original Tides module
vb.mi.wrps~ — a clone of the Warps module
vb.mi.verb~ — reverb unit from the Elements module
vb.mi.mu~ — µ-law companding for degrading audio signals (from Clouds)
vb.mi.pvoc~ — phaseVocoder from the Clouds module
vb.mi.reson~ — a resonator based on the resonator section from the Elements module
vb.mi.omi~ — ‘ominous’ a dark 2×2-op FM synth voice (from Elements)
vb.mi.tds.osc~ — a single oscillator from the Tides2 module
vb.mi.sheep~ — a clone of the ‘Tides(1)’ module with inofficial ‘sheep’ firmware
vb.mi.twobumps~ — a clone of the ‘Tides(1)’ module with ‘Parasites’ firmware in TWO BUMPS mode
vb.mi.twodrunks~ — a clone of the ‘Tides(1)’ module with ‘Parasites’ firmware in TWO DRUNKS mode

Some demo sounds (from early developement…):



What about SuperCollider?

In the meantime I’ve started to experiment with translating some of the modules into UGen plugins for SuperCollider 🙂 In my experience SuperCollider lends itself especially well for hosting these modules, as many of them really start to shine when their parameters are modulated thoughtfully and precisely – something that SC is very good at!
You can find the currently available collection (compiled for macOS) here: mi-UGens, or in the downloads section (scroll down all the way).


Sources on gitHub.
And some sound examples:

50 Comments

  1. daniel says:

    hallo volker,
    ich bin ein großer fan deiner vb-objects für max
    nur schaffe ich es nicht die mutable instruments module zum laufen zu bringen.
    (unter macos & max8)
    gibt es dafür eine besondere vorgehensweise ?
    (sind das keine .mxo dateien?)

    danke dir & beste grüsse!
    daniel

    • vb says:

      Hallo Daniel,
      nach dem Download, zip Dateien entpacken und in ~/Documents/Max 8/Library kopieren.
      Max allenfalls neustarten.
      viele Grüsse,
      Volker.

  2. Alfonso Santimone says:

    Hi Volker, is there any OSX specific things in the code? I would like to try a port to Win (as for the other yours stuff which is Mac only…mostly i’d like to port aubio)

    • vb says:

      Hi Alfonso, no nothing OSX specific. IIRC I used Apple’s vDSP only to evaluate the trigger inputs, but that can be circumvented easily. I’m still in the process of tidying up the sources, should be ready soon.

  3. Clark says:

    Hi Volker, I downloaded the mutable instrument externals and all work except Braids. Is there any reason I wouldn’t be getting any sound from the help file patch after turning on the dac and playing the kslider? I can see other signals running in the patch but am getting no output from the braids object.

    thanks a ton for making these!

    • vb says:

      Any errors in the max console? Can you try unchecking the resample option and toggle the dac off/on – does that make any difference?

  4. Clark says:

    I get this error in the Max console.

    vb.mi.brds~: vector size can’t be smaller than 16 samples, sorry!

    unchecking the resample option and toggling the dac didn’t fix it for me.

    Thanks again for the help.

    • vb says:

      vb.mi.brds~: vector size can’t be smaller than 16 samples, sorry!

      well, this sounds quite clear then. Set Max’s signal vector size to 16 or higher and it should work.

  5. Clark says:

    Thanks! That works. I’ve mainly used Max for MIDI tasks and haven’t used MSP much so I had never even noticed the vector size setting in the audio settings.

  6. Victor Kashirin says:

    Thank you so much for sharing these patches. I just tried to play with resonator, and it’s beautiful, eager to try the rest. Do you have plans to make M4L devices out of those modules? Let me know if you need help with it.

  7. Jacob says:

    Wow. I’ve just been playing with the help files for these. What amazingly cool sound design possibilities. Thank you very much for your time in porting these to Max. All the best! Jacob

  8. Clément says:

    Hi Volker ! First I wanted to thanks you for this great works. I have a small problem with the Clouds module, in Looping Delay mode the “Position” does nothing (as far as I know it should control the delay time). Am I doing something wrong ?

    • vb says:

      Hi, ‘postion’ in looping delay mode is working fine here. Maybe you have an older version?

  9. Clément says:

    Sorry I didn’t see you answer !
    You were right, the external I was using was actually an older version, frozen in the the device. Thanks a lot 🙂

  10. Dario says:

    Hello Volker! First of all thanks for sharing all this amazing work with all of us 🙂
    I really sincerely appreciate it. I was wondering if you would be keen on sharing your current version of Marbles as I would love to give it a try and maybe give some feedback?
    Best!

    • vb says:

      Hi Dario, you can find a test version here. Please note, that this is unfinished, documentation is incomplete and the help-file is still a mess 🙁 have fun 🙂

  11. Adrian says:

    Hey Volker, is there any difference in sound from the max objects to the “real” mi module? Great work btw!
    And why did you decide to create max objects rather than build the modules in gen~?

    Cheers

    • vb says:

      Hi, thanks for your interest. The objects should be pretty close to the originals, but I haven’t done any serious comparisons, yet.
      The original code base is written in C++ and contains large numbers of classes and data files. A translation to gen~ would have been _much_ more work than creating max externals. And although gen~ is a nice addition to max, imho it doesn’t lend itself easily/practically for larger projects.

  12. Adrian says:

    Something weird I’ve found. When opening the .maxhelp of plaits, it sometimes won’t load the external and just mark the external object orange. Any idea?

  13. Alan says:

    Hey! Thanks for the modules! But I have a really dumb question, I downloaded the zip and moved it to ~/Documents/Max 8/Library as you pointed out before. But I can only open the help files on max and I can’t open it on Live as an external max instrument, I’m sure I’m missing something but I’m not sure what it is! Any help would be amazing!

    • vb says:

      hey, these are externals for max. For making use of them in ableton live, you need to write max4live devices.

  14. max says:

    thanks so much for making these. they are absolutely phenomenal and expand SuperCollider in exactly the way that it needs to be expanded, for me. it’s a really great thing to have these, truly.

  15. wilson says:

    Hey! These externals are absolutely fantastic! I’ve seen the latest updates on GitHub and I can’t wait for your official release of Marbles and Warps :). If you release anything else, I might need to start selling the rest of my modules haha

    • vb says:

      I might need to start selling the rest of my modules haha

      The physical modules are much more than the software, of course! Marbles and Warps are ready – more or less. just need to find the time to finish help files and packaging 🙂

  16. wilson says:

    Awesome! Are they updated in GitHub as well? I’ll go ahead and take a little look at them prior to the help being released.

  17. phaelam says:

    how is Marbles coming along?

    thanks

    • vb says:

      it’s mostly ready, but I don’t have time to code right now. hope to finish up a new release over christmas and have it ready early next year.

  18. wilson says:

    Hey! I’m having some trouble getting these to compile for an Apple M1 system. Have you tried making these for them yet?

    • vb says:

      sorry, no M1 in sight over here, where I could try. maybe next year. if you run into trouble trying it yourself, might be worth using the issue tracker on github to report.

  19. carlos says:

    This is amazing! I’m working on a live set with max and my modular and this is perfect! Thanks so much, I just have one question, I’m using the vb.mi.plaits and I’m not sure the FM input is acting as it should. I’m patching a cycle~ at different frequencies into the FM input and I turn the toggle switch on and turn the FM attenuverter all the way to 1 but most of the time I don’t hear any difference, sometimes at subaudio frequencies I can hear the tremolo but once I go into audio rate the fm input seems to not respond.

    • vb says:

      Hi Carlos, try to bring up the modulator amplitude (i.e. scale up your modulation signal), that should help.

  20. wilson says:

    hey hey! No worries, I ended up getting all of them to compile (with the sole exception of Ripples). It seems like the calls to the Apple DSP library were no longer working. As soon as I gutted Ripples, it all worked out!

    • vb says:

      Ok, great to hear you got it working! Rob Ramirez was so kind to push some changes to the github repo that enables painless M1 builds. I managed to get it working through github actions. Haven’t looked into the ripples problem, yet.

  21. flo says:

    Hi Volker,
    unsurprisingly mac doesnt accept the unsigned mi plugins (at least in sc). Do you plan to release them for MacOs >12 ?
    All the best from Mannheim =)
    flo.

    • vb says:

      Hi Flo, the plugins are not signed (as I’m rejecting to pay for a developer account), that’s why you need to manually ‘allow’ them to run on your system. Open SC, and click ‘cancel’ when the system dialog pops up with the malware blablab, go to system preferences -> security settings and click ‘allow anyway’. You have to do this for each of the plugins separately, one after the other. After that, close SC and reopen, now you get the ‘are you sure…’ dialog, click ‘open’ and from then on you should be fine. hth, best v

  22. flo says:

    Thank You ) Worked fine but is very strange =).

  23. Odie says:

    Hi,

    Thanks for your work!

    All modules are working great except for Braids which is yellowed out and giving the error (vb.mi.brrds~: could not load due to incorrect architecture) in the MAX console. I’ve tried reinstalling multiple times and get the same behavior. My machine is a 2021 M1 macbook pro running Monterey.

    Let me know if this is a known issue and if there’s any way around it.

    Thanks again. Love having these sounds in Max.

    Best,
    Odie

    • vb says:

      Hi, over here vb.mi.brds~ runs fine under Monterey. Where did you get it from, or did you compile yourself?

  24. Joel says:

    Hello!

    Thank you so much for the work you’ve put into this!

    Do you think it would be possible to allow the strum input to accept a variable amplitude trigger to work as velocity for rings?

  25. Maurice Schirm says:

    Hey Volker, danke für deine ganze Arbeit. Ich kriege es einfach nicht hin. Die .mxo sind in max8/library aber wie nutze ich sie nun ? Ich habe sie bereits einmal geöffnet aber nichts passiert. Wo finde ich sie denn in ableton. Sorry aber irgendwie hat mir google bei dieser Frage bisher nicht weiter geholfen

    • vb says:

      Hi, die .mxo files sind Max externals. Um diese in Ableton nutzbar zu machen, kannst du Max4Live devices schreiben.

  26. Mafo says:

    Hi!

    Great work!
    I’m using Max and I’m trying to use vb.mi.plts~ inside a poly~ object but I’m not able to get polyphony.
    Is it possible to use vb.mi.plts~ polyphonically?
    How can I achieve this?

    Many thanks!!

    • vb says:

      Hello Mafo, [vb.mi.plts~] works just fine inside of a [poly~] object.
      You can patch it up like you would using any other oscillator object – there’s no secret sauce.
      Without knowing any more details of what is not working in your attempts, it’s hard to tell where you go wrong.

  27. LAN Party says:

    Hi Volker, thank you so much for porting these! I am making a max for live reverb device using vb.mi.verb~ and can’t seem to figure out what the two “lfo” values control and what a proper range of values would be for these. Pushing either of them too high causes the patch to explode.
    Thanks again!

    • vb says:

      Hi – the two LFOs should be regarded as ‘experimental’. Their frequencies are fixed to 0.5 and 0.3 in the original code and were not exposed as changeable parameters. I thought it could be nice to play with these, though. The first one modulates the delay times of the allpass diffusers and the second one modulates the time of the reverb tails. This follows the original Griesinger-design described in the Dattorro paper. The LFO frequencies were meant to be slow! Higher settings will create all sorts of artifacts – especially the second one is quite sensitive.

  28. Carl Hudson says:

    Hi Volker!

    I was just starting out on the long road to port Mutable Instruments Clouds to a Supercollider UGen, having gotten it working with RtAudio on the Mac..

    And I thought ‘I’ll just have a quick look to see if anyone did it already’..

    And suddenly your goldmine of work appeared!

    I can’t thank you enough!

  29. Hi Volker,

    I follow your work since many years and use it very frequently. Thanks for all the effort you put into it!

    I used the vb.mi. objects in Max on MAc with rosetta for quite a while and now found, that using Max9 natively on apple silicon is quite a performance difference. the vb.mi. externals seem to not be supported without rosetta, can u confirm this? Any plans to make a native Apple Silicon version in the future. And any hints on how they can be ported?

    Thanks again and alle the best!
    Martin

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *