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.

quick start. . .

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. . .

getting to know bob. . .

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.