MUC4401: Composition of Electroacoustic Music
MAX Assignment No. 3

    The purpose of this assignment is to build two patchers.

    (1) Create an algorithmic patcher. This patcher will utilize a mathmatic expression or set of expressions to generate a musical phrase from a dynamic input (could be different each time). Research the literature for expression to use in the generation of your material (fractal, geometric, and genetic areas are packed with usable equations). This patcher should include the following:

    • include a method of storing MIDI data (sequence, buffer, table, etc.)
    • allow the user to initiate the algorithmic process
    • utilize a user scalable time element if appropriate
    • allow the user to select with a menu the MIDI controller (keyboard, wind controller, dance controller, et al) via "midiinfo"
    • allow the user to select with a menu the target MIDI module via "midiinfo"

    Utilize the following MAX objects to accomplish this assignment (not all are necessary).

      midiin
      midiout
      midiinfo
      button
      a.k.a. bang button,
      or loadbang
      slider
      number box
      message box
      comment box
      seq,
      mtr,
      funbuff,
      or table
      expr and/or
      vexpr
      prob and/or
      random
      stripnote
      metro

    A paper on the use of fractals in real-time performance, by Dr. Gary Lee Nelson, can be downloaded from the following site.


    (2) Create a "hyper-keyboard" MAX controller. This patcher allow the performer to select the functions of a sequencer from the MIDI controller (keyboard). This patcher will have the following functions:

    • allow a user to send "record," "start," "stop," "read," and "write" sequencer functions from the MIDI controller (keyboard)
    • let the performer control the playback tempo of a sequence from the modulation wheel of the MIDI controller (keyboard).
    • trigger an algorithmic "sub-patcher" (see part one of this assignment)
    • allow the user to select with a menu the MIDI controller (keyboard, wind controller, dance controller, et al) via "midiinfo"
    • allow the user to select with a menu the target MIDI module via "midiinfo"

    Utilize the following MAX objects to accomplish this assignment (not all are necessary).

      select
      midiin
      midiout
      midiinfo
      button
      a.k.a. bang button,
      or loadbang
      slider
      number box
      message box
      comment box
      midiparse
      midiformat
      pack
      unpack
      umenu
      seq
      route and/or
      select
      patcher
      metro

    Utilize the Clue Menu (found under the WINDOW menu) to identify the objects available in the palette. Remember that you can use print statements, number boxes, buttons, etc. to debug your patcher. These items will help you track the program flow though the patcher.

    BONUS: Included "panic" button (all notes off) on the hyper-keyboard assignment above. See Borax, flush, and midiflush objects as keys to possible solutions.

      Borax
      flush
      midiflush

EXAMPLE: Smale's Horse Shoe

click above to enlarge

- last update 3 September 2010 -