Music Apps on the iPad
COMP 150-ISW, Tufts University Department of Computer Science, Spring 2015
Objectives
This course emphasizes developing apps for musicians on the iPad. The course will culminate in a project where students demonstrate their abilities through developing production-ready apps in small teams. The class will start with the iOS SDK. Music theory and music notation will also be emphasized early in the course. Students will learn how to access microphone data and low-level audio features, render 2D drawings and graphics, handle gestures, use networking, and perform concurrency properly.
Instructors
- Ming Chow (mchow@cs.tufts.edu)
- Paul Lehrman (paul.lehrman@tufts.edu)
- Connor Taylor
- Chris Penny
- Please send all questions (e.g., projects) via Piazza. DO NOT E-MAIL US! Sign up at https://piazza.com/tufts/spring2015/comp150isw.
- For emergencies or private matters, please e-mail or see us directly.
Class Time and Location
- Tuesdays, 4:30 - 5:45 PM in Granoff 155
- Thursdays, 4:30 - 5:45 PM in Granoff 251
Prerequisites
- COMP 40: Machine Structure and Assembly-Language Programming
- Music literacy by satisfying one of the following:
- AP Music Theory
- MUSIC 10, 11, 64
- Permission of instructors
Examples
All examples are available on GitHub. See https://github.com/tuftsdev/MusicAppsOnTheIpad/tree/gh-pages/examples
Syllabus and Lectures
Tuesday | Thursday | Deliverables | |
---|---|---|---|
Week 1 | (Thursday, January 15th) | ||
Week 2 | (Tuesday, January 20th) Pure Data | (Thursday, January 22nd) Lab | |
Week 3 | (Tuesday, January 27th) NO CLASS (BLIZZARD) | (Thursday, January 29th) Presentations: Design with User Interface Mockups | |
Week 4 | (Tuesday, February 3rd) | (Thursday, February 5th) | |
Week 5 | (Tuesday, February 10th) NO CLASS (SNOW) | (Thursday, February 12th) | |
Week 6 | (Tuesday, February 17th) Synthesis | ||
Week 7 | (Tuesday, February 24th) DSP Topics for Project 1 | (Thursday, February 26th) Synthesizer in Pure Data & LibPd; Lab | |
Week 8 | (Tuesday, March 3rd) Workshop | (Thursday, March 5th) Presentations: Project 1 | Project 1 due on Thursday, March 5th |
Week 9 | (Tuesday, March 10th) | (Thursday, March 12th) Presentations | Project 2 Project Proposal Elevator Pitch |
Week 10 | (Tuesday, March 24th) | (Thursday, March 26th) Presentations | Project 2 Design Presentation |
Week 11 | (Tuesday, March 31st)
|
(Thursday, April 2nd) Presentations | Project 2 User Interface Presentation |
Week 12 | (Tuesday, April 7th) Presentations
|
(Thursday, April 9th) Presentations
|
|
Week 13 | (Tuesday, April 14th) Workshop Day | (Thursday, April 16th) Presentations | Project 2 Alpha Demo |
Week 14 | (Tuesday, April 21st) | (Thursday, April 23rd) | |
Addendum | (Tuesday, April 28th) Final App Demo Day in Granoff Room 155 |
References
- iOS Developer Library (Apple)
- Pure Data
- Pure Data: Official website
- libpd: Github wiki page for libpd with APIs for multiple languages
- Programming Electronic Music in PD: Free Online tutorial (physical copies can be bought). It covers nearly everything and has examples and screenshots, from the basic syntax to sophisticated DSP. Works as a PD encyclopedia since it has examples of most DSP concepts (including sequencing, complex spectral analysis, granular synthesis, and more).
- FLOSS Pure Data Manuals: Another great free online PD resource, similar to the tutorial above. It is very organized and covers a few topics that Programming Electronic Music in PD doesn’t cover. Probably the easiest resource to use for finding quick information about some specific part of PD. This and the tutorial above are the best two free resources for learning Pure Data.
- Theory & Technique of Electronic Music: Free book written by Miller Puckette, the creator of Pure Data. It uses Pure Data to provide examples of the concepts, but it is more geared toward DSP knowledge in general. Each chapter has exercises for students.
- Repository of Pd Patches: A repository that contains patches people have uploaded - there are a lot of cool things to draw inspiration from. The forum on the site also covers a lot of useful topics with more examples.
- How to Write an External for Pd: An overview of Pd's API for creating new objects. See the LibPd wiki for info on how to link your own object in a LibPd project.