< prev index next >

src/java.desktop/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java

Print this page




  46 /**
  47  * MIDI File Audio Renderer/Reader.
  48  *
  49  * @author Karl Helgason
  50  */
  51 public final class SoftMidiAudioFileReader extends SunFileReader {
  52 
  53     private static final Type MIDI = new Type("MIDI", "mid");
  54 
  55     private static final AudioFormat format = new AudioFormat(44100, 16, 2,
  56                                                               true, false);
  57 
  58     private static StandardFileFormat getAudioFileFormat(final Sequence seq) {
  59         long totallen = seq.getMicrosecondLength() / 1000000;
  60         long len = (long) (format.getFrameRate() * (totallen + 4));
  61         return new StandardFileFormat(MIDI, format, len);
  62     }
  63 
  64     private AudioInputStream getAudioInputStream(final Sequence seq)
  65             throws InvalidMidiDataException {
  66         AudioSynthesizer synth = (AudioSynthesizer) new SoftSynthesizer();
  67         AudioInputStream stream;
  68         Receiver recv;
  69         try {
  70             stream = synth.openStream(format, null);
  71             recv = synth.getReceiver();
  72         } catch (MidiUnavailableException e) {
  73             throw new InvalidMidiDataException(e.toString());
  74         }
  75         float divtype = seq.getDivisionType();
  76         Track[] tracks = seq.getTracks();
  77         int[] trackspos = new int[tracks.length];
  78         int mpq = 500000;
  79         int seqres = seq.getResolution();
  80         long lasttick = 0;
  81         long curtime = 0;
  82         while (true) {
  83             MidiEvent selevent = null;
  84             int seltrack = -1;
  85             for (int i = 0; i < tracks.length; i++) {
  86                 int trackpos = trackspos[i];




  46 /**
  47  * MIDI File Audio Renderer/Reader.
  48  *
  49  * @author Karl Helgason
  50  */
  51 public final class SoftMidiAudioFileReader extends SunFileReader {
  52 
  53     private static final Type MIDI = new Type("MIDI", "mid");
  54 
  55     private static final AudioFormat format = new AudioFormat(44100, 16, 2,
  56                                                               true, false);
  57 
  58     private static StandardFileFormat getAudioFileFormat(final Sequence seq) {
  59         long totallen = seq.getMicrosecondLength() / 1000000;
  60         long len = (long) (format.getFrameRate() * (totallen + 4));
  61         return new StandardFileFormat(MIDI, format, len);
  62     }
  63 
  64     private AudioInputStream getAudioInputStream(final Sequence seq)
  65             throws InvalidMidiDataException {
  66         AudioSynthesizer synth = new SoftSynthesizer();
  67         AudioInputStream stream;
  68         Receiver recv;
  69         try {
  70             stream = synth.openStream(format, null);
  71             recv = synth.getReceiver();
  72         } catch (MidiUnavailableException e) {
  73             throw new InvalidMidiDataException(e.toString());
  74         }
  75         float divtype = seq.getDivisionType();
  76         Track[] tracks = seq.getTracks();
  77         int[] trackspos = new int[tracks.length];
  78         int mpq = 500000;
  79         int seqres = seq.getResolution();
  80         long lasttick = 0;
  81         long curtime = 0;
  82         while (true) {
  83             MidiEvent selevent = null;
  84             int seltrack = -1;
  85             for (int i = 0; i < tracks.length; i++) {
  86                 int trackpos = trackspos[i];


< prev index next >