From CCRMA Wiki
Lab 1: Mappings, Modes, Sound Generation
Assigned Monday June 22
Download the Lab Patches to Your Home Directory
- Download the patches into your pid2009 directory and uncompress the archive.
Play Around With the Pd Patches
- Open the patch labeled myinstrument. Play around with this patch. You should be able to exhaust its musical potential in a matter of minutes; reflect on its strengths and limitations.
- Also try to understand how it works as a piece of software. (But please don't get hung up on the arcana - as always, if you get stuck, ask for help rather than waste time.)
- Right-click or option-click on any object to get a contextual menu including "help," which opens that object's help patch.
- Max specific:
- Check out the Max and MSP tutorials in the 'Help' pull-down menu.
- If you are looking for an object with a specific functionality but don't know what it might be called, consult the website www.maxobjects.com and try searching by keywords. However, don't get too distracted--many of the objects referenced by www.maxobjects.com are external objects that may not come installed with Max by default.
- Pd specific:
- Right-click on a blank portion of a Pd patch. Now when you select "help" you get a list of Pd's built-in objects, arranged by category.
- In the upper right hand corner of each Pd window is a "help" menu. This accesses the Pd tutorials as well as some online reference documentation.
- What happens when you hold down a key? Is this desirable?
- Try to change the behaviour of the system when you hold down a key.
Design a different musical interaction
Here are some ideas of changes that might make the patch more interesting:
- Involve more QWERTY keys
- Involve the mouse (see the [MouseState] object)
- Load in a larger collection of samples.
- Implement a mechanism to switch among banks of samples
- Multiple gestures to one result: design a way for the parameters of each triggered note to depend on multiple keypresses. For example, maybe only the space bar triggers notes, and all the other keys determine parameters of notes.
- Set multiple parameters modally, as volume works in the sample patch
- Use "chording": keep track of all the keys that are currently pressed, and use only that information to set the parameters for each note.
- One gesture to multiple results
- Use the "metro" object to trigger a steady stream of notes. Now you have two new parameters: repetition rate, and whether the metro is on or off.
- Use the "counter" object to step through a cycle (of samples, parameter settings, etc.)
- You could combine "metro" and "counter" to build a rudimentary sequencer that can step through a rhythmic pattern
- Invent a mechanism to record short sequences of keypresses and play them back in time.
- Incorporate looping or other interactive controls over the soundfile playback
- Use Pd's "spigot" object (or Max's "select" object) to route control information to different parts of your patch at different times
- Use some additional signal processing such as a filter, delay line, reverb, tremolo, etc. This gives you more parameters to control.
- Polyphony: make it so the patch can play multiple samples at the same time. (Hint: put multiple copies of "play-sample" in your patch, then use
- Use a totally different form of sound synthesis, such as FM, granular, or physical modeling.
We recommend that you pick one or a small number of these and work on it in depth, iterating on both the program/test/debug cycle as well as the design/implement/play cycle to craft something that has actual musical potential or is at least more fun to play. If you have an existing idea for your class project, you could use this lab to start thinking about implementing some of the modes and mappings. By all means, if you're inspired to try something else, go for it. If you'd rather spend today getting more of a broad sense of Pd's or Max's capabilities, feel free to work on many of these suggestions.
The Pd Community
Although Pd is clunky and has lots of usability issues, there is a large, dedicated, and very generous community of Pd users on the Internet. Do some web searching (e.g., with a search engine, or else starting from some Pd-specific resources) and look for interesting Pd externals and/or patches. Download, install, and play with at least one. Can you incorporate it into what you programmed in part 4?