Music 171 homework 6
This and future assignments are designed to be possible starting points
for a final project. This assignment is to make an interactive sampler that
makes decisions based on microphone inputs. If you clap into it twice it
should then continue the pattern, clapping back to you at whatever time interval
you set (the time between the two claps). If you clap once (i.e., the last
clap it has received is more than a second ago), it should update the sample
without changing the rhythm.
Here are a sample input and
output.
To make the patch:
- Use the bonk~ object to detect attacks (beginnings of sounds) in the
patch's input. The input should come from an adc~ object, but for testing you
can store a sound in an array instead. If not, be sure to use headphones so
that the speaker doesn't feed back into the mic. The bonk~ object is calibrated
to work best for quiet signals; you can multiply the adc~ output by 0.03 or so
before feeding it to bonk~ for good results. Before you go further it would be
a good idea to test this by connecting a bonk~ output (either one) to a print
object and verify that it is triggering OK.
- Each time bonk~ outputs a message, begin recording the adc~ output (or
your test signal) into an array for later playback.
- Also each time bonk~ outputs a message, measure the time from the previous
message. If this time is less than a second, use it to set the time interval of
a metro object and start (or restart) the metro. It will then continue
outputting bang messages at the tempo set by the two bonk~ messages.
- Each time the metro outputs a bang, start a sample playback. You can just
use tabplay~ for this for simplicity, but you should mute the output before
starting playback to avoid clicks, as shown in 4b.more-sampler.pd (although I
only used 5 milliseconds here, not 10 as in that example).
- For sanity's sake, make a button that stops the metronome. (You can start
it again anytime by making another pair of attacks in the audio input).
back to music 171 main page