Difference between revisions of "Software Lab 250"

From CCRMA Wiki
Jump to: navigation, search
Line 1: Line 1:
<font size=5>Lab 1: Making Music With Pd or Max/MSP</font><br>
+
<font size=5>Lab 1: Making Music With Pd </font><br>
Due on Tuesday, June 29th at 9AM
+
Lab write-up due on Wednesday, September 28 at 9AM
 
+
(For the lab write-up, answer all the questions asked below, and include screenshots of your finished patches.)
 
==Read==  
 
==Read==  
  
Line 9: Line 9:
 
==Install==
 
==Install==
 
If you will use your own laptop, install [http://sourceforge.net/projects/pure-data/files/pd-extended/ Pd extended v0.41.4].  Make sure that you install the ''extended'' version so that you have all of the objects that you need.
 
If you will use your own laptop, install [http://sourceforge.net/projects/pure-data/files/pd-extended/ Pd extended v0.41.4].  Make sure that you install the ''extended'' version so that you have all of the objects that you need.
 
If you will use Max/MSP, then install the [http://cycling74.com/downloads/ demo of Max/MSP/Jitter 5].
 
  
 
If you're running Pd using a desktop machine on the CCRMA network, make sure that you followed the instructions [http://ccrma.stanford.edu/courses/250a/lectures/pd/ in this lecture] for configuring Pd.
 
If you're running Pd using a desktop machine on the CCRMA network, make sure that you followed the instructions [http://ccrma.stanford.edu/courses/250a/lectures/pd/ in this lecture] for configuring Pd.
Line 16: Line 14:
 
== Download the Lab Patches to Your Home Directory==
 
== Download the Lab Patches to Your Home Directory==
  
* Download the patches into your 250a directory and uncompress the archive.
+
* Download the patches into your 250a directory and uncompress the archive: [http://ccrma.stanford.edu/courses/250a/workshop/software_lab_pd.zip software_lab_pd.zip]
** If you're using Max, you can find the patches here: [http://ccrma.stanford.edu/courses/250a/workshop/software_lab_max.zip software_lab_max.zip]
+
** Otherwise you can find the Pd patches here: [http://ccrma.stanford.edu/courses/250a/workshop/software_lab_pd.zip software_lab_pd.zip]
+
  
 
== Play Around With the Patches ==
 
== Play Around With the Patches ==
Line 30: Line 26:
 
* Right-click or option-click on any object to get a contextual menu including "help," which opens that object's help patch.
 
* 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.
 
 
* 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.
 
** 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.
 
** 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.
Line 41: Line 33:
  
 
[[Image:badidea.gif]]
 
[[Image:badidea.gif]]
 
  
 
Make a patch that shows how to connect some objects together to calculate the function ''1-x'' where ''x'' is an input number.  Save the patch in a file called ''OneMinus''.
 
Make a patch that shows how to connect some objects together to calculate the function ''1-x'' where ''x'' is an input number.  Save the patch in a file called ''OneMinus''.
Line 47: Line 38:
 
==Key Repeat==
 
==Key Repeat==
 
* What happens when you hold down a key? The behavior may depend on what operating system you are running.
 
* What happens when you hold down a key? The behavior may depend on what operating system you are running.
* Is the behavior desirable on your system?  What operating system are you running?  Are you using Max or Pd?
+
* Is the behavior desirable on your system?  What operating system are you running?
  
 
== Design a different musical interaction ==
 
== Design a different musical interaction ==
Line 57: Line 48:
 
* Load in a larger collection of samples.
 
* Load in a larger collection of samples.
 
** Implement a mechanism to switch among banks 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.
+
* Multiple gestures to one result: design a way for the parameters of each triggered note to depend on multiple key presses. For example, maybe only the space bar triggers notes, and all the other keys determine parameters of notes.
** Make your patch automatically generate a bassline as a function of the key presses (see the "coll" object in Max)
+
** Make your patch automatically generate a bassline as a function of the key presses  
 
** Set multiple parameters modally, as volume works in the sample patch
 
** 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.
 
** Use chording: keep track of all the keys that are currently pressed, and use only that information to set the parameters for each note.
Line 67: Line 58:
 
** Invent a mechanism to record short sequences of keypresses and play them back in time.
 
** 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
 
* 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 Pd's "spigot" 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.
 
* 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)
 
* Polyphony: make it so the patch can play multiple samples at the same time. (Hint: put multiple copies of "play-sample" in your patch)
 
* Use a totally different form of sound synthesis, such as FM, granular, or physical modeling.
 
* 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.
+
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 capabilities, feel free to work on many of these suggestions.
  
 
== The Community ==
 
== The Community ==
  
There is a large, dedicated, and very generous community of Pd and Max users on the Internet. Do some web searching (e.g., with a search engine, or else starting from some more specific resources) and look for interesting externals and/or patches. Download, install, and play with at least one. Can you incorporate it into what you programmed in the previous part?
+
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 more specific resources) and look for interesting externals and/or patches. Download, install, and play with at least one. Can you incorporate it into what you programmed in the previous part?
  
 
For more help in finding resources, don't forget to look on the [[PID Links]] page.
 
For more help in finding resources, don't forget to look on the [[PID Links]] page.
  
<center>[[PID 2009]]</center>
+
<center>[[PID 2010]]</center>
[[Category:PID_2009]][[Category:PID]]
+
[[Category:PID_2010]][[Category:PID]]

Revision as of 14:19, 22 September 2010

Lab 1: Making Music With Pd
Lab write-up due on Wednesday, September 28 at 9AM (For the lab write-up, answer all the questions asked below, and include screenshots of your finished patches.)

Read

about the "fight to the death between those open-source PD Commies and the right-wing, proprietary, puppy-hating MAX/MSPers"

Install

If you will use your own laptop, install Pd extended v0.41.4. Make sure that you install the extended version so that you have all of the objects that you need.

If you're running Pd using a desktop machine on the CCRMA network, make sure that you followed the instructions in this lecture for configuring Pd.

Download the Lab Patches to Your Home Directory

Play Around With the 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.)

Documentation

  • Right-click or option-click on any object to get a contextual menu including "help," which opens that object's help patch.
    • 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.

Short questions

Why is the following patch a bad idea?

Badidea.gif

Make a patch that shows how to connect some objects together to calculate the function 1-x where x is an input number. Save the patch in a file called OneMinus.

Key Repeat

  • What happens when you hold down a key? The behavior may depend on what operating system you are running.
  • Is the behavior desirable on your system? What operating system are you running?

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 key presses. For example, maybe only the space bar triggers notes, and all the other keys determine parameters of notes.
    • Make your patch automatically generate a bassline as a function of the key presses
    • 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 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)
  • 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 capabilities, feel free to work on many of these suggestions.

The Community

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 more specific resources) and look for interesting externals and/or patches. Download, install, and play with at least one. Can you incorporate it into what you programmed in the previous part?

For more help in finding resources, don't forget to look on the PID Links page.

PID 2010