class Zong{ XMLElement xmlsong; ZongSettings settings; XMLElement patterns; XMLElement tonepatterns; XMLElement compose; String name; String file; boolean songloaded = false; boolean rocking = false; Sequencer sequencer = new Sequencer(); MidiOut drumsout = midiIO.getMidiOut(9,0); MidiOut bassout = midiIO.getMidiOut(4,0); MidiOut guitarout = midiIO.getMidiOut(5,0); Track drumstrack, basstrack, guitartrack; Song song; int bars = 0; int bar =0, frame=0, oldbar=-1, oldframe=-1; float a, b, prevol; int notes2search; int note, pitx, vol, dur; String[][] lyrics = new String[1024][16]; int remindex; Zong(String $1, int $2){ file = $1; loadSong(); remindex = $2; } void loadSong(){ try{ xmlsong = xmlInOut.loadElementFrom(file); parseSong(); songloaded = true; println("song "+name+" loaded!"); }catch(InvalidDocumentException ide){ println("File "+file+" does not exist"); songloaded = false; } } void rock(){ sequencer.start(); rocking = true; vizualadmin.option = remindex; println("song "+name+" rocking!"); } void stop(){ sequencer.stop(); rocking = false; vizualadmin.option = -1; println("song "+name+" stopped"); } void parseSong(){ name = xmlsong.getAttribute("name"); settings = new ZongSettings(xmlsong.getChild(0)); patterns = xmlsong.getChild(1); tonepatterns = xmlsong.getChild(2); compose = xmlsong.getChild(3); drumstrack = new Track("drums", drumsout); basstrack = new Track("bass", bassout); guitartrack = new Track("guitar", guitarout); drumstrack.setQuantization(Q._1_16); basstrack.setQuantization(Q._1_16); guitartrack.setQuantization(Q._1_16); bassout.sendProgramChange(new ProgramChange(settings.bassinstrument)); guitarout.sendProgramChange(new ProgramChange(settings.guitarinstrument)); int quantization = 16; int position = 0; for(int i=0; i