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