workshop : max/msp course @ Goldsmiths College, London
http://www.goldsmiths.ac.uk/departments/music/ems/index.html
max/msp course notes
day 1
19 March 2005
Goldsmiths College, London
bang & toggle -> easy way to see what's going on in the patch; test; use it to print values
apple m = status window
number box passes on info when it receives the bang
toggle
- off when 0 (int)
- on for any other int value
- if it gets a float, it truncates the decimal to give 0 or 1 eg 1.57 would give 1; 0.73 would give 0
give arguments labels if multiple elemnts are used
eg print A, print B
prepend set - message -> monitoring data; to preview data
timings are in milliseconds
metro 1000-34 -> 1000 is the start value; 34 will override 1000 (right input)
help metro -> to show help pages (patches); or check help menus; also check status bar
1. what numbers do we use to control the object
2. what numbers do we need
3. how do we convert 1. to 2.
gui:
- toggle
- int number
- float number
- sliders
- radio buttons x/y
- dial
- keyboard
-- polyphonic (multiple select/toggle keys) or monophonic (single select keys)
- apple i shows inspector eg uslider inspector
fatal loops = endless loop; stack overflow
right to left rule of calculation
- patch values are calculated from top to bottom and right to left
maths expressions
select object
- if then else
midi - can use virtual midi if no midi device connected
midi objects
- don't use midi in/out much as this will include all the sync/clock/timing midi commands
- use note in/out or bend in/out (pitch bend) etc instead
- ctrl in -> fader control
16channel = 1 channel for each device
- this is right most number (A)
note in
(C) (B) (A)
(A) who do you speak to (channel)
(B) what do you tell it (velocity)
(C) what value (value)
need to send note off also to stop notes. use makenote instead to manage this for you.
makenote 67 1000 will turn off the note after 1 sec (1000)
if musician plays notes on keyboard they decide when the note offs are sent so you don't need to send them for live players; only for virtual midi
trigger ff
trigger ii (int)
trigger (bb (bang)
- avoids the right-left problems for cases i++ or ++i
----
first audio / msp
audio in (mic icon) / adc (sound cards with multiple inputs)
audio out (speaker icon) / dac
option - dsp status
- double click on objects
- select sound card / audio driver options
adc input I/O mappings
- you could setup 5.1. or 8ch audio here or best to do it using dac options
dsp status:
latency
- more response, smaller the number
- tradeoff is that audio might drop out
- if you set signal overdrive = on this guarantees continuous audio stream
- you may get timing issues as max struggles to keep up with the processing required withe overdrive=on
- overdrive=off, max performs better but audio may drop
sampling rate 44100
i/p ch
o/p ch
i/o vector size 512
sig vector size 64
msp patch leads are yellow
gain faders are striped
max objects -> calculates 1msec
msp objects - calculate according to the sampling rate eg 44k
dsp status:
cpu utilisation -> this is % cpu max/msp needs to do audio
- @ 70% mouse movements are degraded
- max/msp doesn't support dual processors for msp/dsp audio but you could assign one processor to max and the other to msp/dsp
- another way round this is to use keystroke commands instead of mouse during performance
calculator:
route - send error messages
#
itoa (int to ascii)
prepend set
(value)
open
sfplay (play loaded sound files)
simple audio chains
max/msp doesn't like the laptop going into standby
lists
unpack
- to unpack a list of numbers into a list of inputs
unpack 0 0 0 0 0 0 -> 0 is initial value also
makenote does the unpack internally
pack 0 0
- 2 inputs -> 1
47 57
pack 0 0
prepend set
47 57
name of ch (this can be something else)
send notes
receive notes
- these two: pack the list first to send to sendnotes
* scale is pc bandwidth processor power intensive
so you use scale to invert the volume on freeform input square
so volume decreases as cursor decreases
default is volume increases as cursor decreases which is opposite to how we visually see it to what we hear
scale 0 127 127 0
scalle 0 127 127 0
the fifth argument is for exponential scale value
send maximum
- right click to see if this name 'maximum' has been used before in the patch
send, receive or s, r (shortcut names)
trigger t
p double_click - patch "double_click" -> a patch within a patch
counter - can have multiple values and also multiple variables
set $1
jam $1
max $1
object ~ is msp object not max object
---
for next session, do up to tutorial 20 - max tutorials, + up to tutorial 10 msp tutorials
refernce manual - max object thesaurus
cycling74 alias folder -> contains external patches library
extras folder -> contains tools which appear in tools menu
examples -> these are patches
next session is April 9th





