You are previewing Multimedia Programming Using Max/MSP and TouchDesigner.
O'Reilly logo
Multimedia Programming Using Max/MSP and TouchDesigner

Book Description

A step-by-step guide to designing, building, and refining immersive audio-visual applications and performance environments using Max and TouchDesigner

In Detail

Max 6 and TouchDesigner are both high-level visual programming languages based on the metaphor of connecting computational objects with patch cords. This guide will teach you how to design and build high-quality audio-visual systems in Max 6 and TouchDesigner, giving you competence in both designing and using these real-time systems. In the first few chapters, you will learn the basics of designing tools to generate audio-visual experiences through easy-to-follow instructions aimed at beginners and intermediate. Then, we combine tools such as Gen, Jitter, and TouchDesigner to work along with Max 6 to create 2D and 3D visualizations, this book provides you with tutorials based on creating generative art synchronized to audio. By the end of the book, you will be able to design and structure highly interactive, real-time systems.

What You Will Learn

  • Build well-structured systems for multimedia
  • Build audio synthesis tool using Max/MSP
  • Create versatile sampling programs
  • Design tools to generate visuals from scratch with TouchDesigner
  • Generate audio-visual systems using tools such as Gen and Jitter
  • Apply a procedural approach to both audio and video
  • Get to grips with both rapid prototyping and beginner's examples as professional design principles
  • Expand your tools and generate custom tool sets for future projects
  • Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.

    Table of Contents

    1. Multimedia Programming Using Max/MSP and TouchDesigner
      1. Table of Contents
      2. Multimedia Programming Using Max/MSP and TouchDesigner
      3. Credits
      4. About the Author
      5. About the Reviewers
      6. www.PacktPub.com
        1. Support files, eBooks, discount offers, and more
          1. Why subscribe?
          2. Free access for Packt account holders
      7. Preface
        1. What this book covers
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Reader feedback
        6. Customer support
          1. Downloading the example code
          2. Downloading the color images of this book
          3. Errata
          4. Piracy
          5. Questions
      8. 1. Getting Started with Max
        1. Understanding the basic concepts of Max
        2. Modular basis for expressions
        3. When to use Max
          1. Max – the message domain
          2. Max Signal Processing
          3. Jitter, Matrix, and video processing
            1. Jitter data format
        4. Summary
        5. Exercises
      9. 2. Max Setup and Basics
        1. Setting things up
          1. Getting help
            1. The Max-integrated help system
            2. The forums
            3. Externals
            4. Other resources
          2. Setting up Max
            1. The audio status window
            2. Setting up MIDI
            3. Other preferences
            4. Object defaults
            5. File preferences
            6. Installing externals
          3. Other setup tips
          4. Organizing finished code
            1. Abstractions
            2. Extras
            3. Clippings
            4. Packages
            5. Projects
            6. Prototypes
        2. Basic Max patching and GUI
          1. Objects in Max
            1. Arguments
            2. Attributes
        3. Creating our Hello World program
          1. Dissection and construction
          2. Contents
          3. The [print] object
          4. The message box
          5. The MSP-Hello World
        4. A quick overview of GUI
        5. Summary
      10. 3. Advanced Programming Techniques in Max
        1. Introducing the synthesizer example
        2. Initializing a patcher
        3. Excursus of microscopic timing and message ordering
        4. A bpatcher for MIDI input
        5. Sending and receiving data
        6. The #n notation
        7. Collections of data
        8. More message box magic
        9. Structuring our patches
          1. The pattr family – a communication system
        10. Timing in Max
        11. The event priority
        12. Debugging
          1. Smart ways to debug
          2. The debugger
          3. Optimizing
        13. Scripting and the this patcher
        14. Summary
      11. 4. Basic Audio in Max/MSP
        1. Basic audio principles
        2. Audio synthesis
          1. Amplitude modulation
            1. Ring modulation versus amplitude modulation
            2. Tremolo
          2. Feedback
          3. Frequency modulation
            1. Controlling FM
            2. Feedback
            3. Phase modulation
          4. The poly~ object
            1. Managing instances and patcher loading
            2. Polyphony and voice allocation
          5. Additive synthesis
            1. Discrete Summation Formulae
          6. Subtractive synthesis and filtering
            1. The classic approach
            2. Building an equalizer
            3. The filter theory: an introduction
          7. Waveshaping
        3. Sampling and audio file playback
        4. Mixing and signal routing
          1. Conventional mixing
        5. Summary
      12. 5. Advanced Audio in Max/MSP
        1. More sampling
          1. Granular sampling
        2. FX
          1. Stutter
          2. Dynamics
            1. Noise gate
            2. Working with expanders
            3. Limiter
            4. Compressor
          3. Reverberation
            1. Poly as a cascade
            2. Convolution
            3. Taking a room's impulse response
        3. FFT
          1. Drawing a signal's spectrum
          2. Simple convolution
          3. An FFT filter
          4. Spectral reverb and freezing
          5. Recording and playback of FFT data
          6. Transient detection
        4. Sample-accurate sequencing
        5. Summary
      13. 6. Low-level Patching in Gen
        1. Introducing Gen
        2. The Gen workspace
          1. Exploring the differences between Max and Gen
            1. Parameters through param
            2. Buffers and data
            3. Subpatchers and abstraction inside Gen
            4. Genexpr and the CodeBox
            5. Efficiency
        3. Examples
          1. The Karplus-Strong synthesis
          2. A mass-spring system
          3. Waveguides and scattering junctions
        4. Further reading
        5. Summary
      14. 7. Video in Max/Jitter
        1. Inputting and outputting Jitter data
        2. Getting started with the Jitter matrix
          1. Matrix processing
          2. Feedback and delay
        3. Using OpenGL in Jitter
          1. Geometry manipulation
          2. Shaders and FX
        4. Summary
      15. 8. Max for Live
        1. Introducing the fundamentals of Max for Live
          1. MIDI in/out
          2. Audio in/out
          3. Synchronization
        2. Parameters and saving
        3. The Live API
        4. An example device – a parameter modulator
        5. Summary
      16. 9. Basic Visualization Using TouchDesigner
        1. The need for TouchDesigner
        2. How to get help
        3. Basics and UI of TouchDesigner
          1. A scripting prologue
          2. Hello World
            1. COMPs
            2. TOPs
            3. CHOPs
            4. SOPs
            5. MATs
            6. DATs
          3. The operators
            1. The viewer flag
            2. The clone immune flag
            3. The cooking flag
            4. The bypass flag
            5. The lock flag
            6. The viewer active flag
          4. The parameter dialog
          5. Wires and links
          6. The select OP
          7. A closer look at timeslicing, CHOPs, and exporting
          8. Panes
          9. Components – structuring a project
            1. Where am I?
            2. Creating our first UI
            3. Hierarchy
            4. Abstraction
            5. Palette
            6. Local
            7. Clones
            8. What's happening in root?
          10. Assign a text editor to TouchDesigner
        4. Summary
      17. 10. Advanced Visualization Using TouchDesigner
        1. The basic audio-reactive video
        2. A 2D composting example
        3. Replicator COMP
          1. The me.digits expression as a way to individualize replicants
        4. Connecting Max and TD
        5. A component for lots of movies
        6. Converting between OP families
        7. Dealing with time
          1. The Animation component
            1. Using the animation COMP for nonlinear purposes
          2. Synchronization
            1. SMPTE LTC
            2. Audio ramp
            3. UDP
        8. Introducing 3D rendering
          1. SOPs
          2. Assigning a material
          3. The data inside SOPs
        9. Summary
      18. 11. 3D Rendering and Examples
        1. Interactive and non-procedural tools
          1. The geometry viewer
          2. Grouping by selection
          3. The Modeler
        2. The Geo COMP
          1. Instancing
        3. Camera, light, and shading
          1. Cameras
            1. A camera path
            2. Cut and blend
            3. Fog and FOV
            4. Lights and shadows
          2. Materials
            1. Transparency
          3. Render passes
          4. Render picking and 3D GUIs
          5. Examples of procedural modeling
            1. A speaker
            2. Structure
            3. Modeling
            4. Rendering
          6. A waterfall plot
            1. Structure
            2. Modeling
          7. A fractal texture
            1. Modeling
          8. Liquid
            1. Structure
            2. Modeling
            3. Rendering
          9. A house in a landscape
            1. Structure
            2. Modeling
            3. Rendering
        4. Summary
      19. 12. Connecting Our Software to the World
        1. Analog synths and control voltage
        2. Arduino and microcontrollers
          1. An Arduino example project
            1. Hardware requirements for the Arduino project
            2. The Arduino code
          2. Pure Data
        3. Multi-touch screens
          1. The TUIO protocol
        4. Interfacing other programs
          1. Open Sound Control (OSC)
          2. MIDI
          3. Keystrokes and simulated user activity
          4. Audio and video
        5. Multispeaker setups
          1. Exhibitions
        6. Exporting an application
          1. Customizing an application
        7. Collaborative work
        8. Summary
      20. Index