Your midterm assignment is designed to assess your understanding of the fundamentals of object-oriented programming and all of the Processing material from the first half of this course. You'll have 2 weeks to work on this project, with deliverables each week - think of this as an extended homework assignment.
You have a choice between one of two options for the midterm.
Using classes and arrays, create 2 or more kinds of "artificial life" that interact with one another. These could be animals, plants, cellular creatures, aliens, zombie-cyborgs; let your imagination run wild. Identify the behaviors of these creatures on their own, and how they interact with each other when they come into contact with one another.
Think through the entire ecosystem that you'll create. Is there a metaphor that you can draw on to illustrate the relationship? Some real-world analogy that you can address (e.g. hunter/prey, an herbivore that grazes plants, or competing cellular structures)? Does it look different over time, or after interacting with the creatures? Do these lifeforms evoke feelings or emotional responses in the viewer? Are they autonomous or controllable?
For the first week (due on 10/7), you must create the 2 (or more) foundational classes of creatures. Give them some behaviors so that we can understand how they live in the world. Advanced students should have some aspects of interaction between the two in place.
Write a Slack post in the #shoham-f19
channel that details what you plan to do for the entire project. Identify inspirations, show illustrations/sketches, and give us an idea of what you're thinking of doing over the course of the project. Answer the prompts above as appropriate. If you can make a simple sketch that illustrates what you’re trying to accomplish, add that too. Write out what you've accomplished and what you still need to create for the following week. Link to your work.
For the second week (due on 10/15), build off your work from the previous week. Add multiple instances of at least one of the creatures and demonstrate an interaction between the two types. Go back to your original idea. What do you need to do to get the information about the two types of creatures going back and forth?
Write another Slack post in the #shoham-f19
channel about what you did over the last 2 weeks. What was your goal? Did you meet your initial expectations or not? Did you exceed them? What were the gaps in your knowledge? How would you have gone about doing this differently if you were to do this project again?
Prepare a short presentation of what you did. We will have in-class presentations on 10/15. You should demonstrate your work and have at least one question to ask the class for feedback, e.g. "How could I have made this relationship between the ghost and my character clearer?" or "Are there specific tips people have for making XXX easier to code?"
- Intro and Ch. 1 of The Nature of Code
- The Coding Train Mitosis Simulation and Flocking Simulation
Using classes, make a musical instrument that uses mouse and/or keyboard interaction to play at least 4 different sounds and displays a corresponding visual animation for each sound. Each sound / animation pair should be written as its own class. This project will probably be easier if your sounds are pre-recorded audio files (either .wav or .mp3), but you're also welcome to use synthesizers or even record samples live from a microphone.
Consider what kinds of sounds you want, e.g. percussion, synths, vocals, orchestral instruments, or even non-musical samples like bird calls. How do your sounds relate to each other? Are they variations on the same kind of sound, e.g. a drum machine with a kick, snare, tom, and hihat? Or are they different types of sounds that complement each other?
Think about the interactions that control your instrument. How do you trigger your sounds? Can you play all of your sounds simultaneously, or only one at a time? Do your sounds play once each time they're triggered or do they repeat on loops? Can you control other aspects of your sounds, e.g. the playback speed of a sample or the timbre of a synth?
Try to come up with intuitive relationships between your sounds and the movements, shapes, and colors of your animations. How long do your animations last? Do they have a defined beginning and end? Are they randomized in some way?
For the first week (due on 10/7), you must choose your 4 sounds and come up with ideas for their corresponding animations. Advanced students should have a prototype of their instrument that demonstrates some interactions.
Write a Slack post in the #shoham-f19
channel that details what you plan to do for the entire project. Identify inspirations, show illustrations/sketches, and give us an idea of what you're thinking of doing over the course of the project. Answer the prompts above as appropriate. If you can make a simple sketch that illustrates what you’re trying to accomplish, add that too. Write out what you've accomplished and what you still need to create for the following week. Link to your work.
For the second week (due on 10/15), build off your work from the previous week. Make separate classes for each pair of sound and animation. Add mouse/keyboard interactions that trigger and/or control your sounds.
Write another Slack post in the #shoham-f19
channel about what you did over the last 2 weeks. What was your goal? Did you meet your initial expectations or not? Did you exceed them? What were the gaps in your knowledge? How would you have gone about doing this differently if you were to do this project again?
Prepare a short presentation of what you did. We will have in-class presentations on 10/15. You should demonstrate your work and have at least one question to ask the class for feedback, e.g. "How could I have made the motion of my circle better correspond to my vocal sample?" or "Are there specific tips people have for making XXX easier to code?"
- The Processing Sound library reference
- The Coding Train Sound tutorials (these are in p5.js instead of Processing, but the code for working with sound is very similar to Processing)
- Ableton's interactive Learning Music tutorials
Here are some free collections of sounds:
- Freesound
- SoundBible
- Samples From Mars
- SampleRadar: 1000 free drum samples
- Philharmonia Orchestra samples
- BBC Sound Effects
- Patatap
- sampl0rd
- Yume - Helios
- Groove Pizza
- Chrome Music Lab - Kandinsky
- Norman McLaren - Dots and Synchromy
- John Whitney - Matrix III