$Page Max for Live Introduction $TargetName Max for Live Introduction Home.png *Building your own Max devices* As well as using devices made by Ableton or the Max community, as a Max for Live developer you can customize existing devices – or create your own from scratch. *Note:* Before learning how Max operates within Live, you’ll need to be familiar with the basics of Max: connecting objects, sending events and signals, and opening help files. If you haven't worked with Max before, we recommend $Link starting with this video. In this introduction you’ll open up some devices and get a feel for using Max within Live. Not all parts of the patches are explained; some learning is left to intuition and self-study. How deep you go in your first pass is up to you. → $Link Max Patching $Comment -------------------------------------------------------------------------------- $Page Max Patching $TargetName Max Patching *First steps* Max for Live devices can be edited in the Max application. Your device will still communicate with Live while you’re editing it, so if the set is playing your changes will immediately affect what you hear. After saving and closing the device, changes to the interface will also be seen in Live. *A first look at a device patch* The /Note Doubler/ device on track 1 creates a delayed copy of every incoming note. Open the device by pressing the Edit button. Max-Patching-Start.png In this pack we will be working with the version of Max that is bundled with Live. So after Max has opened, if you see this notification.. New-version-available.png ..choose Don't show again and close it. Then, follow the numbered steps in the patch. Note-Doubler.png This will show you how to: -> Use Live interface controls -> Add a dial to the device interface -> Switch back to presentation mode and position the dial to show up in Live → $Link Making MIDI Effects $Comment -------------------------------------------------------------------------------- $Page Making MIDI Effects $TargetName Making MIDI Effects *Modifying MIDI data* The /Octave Adder/ device on track 2 is a MIDI effect that adds transposed copies of incoming notes. The number of notes added is set by the Octave Copies control. *Looking at the patch* Open the device, switch to Patching mode and follow the numbered steps to see how MIDI notes can be treated as numbers and manipulated with objects. Octave-Adder.png This will show you how to: -> Split MIDI notes into pitch and velocity, and join the two together again -> Find out more about in- and outlets -> Disable a patch cord and find out how this affects the functioning of the device → $Link Making Instruments $Link Learn more about MIDI effects $Comment -------------------------------------------------------------------------------- $Page Making Instruments $TargetName Making Instruments *Turning MIDI into audio* The /Basic Saw/ device on track 3 uses incoming note pitches to change the frequency of a saw wave, and uses note velocities to control the amplitude of an ADSR envelope. *Looking at the patch* Open the device, switch to Patching mode and follow the numbered steps to see how MIDI notes can be turned into audio. Basic-Saw.png This will show you how to: -> Compare regular number boxes to Live number boxes -> Derive frequency and amplitude from a MIDI note's pitch and velocity -> Add new Max for Live objects -> Create an amplitude envelope using [adsr~] → $Link Audio Effects $Link Learn more about Instruments $Comment -------------------------------------------------------------------------------- $Page Making Audio Effects $TargetName Making Audio Effects *Modifying audio* The /Noise Adder/ effect on track 4 adds white noise depending on the amplitude of the incoming signal. *Looking at the patch* Open the device, switch to Patching mode and follow the numbered steps to see how changing audio signals with mathematical operations can affect the sound. Noise-Adder.png This will show you how to: -> Modify signals with mathematical operators -> Find Max for Live object properties using the Inspector -> Change units for frequency and gain controls -> Look at the contents of subpatchers -> Name in- and outlets → $Link Modulating Parameters $Link Learn more about Audio effects $Comment -------------------------------------------------------------------------------- $Page Modulating Parameters $TargetName Modulating Parameters *Controlling Live Parameters from Max* The /Human LFO/ device on track 5 is a modulator that can control any parameter with a humanized sine wave. *Looking at the patch* Rather than focusing on how the waveform is "humanized," when you open the device, the numbered steps will take you through the parts of the patch that implement the Map button. Human-LFO.png This will show you how to: -> Monitor which parameter is selected in Live -> Send a reference to a Live element (an id) through patch cords in Max -> Remotely control a parameter from Max -> Store a reference to a parameter in the Live Set -> Use color names to change the colors of Max interface elements -> Use [live.colors] to look up color names for use in a Max device -> Use [snapshot~] to go from a signal to events → $Link Routing Channels $Comment -------------------------------------------------------------------------------- $Page Routing Channels $TargetName Routing Channels *Routing channels* The sidechain input in /Side Drive/ on track 6 controls the amount of overdrive applied to the signal that passes through. *Looking at the patch* This device uses an *abstraction* that is reused in other devices, [Routing]: a subpatch, but saved as a separate file. The device is frozen to include that dependency. The instructions point out a danger in unfreezing a device: to prevent losing work, it is important to have only one copy of a dependency on your computer. Side-Drive.png This will show you how to: -> Start working on a frozen device -> Faking a dropdown that can change its contents, using [umenu]s. These will not be shown or stored as parameters. -> Save the device routings in a set: this needs no action in the patch as it is saved automatically For more about how Max finds files that a device depends on, see $Link the documentation for the Search Path . → $Link Controlling Live $Comment -------------------------------------------------------------------------------- $Page Controlling Live $TargetName Controlling Live *Controlling Live* The clip in track 7 shows the notes playing in a clip, thanks to the /Note Monitor/ device. This is a small demonstration of how Live's behavior can be altered with Max. *Looking at the patch* You might need more background knowledge of Max to fully understand patches that access the Live API. Opening the device gives you an overall impression of how these kinds of patches look. Note-Monitor.png This patch shows that: -> You can use $Link Javascript in Max . Some operations, in this case splitting a string, can be easier to perform with Javascript than with Max objects. -> The [qlim 50] in the patch limits how often events pass through. It also lowers the priority from events in the scheduler thread to the main thread. Events in the scheduler thread are time-accurate but take away processing from Live's audio calculation. $Link Learn more about threading here. -> Applying a change to a Live Set via the Live API usually creates an entry in the Undo menu, which may not always be what you are after. -> The clip name is passed along as a /symbol/ which uses smart quotes to indicate that characters /including spaces/ are grouped together into a single message element. To prevent the quotes from showing up in the display, we use the $Link fromsymbol object. For an in-depth guide on using the API, see the $Link Live API Overview . For an overview of all the things you can do with the API, see the $Link Live Object Model , or browse the API with the $Link API Browser → $Link Conclusion $Comment -------------------------------------------------------------------------------- $Page Conclusion $TargetName Conclusion *This concludes the Introduction* You should now have a good impression of what Max can help you achieve in Live. *Diving in* To get more hands-on experience with programming in Max for Live, you can follow these step-by-step lessons below. They’ll guide you through the objects, typical structures and techniques that you’ll need to create your own devices. Lesson-Devices.png -> $Link MIDI Effects -> $Link Audio Effects -> $Link Instruments -> $Link Controlling Live -> $Link Routing and modulating -> $Link Debugging -> $Link Putting it all together The final lesson is a special Live Set that brings together all of the devices built during the previous lessons. They don't need to be followed in order, but they all contain unique tips and tricks that may be useful regardless of the device you want to build. Happy patching!