Emily Graber | Music 256a | Final ImprovArt

Improv

ImprovArt Version 3

------------------------------

------------------------------

------------------------------

Usage:

Download files. Type make in the parent directory. Plug in a midi interface. Start jack. If no midi ports appear in jack, type "a2jmidid -e" in the command line. Start the program by typing "./improv". Don't choose a virtual midi port, then type the device number of your midi interface. Play, watch, and listen!



I wanted to create an interactive performance tool. This program makes markov models of live midi input, replays those models, and visualizes its selections in the data structures (i.e. what it is playing).


The user can combine a real or virtual midi keyboard with this program. What the program plays depends on what the user plays. The user should feel that they can play a lot, or just sit back and listen. The user can also control what midi instrument is being played back by invoking the program with an instrument number, or using the arrow keys if the program is already running. Information from two of the markov maps is displayed using color, location, and size of nodes on the screen.


The software combines several programs (RtAudio, RtMidi, FluidSynth, and OpenGl). The MidiMonster class deals with their interactions. All incoming notes are parsed into pitch, interval size (note-wise), duration, volume, and onset overlap maps! The order of each map is easily adjustable for each parameter! The maps are filled by the user's midi input and read by MidiMonster's improvisor. Only the live player can add data to the maps.


The maps do sometimes "forget" information in order to make the system's response to the user more dynamic. Lastly, there is some randomization in note replay for the same reason. The "correct" map-key is occasionally ignored, replaced by some other probable map-key and that map-key's values.


Milestone 2

Mechanics:



ImprovArt Version 2

------------------------------

------------------------------

Version 2 Code

------------------------------

Usage:

See usage above!

Milestone 1

To get this project started I have done some basic work including:



ImprovArt Version 1

------------------------------

------------------------------

Goal for next Milestone:

Make markov models of the real time midi input, play back models, visualize the data structures or make representations of the data in a 3D automata.

Usage:

Download files. Type make in the parent directory. Plug in a midi interface. Start jack. If no midi ports appear in jack, type "a2jmidid -e" in the command line. Start the program by typing "./improv". Don't choose a virtual midi port, then type the device number of your midi interface. Watch all the programs actually work together, yay!

Here is the first draft of the idea: