Working with Sound
The modules in the ‘Sound’ menu provide tools for audio synthesis, signal processing, file playback, and manipulation. This is the largest of the three menus, and makes up the core of the program’s focus on sound.
Basic Audio setup
For many users, the audio options on the console will be enough to get started. If you are running MacOS, it’s very likely that sound output will work out-of-the-box. However, learning the basic options on the console is crucial to tweaking your system setup.
A discussion of advanced audio options can be found at the bottom of this page
The top-left section of the console is dedicated to the Audio Engine, and controls for the Master Out audio channel.
Audio Engine Power Toggle - This toggle can be pressed to turn the audio engine on and off. When the toggle is white, the engine is on, and when the toggle is dark grey, the engine is off. If a driver has been selected that causes a conflict with the system, the toggle will stay off, or turn itself off.
Driver, Input, and Output select menus - These menus allow you to select the driver, along with the input and output audio options for your project.
Master Out Volume Control - This slider allows you to set the overall volume level for your project. The current decibel level is displayed as a pair of gain meters behind the slider. The top meter represents the left channel, and the bottom meter represents the right channel.
Limiter Toggle - This toggle can be pressed to turn the output audio limiter on and off. The ‘LIM’ text is bright white when the toggle is on, and dark grey when the toggle is off. Turning on the limiter will make sure that your output levels never go beyond 0db, but carelessness with the output volume can result in the limiter distorting the expected signal.
CPU meter - The CPU meter keeps track of the current CPU load generated by the audio signal processing in your project.
Note that the CPU meter does not monitor video load on the GPU. It is common to see low CPU numbers even if you are only capable of outputting low frame rates from your video modules.
Sound Module Layout
Modules come in a large variety of layouts, but include some general common aspects:
- A combination of audio input and output addresses.
- An assortment of dials, number boxes, and other interfaces to control the parameters.
- A preset save and recall box.
Dials and presets are covered in other parts of the manual, so the rest of this page will focus on topics specific to working with audio.
Audio signals are routed from one module to another via audio I/O channels. Channel addresses are specified by selecting a letter + number pair from the I/O dropdown menus; any letter plus any number (0-16) can be selected. As long as the output from one module and the input from another have the same letter + number pair, the signal will flow from the first module into the second module.
Microphone and line inputs from hardware
Along with letters and numbers, the “Mic” value is available on inputs to select hardware inputs like microphones and guitars. The first input can be selected as “Mic 1”; “Mic 0” is a placeholder channel, and no signals flow to that address. If you are having trouble receiving signal from your inputs, see the advanced audio setup section at the bottom of the page.
Routing audio to speakers
The “Master” value is available on outputs. Setting the output to “Master Out” sends the signal directly to the main stereo output on the System Board. Setting “Master” plus a number (1-16) sends the signal on to the corresponding track on any of the 4-8-16 Mixer modules. “Master 0” is a placeholder channel, and no destination exists for it.
If you need to route audio to more than two speakers, you can use any number of mixer modules. These include the ‘4-8-and-16 Channel Multi Out’ modules. Before attempting a multi-output mix, you’ll need to map your speakers to the internal DAC channels. This is covered in the advanced audio setup section at the bottom of the page.
Routing signal between modules
Multiple modules can output their signal to the same channel address, and a single channel can be routed to multiple module inputs.
Review the example above. There are two rows of modules. The top row consists of modules that generate sound - an audio file player, and an A+2 synthesizer. The bottom row consists of modules that manipulate sound - a chorus effect and a live granulator.
The Audio File player has no input address - The input into this module is an audio file, which gets played and sent out. The first output address is “Master Out”, meaning we will hear the unprocessed signal in our speakers. The second output address is “A 1”. The same setup is true for the outputs of the A+2 synthesizer.
Both the chorus and the live granulator have “A 1” as the input address. This means that both processes will receive the signal from both the audio file player AND the A+2 synthesizer, as they both have “A 1” as an output address. Both the chorus and the granulator have “Master Out” and “Master 16” as their output addresses. This means that the signal from both will go directly to our speakers, and the signal will also go to the sixteenth channel on the Master Mixer, if the mixer is open.
The full signal chain results in four signals that are going to the speakers (each module has Master Out selected as an output address), and both the audio file player and the A+2 synthesizer will be processed by the chorus and granular effect in parallel.
If we wanted to process the signal through the chorus and the live granulator in sequence, we could do this by setting the second output channel of the chorus to another address, like “A 2”, and setting the input address of the granulator to the same name!
The keyboard toggle
Turning on the toggle to the left of the dropdown menus tells the menus to listen for computer keyboard inputs. With the toggle on, pressing a letter or number on your keybaord will set the appropriate dropdown menu to that value immediately. The pair will stop listening to the keyboard as soon as the ‘Enter’ key is pressed.
This technique can be used to quickly connect multiple inputs and outputs together. By turning on the toggle on each I/O address that needs to be connected, then pressing the letter+number pair on your keyboard and hitting enter, you can route multiple modules together in a few key clicks and key presses.
This technique can be seen in the gif above (you can click on it to zoom in). The Wavetable synth’s output is being routed to the input on both the Signal-In module and the Chorus module. The keyboard toggle is activated on all three modules, then the “A” and “1” keys are pressed on the keyboard, and “Enter” is pressed at the end. The entire process only takes a few seconds.
Working with Audio files
A number of modules in MSDP can access, playback, and modify audio files. Working with audio is a breeze, and there are a variety of methods for getting audio into your projects.
The media manager
The recommended method of working with audio files is to first add them to your project, using the Media Manager.
The Media Manager can be accessed by finding the ‘Media Manager’ button on the console. This can be found beneath the ‘Select Board File’ dropdown menu.
Adding audio files to the Media Manager will create a copy of the file in your project folder. This will ensure that the audio files travel with your project, and will make sure that projects work as expected on any computer that you open them on.
To add files to the Media Manager, you can simply find the files on your computer that you want to add, and drag-and-drop them into the Media Manager window. If you are using MSDP in full screen, you’ll need to toggle out of full screen mode, using the ‘full screen’ toggle on the console.
Alternately, you can press the ‘Search Computer for Media’ button to create an ‘Open’ dialogue window. From here you can search your computer for the audio file you want to add. This does come with one disadvantage - using this method, you can only add one file at a time, while you can drag-and-drop multiple files at once into the Media Manager window.
Loading audio into modules
There are four ways to load audio into modules, each of which will be reviewed below.
Drag and Drop from the Media Manager - This is our top recommended method - simply open the manager and drag the name of the file over the module, then drop it to within the module frame to have the file load.
Drag and Drop from Desktop - This is the easiest way to load an audio file that isn’t saved in the project. For this method, simply find the file on your desktop or in a finder / explorer window, and drag the file over the module. Drop the file within the module frame to load the file into the module.
IMPORTANT - If you decide to use files from outside of your project, you will not be able to properly open the files on other computers. For this reason, we recommend grabbing all of your files from the media manager.
Pressing the ‘Open’ button on any audio file module will open a secondary window called the ‘Audio Loader’. In some scenarios, this may be faster than using the above methods.
The Audio Loader Menu - Any audio files that exist in your project’s Media Manager will automatically appear in this dropdown menu. Selecting an option from this menu will cause the Audio Loader window to close, and will load the audio file into your module.
The ‘Search Computer’ button - The audio loader also allows you to search your computer for any audio file. Just like dragging and dropping audio from outside of your project, files opened with this method do NOT save in the project. This means that your module may fail to load the appropriate audio file if opened on another computer.
The ‘Instruments’ section of the ‘Sound’ menu includes a variety of ways to generate sound - from traditional additive synthesis and drums to granular and chaos instruments. On these modules, the input address is replaced by a keyboard which can be controlled with a computer mouse, a hardware controller, or automation from ‘data’ modules.
Recordings of the Master Output audio can be made at any time from the Console. The record function is covered in more detail on the Navigating the Console tutorial page.
To make sure that you are recording sound, set the ‘Record’ type to ‘Audio’. Audio files are saved in your project folder, in the ‘Audio Files’ subfolder.
Recorded audio will also be added to the Media Manager, making it immediately available to use in modules.
In addition to recording the Master Out signal chain, the Signal Recorder module allows you to select a specific channel address to record. This is a great option for capturing a part of the signal chain, and multiple Signal Recorders can be used to create multi-channel recordings.
Advanced Audio Setup
For users who have high-end sound cards or audio interfaces, additional features can be accessed to set up these devices from two locations - The System Preferences window and the Audio Status Window.
System Preferences is the best tool for users with stereo interfaces that simply want to change sample rate and signal processing window sizes.
Audio Status gives users full access to their interfaces, and is perfect for the power user looking to setup multiple inputs and outputs.
Audio settings in the System Preferences window
The audio settings in the system preferences window acts as an intermediate tool - it provides basic access to critical audio options, but is less complex than the Audio Status Window.
The System Preferences can be accessed by navigating to ‘File -> Preferences…’ on the top menu.
The Audio Settings section includes the folllowing options:
- Driver - Select the audio driver for your setup.
- In - Select the appropriate input device / channel for your driver.
- Out - Select the appropriate output device / channel for your driver.
- Sampling Rate - Determines how many samples-per-second should be processed for input and output audio, and audio within the system. Note that higher sample rates will provide higher audio quality, but will be more CPU demanding. The available rates are determined by the selected driver and I/O hardware.
- I/O Vector Size - MSDP audio is processed in blocks called ‘signal vectors’. The I/O vector size determines the number of samples processed as a single vector for audio input and output. A larger signal vector will be less CPU demanding, but will implement additional delay in the signal chain and may create blurry results.
- Signal Vector Size - This is the number of samples processed within the system. Signal vector should be less than, or the same size, as the I/O vector.
The Audio Status and I/O Mappings windows
The Audio Status window provides full control over audio setup and performance in the system. There is a decent amount of overlap between what is available in the System Preferences and what is available here, so only features unique to the Audio Status window will be covered in this section.
- Thread Priority - Signals processed in MSDP also have to compete with demands from other programs. The thread priority allows you to determine how important MSDP data is compared to other computer processes.
- Latency - I/O latency determines the additional time between signal inputs and signal processing, and, while lower latency is better for live performance, entry-level audio cards and interfaces may require longer latency to encode and decode data. The latency will be set to the default value determined by the driver, and changing the latency may result in unexpected signal artifacting.
- Scheduler in Overdrive - With this toggle turned on, time-sensitive messages will always receive top-priority. Turning this off is likely to cause unwanted clock desync on the metronome.
- Audio Interrupt - Allows audio to be processed on the same thread as other Max messages. This can lower latency, but it can also create massive spikes in the CPU load.
- Input and Output Ch 1 and 2 routing - This is where your default stereo outputs and first two inputs can be mapped to specific I/O channels on your hardware. To route additional channels, use the ‘I/O Mappings’ window.
- Audio Driver Setup - This button will open the default GUI for your selected audio driver. The interface is determined by the driver, and is not controlled by MSDP.
- Open I/O Mappings - this opens the secondary ‘I/O Mappings Window’, where you can set hardware mappings for up-to 1024 inputs and outputs.
The I/O Mappings Window
This window allows you to map hardware inputs and outputs to software inputs and outputs. While the window only displays 16 channels at a time, using the ‘Ch Group’ drop down menu allows you to display additional I/O channel mappings.
Note that, with MSDP 2.0, there is a current input limit of 16 channels, but the Multi-Out Mixer modules can be used to route audio to any hardware channel, as long as it’s been defined already in the I/O Mappings window.