- Instructors
- Course Description
- Course Objectives
- Learning Outcomes
- Required Software and Equipment
- Getting a Copy of Code Discussed in Class
- Topics to be Covered
- Detailed Schedule
- Evaluation
- Assignments
- Late Work and Attendance
- Statement on Academic Offences
- Support Services
- Useful Links
Instructors
- Bill Turkel, wturkel@uwo.ca, Lawson Hall 2267, Mondays 2:30-3:30
- David Brown (TA), dbrow52@uwo.ca, Arts and Humanities 1R14, Fridays 3:00-4:00
- Nandita Dutta (TA), ndutta2@uwo.ca, Arts and Humanities 1R14, Wednesdays 11:00-12:00
- Antonio Jimenez-Mavillard (TA), ajimene6@uwo.ca, Arts and Humanities 1R14, Wednesdays 3:30-4:30
Course Description
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!
Course Objectives
- 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
Learning Outcomes
- Gain experience with programming in a dataflow language
- Develop systems for real-time interaction using a variety of artistic media
Required Software and Equipment
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.
Getting a Copy of Code Discussed in Class
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:
https://github.com/williamjturkel/Max7
Topics to be covered
- 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
Detailed Schedule
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.
- Assignment 1 handed out (Rubric)
- Patch 7-007. Making MIDI Notes
- Patch 7-008. Random Atonal Crap
- Patch 7-009. Kslider and Nslider
- In class activity: Max Tutorial 4 – Metro and Toggle, work on Assignment 1
- Optional: Marquee Challenge
- W 14 Jan. Integers and floating point numbers. Hot and cold inlets. Lists. Replaceable arguments.
- Patch 7-010. Random and Drunk Objects
- Patch 7-011. Basic Mathematical Operations
- Patch 7-012. Hot and Cold Inlets
- Patch 7-013. Floating Point Numbers
- In class activity: Max Tutorial 3 – Numbers and Lists, work on Assignment 1
- 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.
- Patch 7-018. Reading the Mouse
- Patch 7-019. Reading the Keyboard
- Patch 7-020. Multiple Clocks with Metro
- Patch 7-021. Polyrhythms
- In class activity: Max Tutorial 8 – Keyboard and Mouse Input, work on Assignment 1
- Optional: Beethoven Challenge
- M 26 Jan. Graphical interface elements. Colour. Pack, unpack and pak. ASSIGNMENT 1 DUE
- Assignment 2 handed out (Rubric)
- Patch 7-022. Graphical Gates and Switches
- Patch 7-023. Pack, Unpack and Pak
- Patch 7-024. Attrui and Colorpicker
- Patch 7-025. Swatch and Multislider
- In class activity: Max Tutorial 7 – Numerical User Interfaces, work on Assignment 1 or 2
- W 28 Jan. Simulations. Encapsulation.
- Patch 7-026. Flipping Coins
- Patch 7-027. Use Patcher to Encapsulate Code
- Patch 7-028. The Bean Machine
- In class activity: Max Tutorial 6 – Simple Math in Max, work on Assignment 2
- Optional: Mouse Distribution Challenge
- 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.
- Patch 7-032. LeWitt’s Wall Drawing 289 (1978)
- Patch 7-033. Generative Art
- In class activity: Max Tutorial 10 – Random Drawing, work on Assignment 2
- Optional: Happy Face Challenge
- 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
- Assignment 3 handed out (Rubric)
- Patch 7-037. Logical Operators
- Patch 7-038. Making Decisions
- Patch 7-039. Conditional Statements
- In class activity: Max Tutorial 14 – Encapsulation, work on Assignment 2 or Assignment 3
- 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.
- Patch 7-041. Changing Coordinates
- Patch 7-042. Sprites
- In class activity: Max Tutorial 16 – Remote Messaging, work on Assignment 3
- W 11 Mar. Symmetry.
- Patch 7-043. Reflection Symmetry
- Patch 7-044. Rorschach Blots
- In class activity: Max Tutorial 17 – Data Structures and Probability, work on Assignment 3
- M 16 Mar. Sine curves and sound waves.
- Patch 7-049. Plotting Sine Curves
- Patch 7-050. Seeing Sounds
- In class activity: MSP – How Digital Audio Works and MSP Introduction, work on Assignment 3
- W 18 Mar. Sinusoidal waves. ASSIGNMENT 3 DUE
- Assignment 4 handed out (Rubric)
- Patch 7-051. Sinusoidal Waves
- In class activity: MSP Tutorial – Test Tone, work on Assignment 3 or 4
- 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.
- Patch 7-053. Envelopes
- Patch 7-054. Converting Between MIDI and Audio
- In class activity: MSP Tutorial – Wavetable Oscillator and MSP Tutorial – Routing Signals, work on Assignment 4
- M 30 Mar. Exponential and log curves. Frequency Modulation. ASSIGNMENT 4 DUE
- Patch 7-055. Exponential and Logarithmic Curves
- Patch 7-056. Frequency Modulation
- In class activity: MSP Tutorial – Vibrato and Frequency Modulation and MSP Tutorial – FM Synthesis, work on Assignment 4
- W 01 Apr. Filters. ADSR synthesis.
- Patch 7-057. Filters
- Patch 7-058. ADSR Synthesizer
- In class activity: MSP Tutorial – Additive Synthesis, MSP Tutorial – AM Synthesis and MSP Tutorial – Simple Filters, work on Assignment 4
- 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
Evaluation
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)
Assignments
- 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
Late Work and Attendance
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:
http://www.uwo.ca/univsec/pdf/academic_policies/appeals/accommodation_medical.pdf
Approval from the Dean’s Office is required for non-medical absences from examinations.
Statement on Academic Offences
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:
http://www.uwo.ca/univsec/handbook/appeals/scholastic_discipline_undergrad.pdf
Support Services
Students who are in emotional/mental distress should refer to Mental Health@Western
http://www.uwo.ca/uwocom/mentalhealth/
for a complete list of options about how to obtain help.