The NTMI is a performance environment intended for an intuitive style of playing complex sound processes, with multiple interfaces. It was initially designed by Hannes Hoelzl for the nUFO interactor designed by Isak Han, available thru Airborne Instruments and has since been expanded with multiple sound processes and support for multiple MIDI, HID and OSC interfaces through Modality-Toolkit. This setup is fully customizable, you can add your own sound processes and add support for your own interfaces.
To run NTMI you will need SuperCollider>=3.12 installed and also sc3-plugins for some of the sound processes.
From within SuperCollider you can install NTMI and all required dependencies by running:
Note that Quarks need the git software versioning tools installed on your system. In case you had already some dependencies installed you can force an update to the current version:
NOTE: if you have any local modifications in a quark, Quark("something").update will fail silently. In that case, open Terminal, go to the quark folder, and check which files are changed with git status etc.
When the quarks are updated you can recompile the class library by running:
or via the SuperCollider IDE (Language->Recompile Class Library). You can then check if everything is working by running:
When you run NTMI you will first see two windows: the Butz and Main Stage. Butz works as a navigation menu through different areas of NTMI, which we will explore later.
The Main Stage, as the name implies, is the main window where you can have an overall view of the current state of NTMI. On the left-side you will see a Scope and the current selected sound processes.
For each sound process you see its name, the current selected preset and a third button that shows either --
or - -
.
You can press on the sound process name to open a dropdown menu and change the process to another one. The same applies for the presets. Notice that by default (and when you change it) the sound processes are muted, you can click on the sound process slot to turn it on or off. If you click and drag the darker vertical bar in this area you can change the level for that sound process.
The third button in each sound process is to decouple/couple the process from Influx and is an essential feature of NTMI. We will dive into Influx soon, but for now try turning on and off the sound process, change sounds and presets, and change the levels of each.
Continuing on Main Stage, we have a level meter and the SNAP! button. SNAP! will save the current state as a preset for each sound process enabled, with the current date and time as the preset's name. You can later change the name to a better one that makes more sense to you, SNAP! is meant to be a quick and easy way of capturing a state you want to keep while you perform or explore sounds in NTMI.
Under snap is the MainFX button. There is a main effects chain in NTMI with different stored presets, and clicking on the MainFX will switch between them: left for the previous, right for next, and center for a random preset. mainVol is the main volume of NTMI within the main effects, so that reverbs and delays will be after volume.
On the right side is the zoom slider to change the overal Influx zoom level. Also, preUp and preDown are related to Influx, changing between different weights presets for Influx. In the next section we will discuss in detail what Influx is and what those buttons do.
To finish with the Main Stage window, there is the clock and recording buttons, which are useful to keep track of time during a performance and to record / see all your recordings.
In NTMI sound processes are defined as Ndefs or NodeProxies, see JITLib; in the customization section below, we will explain how to add your own Ndefs to NTMI. The sound processes that ship with NTMI tend to have many input parameters and produce complex sounds with lively inner dynamics, often based on feedback. Those are called Nontrivial Sound Processes. The center element in NTMI for playing with those sound processes intuitively is an Influx.
Influx is a SuperCollider quark that explores the idea of performing with running processes by means of influence on process parameters rather than direct control. In NTMI the main method of changing parameters on sound processes is via Influx.
To try this out, turn on some sound processes and click on the inphlux button in the Butz window.
You can see the Influx inputs (the green line with letters x to l). Clicking and dragging over the inputs will influence the parameters of the current running sound processes. The zoom slider in the Main Stage window is a way to define how much influence from Influx will be applied to the parameters of the processes. To see this in action you can click on the slotSounds button in Butz and move the influx inputs. Each slider on the slotSounds window is an input parameter.
Try changing the Zoom slider and also the preUp and preDown to understand the effect of those into how Influx will influence the parameters.
The idea with NTMI and Influx is to explore intuitive playing with complex sound processes. And to do that you learn by listening how different gestures in Influx will map to the sonic output.
NTMI ships with full support for several different MIDI, HID or OSC controllers. If you happen to own one of those, you can connect it to your computer, and by default, NTMI will load and connect it when starting. If you connect it later, you can use the Butz window to change to the Interfaces menu (by clicking on the top menu and choose interfaces from the dropdown list). From the interfaces menu if you click on findConnect your newly connected device should be detected automatically.
Each device has specific mappings how they work with NTMI, check the nUFO Quickstart Manual for specifics of the supported interfaces. Multiple controllers will also work simultaneously, and each with its own zoom level. For an overview of the present controllers go back to the NTMI menu in Butz using the top menu and selecting NTMI from the dropdown list, and then click on InfluxMixer.
In this window you can set the Influx zoom level for each interface and define whether it is running in absolute or relative mode. In the next section we will understand the differences between absolute and relative modes, and why it matters when using multiple interfaces with NTMI.
The underlying intention in Influx mode at the core of NTMI is to gracefully leave analytic control behind in favor of a very fast sensomotoric feedback loop: make a movement with/on the interface, listen to the change in the sound world, and learn to go with this flow of intuitive decisions by ear.
This was initially developed for a single performer and the special custom sensor/touch interface nUFO; later we added optional secondary interfaces like faderboxes, gamepads, and phones as motion sensors. Trying to play with those at the same time, while still in absolute mode, where controller state sets processstate, posed interesting questions - the interfaces would overwrite each other’s influences, causing jumps, unless one would add more and more independent Influx inputs.
On an interface that always syncs to the current parameter state, such as onscreen GUIs, or motorized physical faders, a human player always continues from the current state already. On non-syncing interfaces (or with multiple processes playing in parallel), this is where the idea of consistent relativity came in: every interface always already has a current physical state, and when you play, you create a new state with a clear difference to the earlier one; this difference can be translated into a difference in the process parameter state, using Influx matrix projection.
Generalizing this idea of relative change to all the interfaces attached to one NTMI setup allowed playing with all of these at the same time, which turns it into an easily approachable shared-influence instrument. So, in Absolute mode the interface state is directly mapped (via the Influx matrix) to aspects of the process state. In Relative mode the differences in interface state are mapped onto differences in process state. This enables multiple sources to influence the same generative setup equally and simultaneously, by moving its configuration and its parameter states in desirable directions.
NTMI is fully customizable. In this section we will see how to easily add your own sound processes, sound files (for sound processes that use buffers) and add support to new MIDI/HID/OSC controllers.
When you run NTMI for the first time it will create a directory in your HOME directory called NTMI with the current sound processes, supported interfaces, sound files, etc. You can check this directory's content by running:
Inside the ~/NTMI/POOL/2_process/ directory are the current known sound processes, you are encouraged to check the source code of the existing sound processes. Now, to add a new one you can create a new file in that folder and add an Ndef. Notice that the Ndef should have the same name as the .scd file.
For example, create a file and save it as ~/NTMI/POOL/2_process/mySoundProc.scd:
Run NTMI.run
and you should be able to select your new sound in one of the sound slots. A few things to notice here are:
- the first argument in your sound process should be the amp parameter. This is because of the way controllers are mapped to influx, allowing the player to have ways to play with the amp of all sound processes currently running. - you should include ControlSpec for the parameters (this is how NTMI will be able to map from interfaces to sensible values in the sound process). - and as already mentioned, the name of the file should match the Ndef.
Both default sound processes bufRd and granbuf use sound files. NTMI ships with a few example sound files but it is very easy to add your own.
There are two ways to customize, either add your own sound files to ~/NTMI/soundfiles or override the globalBufFolder configuration variable: