DMP
Course Outline
97/09/04: Introduction to Digital Music Programming
97/09/09-11: Max
97/09/16-18: Advanced
Max
97/09/23-29: Introduction to Unix and Web authoring (Charles Kim)
97/10/02-09: Introduction to CodeWarrior
97/10/14: Midterm holiday (no class)
97/10/16:
Character Strings and Formatted I/O
97/10/21:
Operators,
Expressions, and Statements
97/10/23: C
Control Statements: Looping, Branching and Jumps
97/10/28: Character
Input/Output and Redirection
97/10/30: Mid-term exam (open book)
97/11/04: Functions
97/11/07: Arrays
and Pointers
97/11/11: Character
Strings and String Functions
97/11/13: File
Input/Output
97/11/18: Storage Classes and Program Development
97/11/20: Structures and Other Data Forms
97/11/25: Bit Fiddling
97/11/27: Thanksgiving (no class)
97/12/02: The C Preprocessor and the C Library
97/12/04: Advanced Data Representation
97/12/09-11: Writing MAX external objects
97/12/16: Final exam (open book, C314, 1430-1520)
Assignment #12: (Due December 9)
Repeat the last assignment except read the input from a file using fopen()
and the output should be written out to another file. The filenames should
be specified on the command line or use fopen_mac().
Assignment #11: (Due December 2)
Write a program that accepts any number of notes in pitch-octave notation,
e.g., a4, gs5, df3, from stdin then prints out, in ascending order of pitches,
the original name, their pitch in frequency, MIDI number, and its pitch
class (0-11). Do not use malloc().
The output should look like:
df3 300 49 1
a4 440 69 9
gs5 850 80 8
Assignment #10: (Due November 20)
Modify the program in #7 so that the user can rotate the matrix.
- Write a print_row() function that will print a row in the
matrix. (The function argument should be a pointer to a row.)
- Write a print_matrix() function that will print the entire
matrix by calling print_row() function 12 times. The function
argument can either be a pointer to a pointer or a pointer to array of
12 elements.
- Write a matrix_transpose() function that will rotate the matrix
by specified amount either in clockwise or counter-clockwise, depending
on the argument (e.g.2 == 180 deg, -1 == -90 deg).
- Write an interactive function get_rotation() that will get
user's choice for rotation from a multiple choice menu. It should return
a number that specifies the rotation value as well as indication for going
onto inputting the next row or quit.
- For a bonus point, make it so that the user does not need to hit the
Retrun key when making the multiple choice entry.
NB: you should not use ccommand()
Assignment #9: (Due November 14)
Write a word count program. Input should be any ASCII text file. It
should output number of lines, number of words, and average number of letters
in a word. Do not include punctuations, quote marks, parenthesis, etc.
when calculating the average. Use redirection for the input.
Assignment #8: (Due November 6)
Modify the tone row program in #7, so that the program will take a file
input and produce file output using redirection. The program should be
able to process any number of rows contained in the file (one row per line),
resulting in multiple matrices in the output file.
Assignment #7: (Due October 28)
1. Write a program that accepts an integer as input and then displays
all the prime numbers smaller than or equal to that number. Make it as
efficient as posible.
2. Write a program that accepts a 12-tone row and output the row matrix.
Be sure to check for correct input. Use letters A, and B, for pitch class
10, and 11, for both input and output.
Assignment #6: (Due October 21)
p. 117 (Waite): #1, 4; p.158: #3, 6; p.202 #3.
Assignment #5 (Due October 9)
Write a "Hello Ich" program for the Unix environment and for
the Code Warrior environment. Submit both the source code and the binary
for Unix and CW project.
Assignment #4 (Due October 7)
Make your own personal home page. It should have at least some graphics,
pictures, and sounds.
Assignment #3 (Due October 2, extended to October 7)
Write a short (1-5 minutes) multimedia piece including movies, animated
pictures, MIDI sequence, SND resource, and AIFF files. Use the following
objects: snd, movie, pics, pict, AIFFPlayer, etc.
Place the patch in (314):Departmental:Faculty:ich:Classes:DMP:Assignment
3. Present it in class.
Assignment #2 (Due September 18)
Write a small piece that include simple algorithmic composition and ability
to control the outcome using one or more of the following controllers:
Zeta violin, PitchRider, MalletKat, WX11, DMP7, Lexicon MRC, Vocalist.
You may augmented by use of modulation wheels, mouse, foot pedal/switch,
but not keyboard.
Place the patch in (314):Departmental:Faculty:ich:Classes:DMP:Assignment
2. Present it in class.
Assignment #1 (Due September 11)
Study the Max Tutorials at least up to Tutorial 20. Make a patch that perform
adjustable (slider) multiple harmonizer. A MIDI note-on input is accompanied
by other MIDI notes on the output at different intervals.
Place the patch in (314):Departmental:Faculty:ich:Classes:DMP:Assignment
1. Present it in class.
Style tips
- no space before commas and semicolons
- no space after function names
- space after commas and semicolons
- space before and after an operator
- space after keywords
- vertically align matching braces
- no magic numbers
Go to Ich's Home Page
Go to the Peabody Home Page
For comments or questions email.
to: ich@peabody.jhu.edu