pronvit

miRack 3.55 is out

This version mainly updates many of the included module packs to latest available versions and adds a bunch of new modules, including a calibration module for Expert Sleepers (and similar) audio interfaces and a module to send/receive CVs via OSC protocol.

Other changes:

  • New Recently Added category in module browser showing modules added in the last few app updates.
  • When starting a two finger pan and zoom gesture, it’s now much less likely to accidentally adjust module controls instead.
  • The number of AU parameters that can be exposed to a DAW is increased to 32.
  • Other minor UI and rendering tweaks.

This version is also built using the latest iOS/macOS SDK versions. If you experience any issues because of this or because of the module updates, or if you have any other suggestions, please contact us or visit the discussion board.

Sorry this update took so long to be released, we will now return to our normal practice of releasing frequent smaller updates with fixes and improvements from our (pretty long) to-do list.

Status Update

There hasn’t been miRack app updates in a while now, and I guess some explanation is needed. Partly that was due to personal reasons, partly because most major features people were asking for had been implemented and there was no rush to do another release. I used this time to do a biggish API-related refactoring in preparation for releasing miRack SDK and supporting commercial modules. I also didn’t want to update included plugins (especially big ones) until the API is finalised.

Unfortunately the internal changes took longer than expected and didn’t go completely as I hoped (this has little end user impact so not to worry). The good news is, this is now finished, and I also updated most of the plugins to latest available version.

The should be a new version in the next two or so weeks which will mainly include these updated modules and some fixes. Then hopefully updates will come much more often – I have a long todo list by now. At the same time, I’ll make the SDK and documentation available, and continue to work on support for commercial modules.

miRack 3.52 is out

MODULES

  • Bogaudio modules have been updated to the latest available version. There’s a bunch of very intersting new modules, including VCFs and equalizers.
  • MI modules got some improvements and fixes to their UI.
  • Fixed a crash when switching range parameter of Audible Instruments Tidal Modulator 2.
  • Fixed Audible Instruments Modal Synthesizer STRENGTH input which was previously inverted. For compatibility, the old behaviour can be enabled in the module menu and is enabled automatically for existing patches.

APP FEATURES

  • [macOS] Fixed a problem with automation disabling when using miRack AU plugin in Ableton Live. This requires to update the legacy miRack AU component, visit its page to download.
  • New Reset command at the bottom of the Patch menu allows to disconnect all cables or initialize all modules in a patch at once.
  • Added 32-channel audio output and input modules. These bigger modules are not shown in the module browser, use module menu to set the number of channels to 32.
  • Fixed occasional module movement issues when zoomed.
  • [macOS] ⌘+/⌘-/⌘0 shortcuts now work in AU plugin.
  • [macOS] Fixed initial parameter values not sent to host when adding a new instance of miRack Legacy AU with a preset.

miRack AU plugin for Ableton Live, FL Studio and other macOS DAWs

miRack for macOS that’s available from the Mac App Store already includes an AUv3 plugin. Unfortunately, not many DAWs support loading v3 audio units yet (Logic Pro, Garage Band, Reaper, LUNA and some others do).

Today I’m happy to annouce the release of miRack Legacy AU – a version that’s compatible with all macOS DAWs able to load audio units. This includes Ableton Live, FL Studio, MOTU Digital Performer, PreSonus Studio One and others.

miRack Legacy AU can be used as an instrument or an effect, supports up to 16 input/output channels and all the features of miRack and AUv3 plugin, including presets, MIDI, parameter recording and automation, and excellent performance allowing you to use many instances of miRack in your project.

Note: miRack application and AU plugins require macOS 10.15 (Catalina).

Installation Instructions

Download and install miRack app and Legacy AU package using the two links below.

That’s all, you should see miRack Legacy and miRack FX Legacy audio units (and their 16-channel variants) in your favourite DAW. As this is the first release, if anything is wrong, please let me know.

miRack 3.50 is out with multi-channel audio, MIDI out and new modules

miRack 3.50 adds two probably most requested features – MIDI output and multi-channel audio IO – as well as new modules and other improvements.

