RESOURCES
Useful resources (links, tutorials, example code, readings) will be posted here. Please be sure to check back in from time to time, as this page will be updated throughout the course.
Week 1
Syllabus
Context
Code
https://cycling74.com/downloads/
Max Resources
- https://cycling74.com/forums/
- https://smile.amazon.com/dp/8899212023/
- https://smile.amazon.com/dp/8890548444/
- https://cycling74.com/tutorials/
- https://github.com/Cycling74/percolate
Sound Design
- Andy Farnell – Designing Sound: https://smile.amazon.com/dp/0262014416
- All examples from Designing Sound in Pd: http://aspress.co.uk/sd/
- Some of the examples from Designing Sound translated to Max: https://github.com/unriginal/Designing-Sound-Max-Patches
Helpful Tools
- MPEG StreamClip: http://www.squared5.com/
- SoundFlower: https://github.com/mattingalls/Soundflower
- JACK: http://www.jackaudio.org/
- SoundHack: http://www.soundhack.com/freeware/
- Max Toolbox: https://github.com/natcl/maxtoolbox
- RGB VGA Volt: http://jameshconnolly.com/rgb-vga-volt.html
- SoundHack Plugins: https://www.soundhack.com/freeware/
Unhelpful Tools
Max Workshop 1: Intro to Max / Jitter
MAX INTERFACE BASICS
1. What is Max?
- Who has used it?
- Why?
2. Interface overview
- Menus, object instantiation
- Locking / unlocking patches
- Tool palettes
- Connecting objects
- Inspector
- Debugging via the Max window
- Options menu, incl. file path, audio status
- Extras window, incl. audio tester
- Presentation mode
- Shift-drag to patch in Max 8
3. How to get help / about the documentation
BASIC OBJECTS
- object
- message
- comment
- bang
- toggle
- loadbang
- loadmess
ORDER OF EVENTS
- right-to-left, bottom-to-top
- trigger
- loadbang
- loadmess
DATA TYPES
- bang
- int
- float
- symbol
- list
- signal
THE BIG BANG
- metro
- qmetro
WHAT IS THE MATRIX?
JITTER UI OBJECTS
- jit.pwindow
- jit.window
- jit.fpsgui
VIDEO FILES
- jit.movie
VIDEO COMPRESSION
- Intra-frame vs. inter-frame coding
- Photo JPEG is your friend (Apple ProRes too)
- Easy compression using QuickTime 7 Pro
- More easy compression using MPEG StreamClip
VIDEO I/O
- jit.grab
- jit.rota
VIDEO MIXING
- jit.xfade
BASIC / VIDEO MATHS
- +, -, *, /, !+, !-, !/, %
- jit.op
ARGUMENTS VS. ATTRIBUTES
- attrui
BASIC UI CONTROLS
- hslider, vslider
- multislider
LISTS
- pack
- pak
- $1
GOING FULLSCREEN
- fullscreen $1
- ;jitter cursor $1
- jit.window attributes: @fsmenubar, @interp
- jit.world for pillarboxing / letterboxing
Week 2
Context
Code
Max Workshop 2: MSP + Digital Audio Basics
BASIC MSP OBJECTS
- ezdac~ and ezadc~
- dac~ and adc~
- number~
- cycle~
- meter~
- scope~
- spectroscope~
RECORDING TO DISK / PLAYING BACK FROM DISK
- sfplay~
- sfrecord~
- autonaming recordings w/ sprintf, date
Max Workshop 3: Advanced Digital Audio Processing + Synthesis Fundamentals
LIVE MULTITRACKING
- Recording multichannel files (note: 2Gb limit for both .aif & .wav)
- What if your patch crashes (or goes over 2Gb limit) before writing the header?
- Stereo files: Soundhack
- Multichannel files: cf. Diemo Schwarz's aifffixlength.c
- Splitting multichannel files using De-Interleaver.
MIXING / CROSSFADING
- +~
- *~
- gain~
- !-
- line~
- curve~
- gates & switches
FUN WITH MEMORY BUFFERED AUDIO
- buffer~
- play~
- groove~
- wave~
- syncing wave~ w/ rate & @sync 1
- record~
- feedback with buffers
Week 3
Context
Code
Max Workshop 4: Data Shaping + Manipulation
LISTS
- pack, pak
- unpack
- zl
RANDOMNESS
- decide
- drunk
- random
- urn
Max Workshop 5: Sound, Automation + Trickery
LOGIC / DATA FLOW
- <, <=, ==, >=, >
- if / else
- select
- change / route
DATA SCALING
- zmap
- scale
- osav.scale
- expr
- vexpr
- jit.expr
VARIABLES, DATA STORAGE
- sprintf
- coll
MINING FOR / RECALLING QT LOOPS
HANDY OBJECT
- jit.movie~
SPATIAL AUDIO FUNDAMENTALS
1. Phase-controlled panning
- frozen cycle~
- pan4S
2. el.npan~
3. Ambisonics (ICST)
- 1 signal
- 2 signals
- X/Y Controls
- X/Y/Z & A/E/D Controls
MORE ABOUT SPATIAL AUDIO
- Max 8 MC (MultiChannel) Wrapper overview
- Envelop for Live -> HOA Decoder
- sensel
- spat5~ (pan / binaural)
Max Workshop 6: Sound / Image Synthesis
SUBTRACTIVE SYNTHESIS
1. Basic waveforms
- cycle~
- tri~
- rect~
- saw~
- phasor~
2. Special features
- Phase offset: cycle~, phasor~
- Duty cycle: rect~, tri~
- Syncing oscillators: tri~, rect~, saw~
3. Noise sources
- noise~
- pink~
- rand~
4. Filters
- filtergraph~
- biquad~
- cascade~
MODULATION SYNTHESIS
1. Smooth & stepped randoms
- train~
- sah~
- rampsmooth~
2. Some maths
- Basic maths: +, -, *, /, !-, !/, %
- Signal maths: +~, -~, *~, /~, !-~, !/~, %~
3. Fun with volume
- Tremolo
- Ring modulation (bipolar)
- Amplitude modulation (unipolar)
4. Fun with frequency
- Vibrato
- Frequency modulation
- Basic
- A’la John Chowning
- A’la F. Richard Moore
SIGNAL ANALYSIS
- snapshot~
- meter~
- zsa.descriptors~
EFFECTS
- jit.hue
- jit.brcosa
- jit.sprinkle
- jit.streak
- jit.slide
AUTOMATION
- controlling Jitter with MSP (basic)
- controlling Jitter with MSP (with data scaling)
THIRD PARTY VIDEO SYNTHESIS TOOLS
- VSynth
- REWEREHERE
Week 4
Context
Code
Max Workshop 7: Advanced Max / Jitter Techniques
TIMING TIPS / TRICKS
- cascading metros
- delay / pipe
- phasor~ sequencing
- syncing with rate~
TIDYING UP
- encapsulation (subpatches)
- patchers
- presentation mode
- bpatchers
Max Workshop 8: The Third Dimension and Beyond
KEYING
- jit.lumakey
- jit.chromakey
- suckah
MATRIX CUTTING / SPLICING
- jit.scissors
- jit.glue
- jit.submatrix
VIDEO DELAY
OPEN GL + VIDEO BASICS
- jit.gl.render
- jit.gl.gridshape
- jit.gl.handle
- jit.gl.videoplane
- @ortho 2
MULTI-VIDEO / MULTI-COMPUTER SYNCING
- Local sync with "frame 0"
- maxhole
- udpsend / udpreceive
- route
- osc-route
- Network sync with udpsend / udpreceive
- Multiscreener
- jit.gl.cornerpin
- jit.gl.cornerpin with presets
VIDEO & OPEN GL PT. 2
- loadram
- Videoplane xfade trick
- Multiple videoplanes xfading
- jit.gl.slab basics
- Blendmodes with jit.gl.slab
- Feedback with jit.gl.slab
- Adding video texture to a gridshape
EXTRUDING
- Basic extrusion
- Extruding with video texture
- Adding audio to the extrusion
USING 3D MODELS
- jit.gl.model basics
- Texturing a model with video
- jit.gl.light
- jit.gl.camera
- capture to texture
- jit.gl.world
- jit.gl.multiple
MORE ABOUT THE STUDIO
- using the patchbay
- using the mixer
- recording video with the VR-50HD
- https://proav.roland.com/global/support/by_product/vr-50hd/owners_manuals/
Week 5
Context
Code
Max Workshop 9: Interfacing with the External World
FRAME DIFFERENCING
- Basic Techniques
- Triggering discrete events based on a threshold value
- Background subtraction
- Video event grid
COMPUTER VISION WITH CV.JIT
- Frame center detection: cv.jit.centroids
- Blob boundary detection: cv.jit.blobs.bounds
- Blob center detection: cv.jit.blobs.centroids
- Feature tracking: cv.jit.features2track
- Face tracking: cv.jit.faces
Max Workshop 10: Managing Complexity
TIPS + TRICKS
- Easy probabilities with itable & table
- Softclip cheat with sinx~
- Another softclip cheat with tanh~
ABSTRACTIONS
- #1, #2, etc.
- Automatic w/ #0
- patcherargs
MANAGING COMPLEX PATCHES
- preset
- pattrui / autopattr
- pattr_ui
- nodes
BASICS OF POLY~
- in + out
- in~ + out~
- poly~ "args" (#1, #2...)
- Using poly~
- thispoly~
- Unique identifiers (#0)
- OSC to poly~
- Parallel processing
- Seeding random object with unique IDs inside poly~
- Voice stealing
- keeping track of poly~ with poly and midinote messages
FUN WITH POLY~
- Multitap video delay with poly~
- Framedifferencing a videogrid with poly~
MIDI
- ctlin / ctlout
- notein / noteout
- pgmin / pgmout
- midiin / midiout
- sysexin / sxformat
- routing with ctlin to handle multiple continuous controls
- midi mapping
EXTERNAL CONTROLS
- mousestate
- key mapping
- hi (human interface)
- mobile devices with touchosc
- fingerpinger externals
- Sensel Morph
- Ableton Push 2
- Livid Instruments Alias 8
- dmxis