Lesson: Introduction to Max/MSP Jitter, Max for Live, and Modular Programming
Introduction: Miller Puckette and Pure Data
Welcome to this lesson on visual programming for multimedia using Max/MSP Jitter and Max for Live. We will start by exploring the origins of these tools, beginning with Miller Puckette’s creation of Pure Data.
Miller Puckette is a pioneer in the field of computer music and multimedia programming. He developed Pure Data (Pd), an open-source visual programming language that allows users to create complex audio and visual applications through graphical patching rather than traditional coding.
Pure Data emphasizes key concepts such as:
- Signal Processing: Manipulating audio signals in real-time for synthesis and effects.
- Algorithmic Composition: Generating music using algorithms and data structures.
- Real-time Audio-Visual Manipulation: Interactively controlling sound and visuals during performances.
Pure Data’s influence extends to tools like Max/MSP, which expands upon Pd’s concepts with additional features and a more polished interface, catering to both beginners and professionals in the field.
Activity:
To better understand the foundations of visual programming, watch the following lecture series by Miller Puckette:
Additionally, review the Pure Data Manual to familiarize yourself with the environment:
Max/MSP Jitter: Multimedia Programming
Max/MSP Jitter is a visual programming environment that allows artists, musicians, and developers to create interactive audio and visual applications without writing traditional code. Let’s delve into its core components:
Audio Programming with Max/MSP:
Max/MSP provides tools for building audio applications through graphical objects connected in a patch. Key features include:
- Signal Processing: Objects like
osc~
(oscillator) andfilter~
allow you to generate and manipulate audio signals. - Synthesis and Sampling: Create your own synthesizers and samplers by combining various modules.
- Effects Processing: Design custom audio effects such as delays, reverbs, and distortions.
Visual Programming with Jitter:
Jitter extends Max/MSP with capabilities for video and graphics processing:
- Video Manipulation: Process live or pre-recorded video streams in real-time.
- 3D Graphics: Utilize OpenGL for rendering 3D graphics and creating visualizations.
- Data Visualization: Represent data through visual means, enabling interactive installations.
Hands-On Exercise:
Let’s create a simple patch that generates sound and visuals:
- Open Max/MSP and create a new patcher.
- Add an
osc~
object to generate a sine wave. - Connect the
osc~
object to again~
object for volume control. - Connect the
gain~
to adac~
object to send audio to your speakers. - Add a
jit.world
object to create a rendering context for visuals. - Create a
jit.noise
object to generate random pixel data. - Connect the
jit.noise
to ajit.gl.videoplane
to display it in the rendering context. - Lock the patch and turn on audio and video processing by clicking the appropriate buttons.
Experiment with changing parameters like the frequency of the oscillator and observe how it affects both the sound and visuals.
Additional Resources:
Max for Live: Extending Ableton Live
Max for Live (M4L) integrates Max/MSP directly into Ableton Live, allowing you to build custom devices that enhance your music production and performance capabilities.
Creating Custom Devices:
With Max for Live, you can create:
- Audio Effects: Design your own effects like filters, compressors, and delays.
- MIDI Effects: Build arpeggiators, sequencers, and generative MIDI tools.
- Instruments: Develop custom synthesizers and samplers.
- Control Devices: Automate parameters and create interactive controls for live performance.
Hands-On Exercise:
Let’s create a simple MIDI effect that generates random notes:
- Open Ableton Live and create a new MIDI track.
- Drag a blank Max MIDI Effect onto the track.
- In the Max editor, add a
metro
object set to trigger at regular intervals (e.g., every 500 ms). - Connect the
metro
to arandom
object to generate random numbers within a desired note range. - Connect the
random
output to anoteout
object to send MIDI notes. - Lock the patch and turn on the
metro
to start generating notes.
Assign an instrument to the MIDI track and listen to the random melody being generated. Experiment with different intervals and note ranges.
Further Exploration:
Modify the patch to include controls for note duration, velocity, and scale constraints. This exercise demonstrates how Max for Live can be used to create unique musical tools.
Resources:
First Hands-On Patch: Feedback Loop with Max for Live
Objective:
To understand the basics of binary logic and looping behavior by creating a simple feedback mechanism using delays.
Concept:
We’ll create a feedback loop between two buttons (toggles), each triggering the other after a delay of 500 milliseconds, resulting in an ongoing loop.
Step-by-Step Guide:
- Open Max for Live and create a new MIDI Effect Device.
- In the Max editor, add two
toggle
objects and label them “Button A” and “Button B”. - Place a
delay
object between them and set it to 500 milliseconds. - Connect “Button A” to the
delay
, and then connect thedelay
to “Button B”. - Connect “Button B” back to “Button A”, forming a loop.
- Lock the patch and click “Button A” to start the loop.
Discussion:
This simple patch illustrates how feedback loops can create continuous actions without additional input. It introduces fundamental concepts of timing and state changes, which are essential in programming interactive systems.
Experimentation:
Try altering the delay time to see how it affects the loop’s speed. Add more toggles and delays to create complex patterns. Consider how this mechanism could be applied to trigger sounds or visual events.
Additional Tutorials:
Beap and Vizzie: Modular Systems in Max
Beap and Vizzie are collections of pre-built modules in Max that emulate modular synthesizers and visual processors, respectively.
Beap – Building Audio Synths:
Beap modules allow you to construct complex audio patches quickly. Let’s create a basic synthesizer:
- Open a new Max patcher.
- From the Beap library, add an OSCILLATOR module.
- Add a FILTER module and connect the oscillator’s output to the filter’s input.
- Add an ENVELOPE module to control the amplitude.
- Connect the filter’s output to an OUTPUT module to send sound to your speakers.
- Use the envelope to modulate the filter or amplitude for dynamic sound shaping.
Experiment with different oscillator waveforms, filter types, and envelope settings to create unique sounds.
Vizzie – Creating Visual Effects:
Vizzie offers modules for video processing and generation. Let’s create a simple video effect:
- Create a new Max patcher.
- Add a Vizzie GRABBR module to capture live video from your webcam.
- Add a Vizzie FZER effect module, such as PIXL8R to pixelate the video.
- Connect the GRABBR output to the FZER input.
- Add a Vizzie VIEWR module to display the output.
- Activate the modules and observe the live video effect.
Try swapping out different effect modules to see various visual transformations.
Discussion:
Using Beap and Vizzie, you can focus on creativity and experimentation without worrying about low-level programming details. They are excellent tools for prototyping ideas and learning about modular synthesis and visual processing.
Further Learning:
Summary
In this lesson, we’ve explored the foundations and applications of Max/MSP Jitter and Max for Live. You have learned about visual programming concepts, built hands-on patches, and experimented with modular systems using Beap and Vizzie.
The skills you’ve gained open up endless possibilities for creating interactive audio-visual art, custom music production tools, and innovative performance systems.
Continue to explore and experiment with Max/MSP, Max for Live, Beap, and Vizzie. Your creativity is the only limit to what you can achieve!