package jmslexamples; import java.awt.TextArea; import java.io.*; import java.net.URL; import com.softsynth.jmsl.*; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.util.RawJScoreFileImporter; import com.softsynth.jmsl.score.util.RawJScoreFileParser; /** * Read a URL that points to a raw JScore input text file. Print it to a * TextArea, parse it, and open the score in a ScoreFrame * * @author Nick Didkovsky, (c) 2000 Nick Didkovsky, all rights reserved */ public class RawJScoreImportDemo extends java.applet.Applet { ScoreFrame scoreFrame; TextArea textArea; public void init() { } public void start() { synchronized (JMSL.class) { try { JMSL.setIsApplet(true); JMSL.clock = new DefaultMusicClock(); JMSL.clock.setAdvance(0.1); JMSL.scheduler = new EventScheduler(); JMSL.scheduler.start(); String urlName = getParameter("URL"); System.out.println(urlName); URL url = new URL(getCodeBase(), urlName); System.out.println(url + ""); add(textArea = new TextArea(40, 40)); readScoreToTextArea(url); // parse the textfile and build a score RawJScoreFileParser parser = new RawJScoreFileParser(url); RawJScoreFileImporter importer = new RawJScoreFileImporter(); parser.addRawJScoreFileListener(importer); parser.parse(); parser.close(); // display it scoreFrame = new ScoreFrame(); scoreFrame.addScore(importer.getScore(800, 600)); scoreFrame.setSize(850, 600); scoreFrame.setVisible(true); } catch (Exception e) { System.out.println("ERR: " + e); } } } public void stop() { synchronized (JMSL.class) { removeAll(); if (scoreFrame != null) { scoreFrame.setVisible(false); scoreFrame.dispose(); Score.deleteCanvas(); } JMSL.scheduler.stop(); JMSL.closeMusicDevices(); } } /** textarea.append() left deprecated to work in all browsers */ void readScoreToTextArea(URL url) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); textArea.setText(""); String line = in.readLine(); while (line != null) { textArea.appendText(line + "\n"); line = in.readLine(); } in.close(); } }