import ddf.minim.*; import ddf.minim.ugens.*; import javax.sound.midi.*; Minim minim; AudioOutput out; Sequencer sequencer; Sequence sequence; ArrayList blips; void setup() { size( 640, 480 ); minim = new Minim(this); out = minim.getLineOut(); try { sequencer = MidiSystem.getSequencer( false ); // have to open it sequencer.open(); // load our sequence sequence = MidiSystem.getSequence( createInput( "bassline.MID" ) ); // put it in the sequencer sequencer.setSequence( sequence ); // set the tempo sequencer.setTempoInBPM( 128 ); // hook up an instance of our Receiver to the Sequencer's Transmitter sequencer.getTransmitter().setReceiver( new MidiReceiver() ); // just keep looping sequencer.setLoopCount( Sequencer.LOOP_CONTINUOUSLY ); // and away we go sequencer.start(); } catch( MidiUnavailableException ex ) // getSequencer can throw this { // oops there wasn't one. println( "No default sequencer, sorry bud." ); } catch( InvalidMidiDataException ex ) // getSequence can throw this { // oops, the file was bad println( "The midi file was hosed or not a midi file, sorry bud." ); } catch( IOException ex ) // getSequence can throw this { println( "Had a problem accessing the midi file, sorry bud." ); } // and we need to make our Blip list blips = new ArrayList(); // and set our drawing preferences rectMode( CENTER ); } void draw() { background( 20 ); // just draw all the Blips! for( int i = 0; i < blips.size(); ++i ) { blips.get(i).draw(); } }