Functional Music - Spring, 09
From MCIS Wiki
Participants:
- Casey Riva
Meeting: 3pm, Room 101
Example:
delay d m = d r & m rep f g n m = if (n == 0) empty ( m ! g (rep f g (n-1) (f m))) run = rep (up 5) (delay tn) 8 (tn c4) // tn = 1/32 note cascade = rep (up 4) (delay e) 8 run cascades = rep id (delay sn) 2 cascade // sn = sixteenth note waterfall = cascades & revM cascades // revM = reverse music
Soucre
Midi Files
Accomplishments
Generating MIDI files algorithmically that actually play the way they are supposed to!
- Created Prim functions for the following:
up, down, volume, if, +, -, ==, together, after, faster, empty, rest
- Modified performance to use an ArrayList of <MusNote> and make a temp note to apply the mods to and return it
- Lost a lot of hair and brain cells
What can be improved upon
As of now the standard vocabulary has to be included in the file that you are importing. The goal is to have a file of standard vocabulary loaded separately so that the music file can contain only the music you are trying to play.
- Standard Vocabulary Example of notes
q = faster 2; e = faster 4; sn = faster 8; tn = faster 16;
- Ability to use different instruments
right now we are just playing MIDI files based on the first instrument, the MIDI language has an absurd amount of instrument types with would allow you to compose various pieces of music with different instruments to be played to harmoniously.
- Hook up the Front End
We have made a very cool GUI for this program and now that we know that it back end is working properly it needs to be hooked up to the GUI. This program at that point would be able to put on a very cool demo, i hope to see this program when its all finished.
What I Learned
This project was very challenging for me. it took my quite a while to get my brain fully wrapped around the concepts and functionality of this program. i feel now that i have a much better understanding of all the pieces, not just the ones i have been working on. the closer i got to the end the more i had to understand to be able to move which meant digging into the corners of MIDI and code written by others to reach a solution.
- If there is one thing of advice i could give to the next generation of the music project is: Dont attempt this if you are tired or burned out, without a clear mind that is thinking properly you will get lost and extremely frustrated. i know i did. but now that frustration is gone and the program has been furthered on its path to completion.
