Interactive Music Systems (MIT)
Time: Spring 2023
Role: Student, Designer, Software Engineer, solo and team of three work
Tools: Python, Kivy, Procreate, Audacity, Github
SUMMARY
This course, taken as an elective at MIT, explores audio synthesis, musical structure, human computer interaction (HCI), and visual presentation for the creation of interactive musical experiences. Most of the coding is done in Python with Kivy graphics and executed in Conda. Each week, the course introduced problem sets (“PSets”) featuring both a creative part and teaching a new component that culminated in the final team project. Students in their group are tasked with creating an advanced music system for gaming, educational, or assistive reasons. This course taught me so much about coding, while also being centered around one of my favorite hobbies - music. Projects are listed from final to first, where you can see how much my coding improved over the course of the semester.
PopPuzzle - Final Group Project
PopPuzzle is our final group project - a music rhythm game where the user needs to find the instruments and complete a puzzle in order to add it to the song. To have a wider audience appeal, we chose to focus on popular songs. (Sound highly recommended)
Guitar Hero - PSet 6
As our final coding PSet, we were tasked with recreating the famous video game Guitar Hero since our professor worked at the company that originally created the game. After recreating the basic graphics and reactions, we were free to edit the game as we wished. I tried to make the visuals as similar to the original graphics as I could and also use the particle system if a player presses the key at the right time. (Sound highly recommended)
Leap Motion - PSet 5
This week's PSet focused around using hardware, specifically the Leap Motion sensor - an optical hand tracking module that captures the movements of your hands using infrared light. The goal was to create our own virtual harp, adding any other additions we desired. I decided to have one hand pluck the strings, while the other controls the volume and can add a bending effect. If the user presses the button at the top, they can play along with a band. (Sound highly recommended)
Fluid Synth - PSet 4
For this week, MIDI was first introduced. With this capability, I was tasked with designing a program where the user had some control over the tempo, pitch, and length of the notes. Incorporating skills from PSet 3, it also had to be visually appealing and intuitive. I decided to use MIDI's vast library to let the user choose their 'genre' and also have appropriate accompanying background music to play along with. (Sound highly recommended)
Graphics - PSet 3
This PSet focused on using Kivy graphics in Python and understanding the complexity and limitations of the program. Both keyframe and dynamics/physics animation was used in this PSet to have objects move and change size. The final version allows the user to creative a visual accompaniment to the song 'Somebody to Love' by Queen. (Sound highly recommended)
Wave Files - PSet 2
PSet 2 focused on understanding wave files and how one can manipulate them in Python. Software such as Sonic Visualizer and Audacity are also first introduced here. Manipulating the file here allows for looping in the code. The file is also adjusted with speed and linear interpolation. (Sound highly recommended)
Sine Synthesis - PSet 1
The beginning assignment for this course involved creating sound from waves such as sine waves with analog to digital converter. This was then turned into a specific pitch with different generators. This also introduced modeling intervals, timbre, and envelopes. (Sound highly recommended)