Exercise 7: Live Audio Input

Many pieces for solo instrument or voice and electronics feature live input from a microphone picking up the sound of the soloist. This allows the software to provide real-time effects and also makes it possible to record parts of the performance for playback during the piece.


We’re learning how to...

  • take live input from a microphone,
  • record this sound into a buffer, and
  • play back the sound.

How to Do This Exercise

Working on the assignment is a two-stage process.

  1. Download Exercise 7 Max Tips. This folder of Max patches shows you how to access live input, explains the concept of a buffer and tells you how to play sound stored in them.
  2. Make a patch that does these two things:
    • route a microphone through a delay effect, and
    • record sound from a mic into a buffer, and play it.

See the Requirements and Suggestions section below for details. The Max Tips patches explain the required techniques.

Be sure you understand what each of these Max objects does:

  • ezadc~
  • buffer~
  • waveform~
  • play~, groove~
  • record~
  • loadmess

Requirements and Suggestions

  • Set up your patch to receive input from a microphone. Use an ezadc~ object for this. Patch a live.gain~ or meter~ after the ezadc~, so that you can detect clipping on the meter. Control the level of the mic signal from outside of Max: at the sound input control panel for your system or a mic preamp trim knob, if you have an audio interface. Use the meter to determine the right input level.
  • Run the microphone through a stereo delay, with different delay times for each channel and some feedback. (The feedback is usually the same for both channels.) You can build your own stereo delay with tapin~, tapout~, etc., as we did in Exercise 5. Or you can use the Auzzie 2DELAYR module.

    CAUTION: If using a laptop microphone, be sure to wear headphones to avoid feedback from the computer’s built-in speakers.

  • Create a buffer~ object that holds three seconds of sound, and set up your patch to record sound into this buffer using the record~ object.
  • Play the contents of the recorded buffer~ using the play~ object. Provide message boxes that let you play the buffer using a few different speeds.

    An alternative to play~ is the groove~ object, which is arguably a bit more flexible than play~. However, many people find groove~ trickier to use.

    The essential difference between play~ and groove~ is that with play~, you specify how the playback pointer moves across the buffer, whereas with groove~, you specify a playback rate.

    If you don’t understand (or like) play~ or groove~, then you can use the Auzzie APLAYR module instead. This uses groove~ behind the scenes to play a buffer, so it works with sound recorded during a performance. You can tell APLAYR to use a specific buffer by feeding its right inlet the message “buffer <buffer_name>“.


  • Be sure you satisfied the criteria listed above.
  • Submit your Max patch in Canvas.

Grading Criteria

This exercise is graded pass/fail. You must submit the exercise by Thursday midnight to be eligible for a pass.

Your patch must

  • operate correctly and
  • implement the functionality described in the “How To Do This Exercise” section above.