MUMT 306 Project Page

Valerie Saunders Duncan

Fall 2014 Semester

MUMT 306 project page

Algorithmic music composition in C++

Overview
I've created a program to produce a song using some set-up structures as well as user input. It uses the Rtmidi library and a midi-csv interfacing program.

View the code for VERSION 4.
View the code for VERSION 6.
View the CSV file for test output with user input '144'
MIDI file for test input 144. Right-click to download.
Right click to download relevant files (includes another sample CSV file using a MIDI from http://www.piano-midi.de/debuss.htm and makefiles for Linux and Mac.)

Steps/Components: VERSION 4 Steps/Components: VERSION 6 Chords for bass:
The base key note number is kept as a global variable. In my setup I was using an A, note number 57. However some of the chords used 56, and since I kept the chord note differences as unsigned ints I subtracted 12 from my base key note and added values between 11 and 22, as shown below. So to be clear, these are values to add to a fixed note to get a chord.
Low note Middle note High note Chord name Probability of use
12 16 19 Major 20%
12 17 21 IV 20%
11 17 19 10%
11 14 19 Dominant 10%
12 15 19 Minor 0% (still in b/c I want it available)
12 16 22 Seventh 20%
14 17 21 20%

Voices:
Factor Channel Voice Program change value Type of sound
N/A 1 MIDI Sysex, Meta-Events
1 12 Fretless bass 36 Established bass line, looped 23 times, plus an ending.
2 3 Vibraphone 12 Drone sort of sound
3 4 Synthetic strings 51 Occasional melody
9 5 Jazz guitar 27 Occasional melody
5 6 Shakuhachi 78 Occasional melody
10 8 Viola 41 Occasional melody
8 11 Concert BD 117 Pitched drumming
N/A 9 Reverse Cymbal and key changes 119 Does a cymbal at the end.
N/A 10 'Standard' Percussion N/A Established, looped drum rhythm
12 7 French Horn 61 Occasional melody

Unfinished web components: Challenges experienced: Class Page
RtMidi Page
Boost Library Page
Audio setup help and info about MIDI on Linux
midicsv page