the bob music generation engine is a java based midi music improvisor. known as "bob" for short, this project attempts to generate music that is different everytime the application is run.
this is the quickest way to get bob up and running. . .however it will be a tune in 4/4 at 60 bpm in C major with cheesy midi sounds. . .
grab the newest bob-core release. . .
windows. . .
bob.bat
unix. . .
./bob.sh
bob was originally created as performance software to be use with a group of improvising musicians out of indiana university/bloomington, indiana. . .the goal was to have software improvising/composing realtime just as the human performers where doing. . .obviously the human performers were responding to the software and the software was not responding to the performers. . .but you get the idea. the performance can be found here:
bob-core consists of two major pieces the midi sequencing classes and the composing classes. the sequencing classes were originally going extend the Sequencer API provided in the javax.sound.midi.* package but since that API sucks. . .it didn't workout. . .for some dumb reason (so Sequence class can handle timing) the API makes it impossible to extend the Track class. . .which in turn made it impossible for me to route my midi events to different tracks and then to different devices. so. . .bob uses his own sequencer.
the Composer class generate MusicEvents which are sent to the sequencer using an event handling design pattern. . . the events are generated by three classes at this time Melody, ChordProgression and Percussion see configuration for details.
bob-macosx is an extension to bob-core to compensate for the lazy developers at apple that don't want to implement the portions of the java sound api i do use. apple's implementation of the API can't locate external devices. . . but their com.apple.audio.midi.* packages can. . .bob-macosx uses this package. bob-core will work on the mac. . . but again it's just if you want to run external devices that you'll need bob-macosx.
bob-disply is currently being refactored and will be posted when it is complete.
bob-gui is being developed and will be posted when it is complete.
bob-music is a dead old package.
the bob shell is gone. . .maybe forever. . .in favor of a gui.