/** * Try a JMSL Score with JavaSound MIDI. * You can download a soundbank of your choice at * http://java.sun.com/products/java-media/sound/soundbanks.html More * instructions are there. * * @author Nick Didkovsky, nick@didkovsky.com, (C) 2003 Nick * Didkovsky, All Rights Reserved * */ package jmsltutorial; import java.awt.Frame; import java.io.IOException; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.midi.MidiIOFactory; import com.softsynth.jmsl.score.Note; import com.softsynth.jmsl.score.Orchestra; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.midi.MidiScoreInstrument; public class JScoreTootJavaSoundMIDI { Score score; ScoreFrame scoreFrame; Orchestra orch; /* * init JavaSound MIDI, build an orchestra, add notes to a score, display it */ public void start() throws IOException { initJavaSoundMIDI(); // 3 staves, width, height score = new Score(3, 800, 400); score.setName("JMSL Score with JavaSound MIDI"); score.setComposer("Nick Didkovsky"); score.setCopyright("(c) 2024 Didkovsky / Punos Music (BMI)"); score.addMeasure(4, 4); score.setOrchestra(new Orchestra()); scoreFrame = new ScoreFrame(); scoreFrame.addScore(score); Orchestra orch = new Orchestra(); orch.addInstrument(new MidiScoreInstrument(1)); orch.addInstrument(new MidiScoreInstrument(2)); orch.addInstrument(new MidiScoreInstrument(3)); score.setOrchestra(orch); generateNotes(); setupShowScore(); } /** * Set JMSL.midi to the JavaSound Midi MusicDevice singleton * * @throws IOException */ private void initJavaSoundMIDI() throws IOException { JMSL.midi = new MidiIOFactory().getMidiIO(MidiIOFactory.MidiIO_JAVASOUND); JMSL.midi.edit(new Frame()); JMSL.midi.open(); } private void setupShowScore() { scoreFrame.setSize(900, 600); scoreFrame.setVisible(true); score.render(); scoreFrame.toFront(); } private void generateNotes() { for (int i = 0; i < 10; i++) { Note note = score.addNote(4.0 / 5.0, 60 + i * 2, 0.5, 0.8); note.setBeamedOut(true); } score.rewind(); score.setCurrentStaffNumber(1); for (int i = 0; i < 18; i++) { Note note = score.addNote(4.0 / 9.0, 48 + i * 2, 0.5, 0.8); note.setBeamedOut(true); } score.rewind(); score.setCurrentStaffNumber(2); for (int i = 0; i < 14; i++) { Note note = score.addNote(4.0 / 7.0, 54 + i * 2, 0.5, 0.8); note.setBeamedOut(true); } } public static void main(String args[]) { JScoreTootJavaSoundMIDI test = new JScoreTootJavaSoundMIDI(); try { test.start(); } catch (IOException e) { e.printStackTrace(); } } }