- Course Description
- Course Objectives
- Learning Outcomes
- Required Software and Equipment
- Getting a Copy of Code Discussed in Class
- Topics to be Covered
- Detailed Schedule
- Late Work and Attendance
- Statement on Academic Offences
- Support Services
- Useful Links
- Bill Turkel, email@example.com, Lawson Hall 2267, Mondays 2:30-3:30
- David Brown (TA), firstname.lastname@example.org, Arts and Humanities 1R14, Fridays 3:00-4:00
- Nandita Dutta (TA), email@example.com, Arts and Humanities 1R14, Wednesdays 11:00-12:00
- Antonio Jimenez-Mavillard (TA), firstname.lastname@example.org, Arts and Humanities 1R14, Wednesdays 3:30-4:30
This is a first course in programming, intended for students of all backgrounds. No prior experience is necessary. We will be using the Max 7 language from Cycling 74. It is a great choice for working with all of the kinds of sources that humanists typically care about: sound, music, text, images, video, computer graphics and real time performances. You can learn more about Max at http://cycling74.com
The main idea of the course is that programming can be a way of exploring the kinds of questions that humanists and artists have always been interested in: what is true? what is beautiful? how can we be sure of what we know? what does it mean to be human? what does it mean to be alive? Computer programs can also provide humanists, artists and social scientists with ways of communicating with one another. Plus, it is a lot of fun!
- Use programming as a means of expression and a way of communicating with other people
- Explore humanistic topics using the medium of code
- Explore the relevance of basic computational ideas to the arts and humanities
- Learn about designing real-time, interactive applications
- Gain experience with programming in a dataflow language
- Develop systems for real-time interaction using a variety of artistic media
To get the most out of this course, you will need a Windows or Mac laptop, which you should bring to every class.
You are advised to purchase a license for Cycling 74′s Max 7 software. A four-month subscription is US $40 and a 12-month license costs US $59. For this course you only need a license for the term, but a permanent academic license is also available for US $250 if you would like to continue to program in Max in the future. The software is available for both Windows and Mac computers. There are also a few licenses installed on computers at Western. Contact me if you would like details about using those.
After each day’s class, I will post links to online copies of all of the programs that we discussed that day. You don’t have to recreate these Max patches from scratch. Each program has a link on this page. When you follow that link you will find a picture of the program and a “raw code link”. You can download the program by following these steps:
- Click on the raw code link. This will take you to a web page at the code sharing site Github.
- Select all of the code on that page (on the Mac you can use Command-A).
- Copy it (on the Mac use Command-C).
- Go to Max 7 on your computer.
- Choose File -> New from Clipboard.
- Save that new patch somewhere on your own machine.
All code from the course is also available on GitHub:
- Introduction to Max and the idea of dataflow programming
- Basic objects, patch cords and messages
- Introduction to MIDI and electronic musical instruments
- Scaling, clipping and randomness
- Games, simulations and state spaces
- Graphics, animation and algorithmic art
- Introduction to audio waveforms and basic signal processing
- Electronic music and sound design
- Introduction to real-time video manipulation
More information will be posted in advance of each class.
- M 05 Jan. Intro to Max. Basic objects, patch cords and messages. How Max evaluates a patch (right to left and depth-first).
- W 07 Jan. Timing and counting. Dynamic interface elements. The trigger object.
- Patch 7-004. Metro, Counter and Route
- Patch 7-005. Sliders, Dials, Scaling and Clipping
- Patch 7-006. Use Trigger to Specify the Order of Events
- In class activity: Max Tutorial 1 – Hello. In Max, choose Help -> Max Documentation. When the documentation window opens, choose Max Tutorials -> Basics -> Hello. Be sure to click the green “Open Tutorial” button. This will open a patch for you to experiment with, while you are working through the tutorial.
- In class activity: Max Tutorial 2 – Bang!
- Optional: Cylon Kitt Challenge. In these optional challenges, I will show you a video of a patch in presentation mode, and you have to reverse engineer it and come up with the code.
- M 12 Jan. Intro to MIDI. Scaling, clipping and randomness.
- W 14 Jan. Integers and floating point numbers. Hot and cold inlets. Lists. Replaceable arguments.
- M 19 Jan. Messages and musical instruments. Coll object.
- Patch 7-014. More About Messages
- Patch 7-015. Simple Step Sequencer
- Patch 7-016. Reich’s Piano Phase (1967)
- Patch 7-017. Setting, Sending and Receiving Messages
- In class activity: Max Tutorial 5 – Message Order and Debugging, work on Assignment 1
- W 21 Jan. Reading the keyboard and mouse.
- M 26 Jan. Graphical interface elements. Colour. Pack, unpack and pak. ASSIGNMENT 1 DUE
- W 28 Jan. Simulations. Encapsulation.
- M 02 Feb. CLASS CANCELLED
- W 04 Feb. The lcd object. Mouse drawing.
- Patch 7-029. Simple Game Navigation
- Patch 7-030. The Lcd Object
- Patch 7-031. Dynamically Updating a Graphic Display
- In class activity: Max Tutorial 9 – Mouse Drawing, work on Assignment 2
- M 09 Feb. Random drawing and generative art.
- W 11 Feb. Processing grids. Procedural drawing.
- Patch 7-034. Processing Grids
- In class activity: Max Tutorial 11 – Procedural Drawing, work on Assignment 2
- M 16 Feb. READING WEEK
- W 18 Feb. READING WEEK
- M 23 Feb. IN-CLASS MIDTERM EXAMINATION
- W 25 Feb. Logical operators, decision trees and conditional statements. ASSIGNMENT 2 DUE
- M 02 Mar. Generate and test.
- Patch 7-040. Generate and Test
- In class activity: Max Tutorial 15 – Abstractions, work on Assignment 3
- W 04 Mar. NO CLASS SCHEDULED
- M 09 Mar. Coordinate systems. Sprites.
- W 11 Mar. Symmetry.
- M 16 Mar. Sine curves and sound waves.
- W 18 Mar. Sinusoidal waves. ASSIGNMENT 3 DUE
- M 23 Mar. Waveforms.
- Patch 7-052. Other Waveforms
- In class activity: MSP Tutorial – Adjustable Oscillator, work on Assignment 4
- W 25 Mar. Envelopes and the Audio-MIDI interface.
- M 30 Mar. Exponential and log curves. Frequency Modulation. ASSIGNMENT 4 DUE
- W 01 Apr. Filters. ADSR synthesis.
- M 06 Apr. Extending Max: Sensors, Video, Robotics.
- In class activity: Review for Final Exam
- W 08 Apr. Final Exam Review. LAST DAY OF CLASSES – ALL ASSIGNMENTS MUST BE HANDED IN BEFORE MIDNIGHT
Your grade will be based on four assignments and two exams. You will not be permitted to use any electronic devices during the examinations.
- Four programming assignments (12% each, total 48%)
- In-class mid-term examination (22%)
- Final examination (30%)
You will submit your assignments using the OWL site for the course, but all of the other course information will be on this site.
OWL site (Western username / password required)
- Assignment 1: Make a MIDI Instrument. Rubric
- Assignment 2: Make Some Lcd Art. Rubric
- Assignment 3: Animation. Rubric
- Assignment 4: Make an Audio Instrument. Rubric
In general I don’t penalize late work. Each assignment will have a suggested due date. If you are unable to complete the assignment by that date, send me an e-mail and let me know when you expect to finish the work. Any assignment which is not handed in before midnight of the last day of winter term classes (8 April 2015) will not be counted toward your final grade.
I expect you to attend every class and participate in the day’s activities.
If you are unable to meet a course requirement due to illness or other serious circumstances, you must provide valid medical or other supporting documentation to the Dean’s office as soon as possible and contact me immediately.
Regarding absence for medical illness, see the Policy on Accommodation for Medical Illness:
Approval from the Dean’s Office is required for non-medical absences from examinations.
Scholastic offences are taken seriously and students are directed to read the appropriate policy, specifically, the definition of what constitutes a Scholastic Offence, at the following Web site:
Students who are in emotional/mental distress should refer to Mental Health@Western
for a complete list of options about how to obtain help.