Multi-channel audio

miRack now supports up to 16 input/output channels in standalone, AUv3 instrument and AUv3 effect modes, both on iOS and macOS. There are new 8- and 16-channel audio IO modules, and number of channels of audio modules in existing patches can be changed from their module menus.

In particular, Expert Sleepers ES-8/ES-9 audio interfaces and expanders are now fully supported, and allow to integrate miRack and hardware Eurorack equipment. Expert Sleepers encoders for use with ES-5, ES-40, ESX-8GT and ESX-8CV modules are also available.

MIDI output

There are 3 new MIDI output modules, and new versions of MIDI CC and Trigger input modules.

MIDI out works via CoreMIDI, Audiobus and AUv3. For AUv3, a dedicated MIDI Processor AU type is also available.

Modules

Added bId°° (Bidoo) module pack. It’s a great collection of modules with weird names by Sébastien Bouffier, including several powerful sequencers – perfect for use with the new MIDI out functionality.

Valley module pack updated to the latest version. New module Feline – stereo version of a filter section from Interzone module.

Added an option to Host Sync module menu to change clock output rate (instead of a fixed BEAT output). This can also be used for connection to Clocked module for more reliable timing. Set CLOCK output to Beat / 4 or Beat / 8, connect to BPM input of Clocked, and set Clocked mode to P4 or P8 accordingly.

Fixed an issue with Frozen Wasteland Quad Algorithmic Rhythm module, it’s now working properly.

For MIDI keyboards that do not support per-note aftertouch but support channel pressure, it will be used for AFT output of MIDI module.

Other

Added SHIFT toolbar button to access secondary function of certain module controls. It’s used in number of new Bidoo modules, in Squinky Labs mixer to solo multiple channels, and other places in the future.

Improved rendering of lights and some module controls.

Added keyboard shortcuts to macOS version to zoom when no trackpad is present.

Details and comparison of miRack and VCV Rack multithreading implementation and performance

I implemented multitheading for miRack audio engine back in 2018 when it was a project targeting single-board computers because with slower CPUs it’s essentially a requirement to be able to run any decently-sized patches. The implementation (available here and is used in miRack app with minor modifications) is based on idea of having arrays for module input and output values, and a lock-free concurrent work queue implementation by Cameron Desrochers.

For each rendering cycle, say 512 samples (steps), all rack modules are pushed into to a work queue, also with start and end steps to process (so initially that is 1 to 512), then worker threads are woken up. The worker threads dequeue modules from the work queue and check that values for the step being processed are present for all module inputs (for disconnected inputs this is always true). If all values are available, the module is processed and output values are saved straight in input arrays of modules connected to each output for the next step number. The process continues until the end step is reached or until any of the input values are not available, in which case the module is pushed back into the work queue (updating the start step if needed) and another module is pulled from the work queue. Once there is no more modules in the work queue, the workers pause, and the rendering cycle completes. This implementation ensures that workers don’t wait unless they have to.

Until recently I never looked at the multithreading implementation that later appeared in VCV Rack (available here), but wanted to run some benchmarks at some point.

During normal opearation, VCV Rack implementation uses spinlocks only. For each step in a rendering cycle, workers process only that single step for each module. Once there are no more modules for a worker to pick up, it will spinwait until all workers have finished, then values are transferred from outputs to connected inputs, and the workers are woken up to process the next single step. This implementation causes the workers to wait a lot instead of possibly processing next steps for some modules.

Now to the benchmark. I used the current miRack code and the latest VCV Rack code. All graphics rendering was disabled, as well as audio output. For VCV Rack, updating port lights was also disabled – it involves a lot of computations that substantially affect the results while not being related to audio processing.

The audio engines were told to process 1024 samples (steps) as fast as they can, and it was repeated 1000 times for a single thread then for 2, 3, and 4 worker threads. The tests were performed on a CPU with 4 physical cores. The following patches (by VCV Rack Ideas were used):

Results

