Music 206 : Inside Pure Data
spring quarter 2020, University of California, San Diego
http://crca.ucsd.edu/~msp/syllabi/206.20s/

Time and location: Fridays 2-5, on either jit.si or Zoom
Instructor: Professor Miller Puckette,
cpmc 251, msp@ucsd.edu, http://msp.ucsd.edu

Videos of classes

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~