Exercise 7

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, tells you how to play sound stored in them, and, as a bonus, introduces a new kind of filter to try: a bank of bandpass filters.
  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~
  • fffb~

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.) Use a subpatch or abstraction to hold the delay code. If you know how to make a wet/dry mix control, add that.

    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’re looking for another challenge, try adding a bank of bandpass filters, using the fffb~ object. Copy the code from the Max Tips patch, but take some time to understand what it’s doing.

    This last step is optional!


  • 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.