ThreadsmiRack TimemiRack %VCV Rack TimeVCV Rack %Ideal %
14242ms100.00%6313ms100.00%100.00%
22236ms52.71%5179ms82.04%50.00%
31620ms38.19%4604ms72.93%33.33%
41341ms31.61%4312ms68.30%25.00%
1st Patch Results
ThreadsmiRack TimemiRack %VCV Rack TimeVCV Rack %Ideal %
14904ms100.00%6203ms100.00%100.00%
23054ms62.28%4944ms79.70%50.00%
32575ms52.51%4578ms73.80%33.33%
42357ms48.06%4455ms71.82%25.00%
2nd Patch Results

“%” column shows time difference to the single-threaded case, and “Ideal %” shows the best theoretically achievable improvement of N times for N threads.

Also I should note that initially it was about comparing multithreaded speed increase, not absolute values (at least because miRack and VCV Rack use different versions of some of the patch modules), but absolute values turned out to be quite interesting as well. As I mentioned above, port lights update code adds about another second to VCV Rack results.

miRack AU plugin is now available on macOS

miRack AU plugin is now available in Reaper, Logic Pro and GarageBand on macOS 10.15 (Catalina). Unfortunately, other DAWs don’t seem to support it currently.

miRack AUv3 plugin is now available

The wait is over, miRack AUv3 plugin is now available in your favourite host app or DAW. Can be used as an instrument or effect, and supports parameter automation. Enjoy!

miRack is now available on macOS 10.15

Many users asked for a way to work on their miRack projects on desktop, too. Initially I was planning to support exporting to and opening patches made in VCV Rack, but that does not seem to be achievable at the moment. Therefore, miRack is now also available as a free macOS app.

It contains all the same modules, supports Core MIDI and Ableton Link, and can open patches directly from miRack iCloud folder.

Several things to mention:

  • Although miRack supports opening a patch (located on iCloud) on multiple devices at the same time, I noticed that the “patch changed remotely” notifications that are displayed when the patch is changed on another device are a bit too annoying at the moment. This will be fixed in the next update, until then I recommend closing the app before opening the same patch on another device.
  • Currently, external assets, like samples loaded into certain modules, are not saved inside patch file. Therefore, when opening a patch with such modules on macOS after iOS (or the other way round), you will need to re-open assets in the modules using them. Asset management will be improved in the near future to solve this problems.
  • In general, it received much less testing than the iOS app, please report any issues you notice.

As it is essentially the iOS miRack app built for desktop, it requires macOS 10.15 (Catalina) or later to work.

Multi-touch, Ableton Link, new modules, and more in miRack 2.10

It’s been a while since the last miRack update, that’s because I was working on several big features – AUv3, multitouch, variable sample rate support, and also Metal rendering (this one is almost not noticeable for users users but is quite important going forward).

AUv3 is already being tested by the beta testers and is looking good, with last bits and pieces left to be done. In the meanwhile, here’s an update with everything else. There will be another one with some more fixes, and then AUv3.

App Features

  • Multi-touch. Enable in Tools menu to operate multiple knobs or other module controls at the same time.
  • Ableton Link support. Enable in Tools menu and use Stellare Modular Link module to synchronize your patch with other Link-enabled apps, including IAA host apps.
  • Variable sample rate. Audio engine now works at hardware sample rate. Preferred sample rate can be set in Tools -> Settings.
  • Metal rendering. This should reduce CPU usage and battery consumption.

Modules

  • Updated Audible Instruments module pack. Added Percussive Synthesizer (based on Mutable Instruments Peaks) and Tidal Modulator 2 (based on Mutable Instruments Tides 2) modules.
  • Updated Befaco, Frozen Wasteland, Squinky and Holonic Systems module packs.
  • Added MI module pack – based on AS modules by Alfredo Santamaria (hakken.com.mx)
  • Added Valley Amalgam (signal masher and multipler) and Dexter (powerful FM wavetable oscillator in a single module).
  • Bogaudio spectre analyser modules are available again.
  • Submarine text display modules are available now.

Bug Fixes

  • Fixed some modules not showing under “Filter/VCF” tag.