Outline:
---------------------------- 1 -------------------------
A. General terminology and considerations
batch/interactive
the batch era
why you need interaction - you don't know what data you'll
need so ask user for it
hard-real-time/soft-real-time/non-real-time
hardware/software
determinism
latency
archivability
pluggability
operating system interface
graphical vs. text environments
B. Pd message system
Objects and classes, messages and methods
sort-of object oriented
inheritance : objects, gobjects, text objects (t_object)
h files: m_pd.h m_imp.h s_stuff.h
atoms and messages (argc, argv)
t_pd: m_class.c
------------------------------ 2 ------------------------
A. Historical introduction: synthesis software and hardware
hardware systems
modular synth
relationship w/Music N?
MIDI synth
B. symbols and text; connections
m_atom.c, m_binbuf.c, m_class.c (for gensym)
Objects and messages and methods
patchable objects - t_object (t_text): m_obj.c
PD instances (pd_this)
threading and instances
------------------------------ 3 ------------------------
A. Historical introduction: control systems
rtsked
Vercoe 73
4CED
scheduling and rescheduling breakpoints?
SAMBOX/musbox
why not SAMBOX at IRCAM? (portability; no ADC;
wrong update structure)
hmsl
chant/formes
B. time and scheduling
DSP versus control
the clock object
------------------------------ 4 ------------------------
A. Audio streaming
fifos
sync
sample and other clock sources
cost of missing a sample
recovering from missed samples
sync (when more than one I/O device)
LAC paper (Stanford) about managing drifting clocks)
audio latency
non-audio clocks
B. Gui and queuing
s_inter.c
widget behaviors
undoing (what's undoable?)
------------------------------ 5 ------------------------
A. signal flow model for signal processing
compiled versus interpreted
signals and unit generators
blocking
DSP loops
Fourier analysis
The control/DSP interface
ADSRs
B. the DSP chain
blocking and switching
------------------------------ 6 ------------------------
A. Multiprocessing and threading
shared versus dedicated memory
priorities
preemption and interrupts
interprocess latencies model from FTS
historical (4X, ISPW, SAMBOX)
multi-processor CPUS
B. data structures
gpointers
drawing instructions
arrays
------------------------------ 7 ------------------------
A. more on parallelism
two paradigms for threads
fifos
can't get return values
shared memory
race conditions
data integrity
locking
priority inversion
difficulty of verifying locking schemes
B. DSP objects
delwrite/delread
osc~
samphold~, snapshot~
line~, vline~
------------------------------ 8 ------------------------
A. Data types, abstraction, modularity, and DSP on modern CPU architectures
memory, registers, and ALUs
B. loading and saving files
pd messages to "objectmaker" and "canvasmaker"
abstractions
diff problem - git repo-ability
------------------------------ 9 ------------------------
A. Design considerations revisited
text/graphical
low floor / high ceiling
data types
implementation language
embed in a language?
memory management
computer vs. special hardware
B misc 1
audio and MIDI subsystems
Networking
streaming to/from disk
the watchdog
------------------------------ 10 ------------------------
A other modern system architectures
Supercollider
Plug-in hosts (Ableton, ProTools, etc.)
Kyma
B misc 2
pd~
loading externs
expr~