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.
To get this project started I have done some basic work including:
Installing fluidsynth-dev files!
Compiling boiler3 on Linux!
Reaching std::map, std::list, and std::pairs which will hold all my data
Copying aspects of boiler3 into my own minimal version with FluidSynth still working
Researching midi-in options that do not require pre-existing scores
Getting RtMidi to compile and run with my midi keyboard!
Installing a2jmidid to make my midi ports show up in jack!
Getting RtMidi to run in the same program as openGL and RtAudio and FluidSynth
Making this website
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!