You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.6 KiB
76 lines
1.6 KiB
|
|
import ddf.minim.*;
|
|
import ddf.minim.ugens.*;
|
|
import javax.sound.midi.*;
|
|
|
|
Minim minim;
|
|
AudioOutput out;
|
|
|
|
Sequencer sequencer;
|
|
Sequence sequence;
|
|
|
|
ArrayList<Blip> 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<Blip>();
|
|
// 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();
|
|
}
|
|
}
|