CSCI-GA.3033-003

Music Software Projects - Fall 2014

Graduate Division Computer Science

Scott Burton (burton@cs.nyu.edu)

Friday 4:00pm - 5:50pm

Room: CIWW 312

Office Hours 3:15pm-4pm before class in CIWW 328 (adjunct office)


Did you ever wonder why there are 12 notes in the western music scale? Or how the intervals between notes came to be?
When were the first musical scales developed or "discovered" and how (and why) have they been modified since?
Who were the key innovators of western music theory over the last few centuries?

It is not uncommon for software developers to have an affinity for music.
After all, the creation of both software and music is part art and part science.
Further, music and computing are built upon fundamental mathematical principles. While it is not required to understand
music theory to be a good player, understanding why we are constrained to a certain set of notes is an enlightening
topic - for musicians and non-musicians alike.

This course is for students interested in how both music and software are constructed. Student teams will build software
in phases which will demonstrate the underlying rules in modern western music theory. The beauty of software
is that it can be applied in just about any domain.

Music students are encouraged to apply even though this course is primarily a software development class. The interdisciplinary
product development teams will be composed of at least one engineer and one subject domain exper t who
will work together on the assignments. The software the teams build will be used to demonstrate how music theory
developed as well as give students an intuitive grasp of some fascinating underlying universal truths...


Pre-requisites:

- Curiosity about music theory
- Interest in building software
- Be either a musician, a music lover OR a software developer (or ideally both)
- Performing music IS NOT required

Objectives of course:

- Pair up in interdisciplinary teams of both subject domain expert and engineer (if possible)
- Learn how the twelve tone scale developed as well as other scales with more intervals.
- Develop educational software
- Learn about big bang moments in music history
- Use language of your choice (Python, Java, C/C++, Ruby) to build software in the music domain - Program on UNIX (either LINUX or MacOSX)


Week
Topic
Programming Phase
Materials
1
Where is the math in music? - Set up dev environment - choose language, sound & GUI kit
- Generate 400hz tone for 5 seconds
MSP_lecture1.pptx
2
The Harmonic Series Implement class using "living spec" spreadsheet which shows how the harmonic series can be constructed. Build regression harness around your class using the inputs and expected outputs in the sheet. MSP_lecture2.pptx harmonic_series_sheet_phase1.xlsx
3
The Pythagorean Scale Implement class using "living spec" spreadsheet which shows how the pythagorean scale is constructed. Build regression harness around your class using the inputs and expected outputs in the sheet. MSP_lecture3.pptx pythag_sheet_phase2.xlsx
4
The Pythagorean Scale - modes Implement class using "living spec" spreadsheet which shows how to produce "modes". Play every mode using your sound lib. Build modes in two ways. Build regression harness around your class using the inputs and expected outputs in the sheet. MSP_lecture4.pptx pythag_sheet_phase3.xlsx
5
Measuring steps between intervals - Build the full chromatic Pythagorean scale
- Calculate spacing between intervals in our "interval" class
- Build the even tempered scale - Compare Just scale from Pythagoras to even tempered scale
MSP_lecture5.pptx pythag_sheet_phase4.xlsx even_temperment_sheet_phase4.xlsx
6
- Even Tempered compared to Just
- The Circle of Fifths
- Harmony
- Play 3 note major chords (aka "triads" - first, third, fifth notes in the Pythag natural scale))
- Build major chords starting with each note in the Circle of Fifths
- Play the chords sequentially (1 second duration, separated by .5 secs of silence)
- Build chords using 2 scales 1) Pythag and 2) Even-tempered!
MSP_lecture6.pptx
7
- "Cents" measure
- Naming
- Scale Comparisons
- Implement "Cents"
- Assign interval TYPE
- Assign "LETTER" names
- Support for calculating interval differences between: ET, Pythag, Harmonic Series
MSP_lecture7.pptx DegreeNaming.xlsx
8
Better way to build Pythag scale...
- Comparing Intervals between Harmonic Series, ET, Pythagorean
- Implement a new derived class for the Pythagorean Dodecephonic Scale
MSP_lecture8.pptx pythag_sheet_phase5.xlsx
9
Pythagorean Dodecephonic gets tempered but remains Just - Scale of Ptolemy
- Resolves the ambiguous dim5 problem
- Implement a new derived class for this scale
MSP_lecture9.pptx pythag_ptolemy_sheet_phase6.xlsx
10
Meter 7 modes of a 12 beat pattern - or "wheel"
Implement the example provided
Tempo of 120bpm
A different percussive sound for each of the 7 modes
rhythm_sheet.xlsx
11
Zarlino's scale Implement class using "living spec" spreadsheet which shows how to produce the scale Zarlino developed. Build regression harness around your class using the inputs and expected outputs in the sheet.

Play the scale in the "first_flat" sheet in this sequence:
1) play first row (base scale)
2) play the "harmony 1" scale simultaneously with the base scale (2 notes sounding at once)
3) play the "harmony 2" scale simultaneously with the base scale (2 notes sounding at once)
Play notes with 1 second duration with max of .5 secs delay between notes

For reference: "harmonic_series_compared_to_ET" sheet shows some differences between the closest partials and ET intervals of today...
zarlino.xlsx
first_flat.xlsx
harmonic_series_compared_to_ET.xlsx
12
Mean-tone temperament
- "Meantone" scale living-spec sheet reviewed
- A new derived class that creates a different M3 interval than exists in the Pythagorean scale (but exists in the harmonic series!)
MSP_lecture10.pptx meantone_phase7.xlsx
13
Rameau's scale Implement class using "living spec" spreadsheet which shows how to produce the scale Rameau developed. Build regression harness around your class using the inputs and expected outputs in the sheet. MSP_lecture13.pptx rameau_sheet_full.xlsx
14
Final Presentations
Teams demonsrate their final app for 10 minutes each. Teams vote on winner