summaryrefslogtreecommitdiff
path: root/libjava/classpath/javax/sound/midi/MidiSystem.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/javax/sound/midi/MidiSystem.java')
-rw-r--r--libjava/classpath/javax/sound/midi/MidiSystem.java579
1 files changed, 0 insertions, 579 deletions
diff --git a/libjava/classpath/javax/sound/midi/MidiSystem.java b/libjava/classpath/javax/sound/midi/MidiSystem.java
deleted file mode 100644
index 0e3680563fb..00000000000
--- a/libjava/classpath/javax/sound/midi/MidiSystem.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/* MidiSystem.java -- Access system MIDI resources
- Copyright (C) 2005, 2012 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.sound.midi;
-
-import gnu.classpath.ServiceFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Iterator;
-
-import javax.sound.midi.spi.MidiDeviceProvider;
-import javax.sound.midi.spi.MidiFileReader;
-import javax.sound.midi.spi.MidiFileWriter;
-import javax.sound.midi.spi.SoundbankReader;
-
-/**
- * MidiSystem provides access to the computer system's MIDI resources,
- * as well as utility routines for reading MIDI files and more.
- *
- * @author Anthony Green (green@redhat.com)
- * @since 1.3
- *
- */
-public class MidiSystem
-{
- private MidiSystem()
- {
- // Not instantiable.
- }
-
- /**
- * Get an array of all available MIDI devices.
- *
- * @return a possibly empty array of all available MIDI devices
- */
- public static MidiDevice.Info[] getMidiDeviceInfo()
- {
- Iterator<MidiDeviceProvider> deviceProviders =
- ServiceFactory.lookupProviders(MidiDeviceProvider.class);
- List<MidiDevice.Info> infoList = new ArrayList<MidiDevice.Info>();
-
- while (deviceProviders.hasNext())
- {
- MidiDeviceProvider provider = (MidiDeviceProvider) deviceProviders.next();
- MidiDevice.Info[] infos = provider.getDeviceInfo();
- for (int i = infos.length; i > 0; )
- infoList.add(infos[--i]);
- }
-
- return infoList.toArray(new MidiDevice.Info[infoList.size()]);
- }
-
- /**
- * Get the specified MIDI device.
- *
- * @param info a description of the device we're looking for
- * @return the requested MIDI device
- * @throws MidiUnavailableException if no MIDI devices are configured or found
- * @throws IllegalArgumentException if the device described by info is not found
- */
- public static MidiDevice getMidiDevice(MidiDevice.Info info)
- throws MidiUnavailableException
- {
- Iterator<MidiDeviceProvider> deviceProviders =
- ServiceFactory.lookupProviders(MidiDeviceProvider.class);
-
- if (! deviceProviders.hasNext())
- throw new MidiUnavailableException("No MIDI device providers available.");
-
- do
- {
- MidiDeviceProvider provider =
- (MidiDeviceProvider) deviceProviders.next();
- if (provider.isDeviceSupported(info))
- return provider.getDevice(info);
- } while (deviceProviders.hasNext());
-
- throw new IllegalArgumentException("MIDI device "
- + info + " not available.");
- }
-
- /**
- * Get the default Receiver instance. This just picks the first one
- * it finds for now.
- *
- * @return the default Receiver instance
- * @throws MidiUnavailableException if no Receiver is found
- */
- public static Receiver getReceiver() throws MidiUnavailableException
- {
- // TODO: The 1.5 spec has a fancy mechanism to specify the default
- // receiver device. For now, well just return the first one we find.
- MidiDevice.Info[] infos = getMidiDeviceInfo();
- for (int i = 0; i < infos.length; i++)
- {
- MidiDevice device = getMidiDevice(infos[i]);
- if (device instanceof Receiver)
- return (Receiver) device;
- }
- throw new MidiUnavailableException("No Receiver device available");
- }
-
- /**
- * Get the default Transmitter instance. This just picks the first one
- * it finds for now.
- *
- * @return the default Transmitter instance
- * @throws MidiUnavailableException if no Transmitter is found
- */
- public static Transmitter getTransmitter() throws MidiUnavailableException
- {
- // TODO: The 1.5 spec has a fancy mechanism to specify the default
- // Transmitter device. For now, well just return the first one we find.
- MidiDevice.Info[] infos = getMidiDeviceInfo();
- for (int i = 0; i < infos.length; i++)
- {
- MidiDevice device = getMidiDevice(infos[i]);
- if (device instanceof Transmitter)
- return (Transmitter) device;
- }
- throw new MidiUnavailableException("No Transmitter device available");
- }
-
- /**
- * Get the default Synthesizer instance. This just picks the first one
- * it finds for now.
- *
- * @return the default Synthesizer instance
- * @throws MidiUnavailableException if no Synthesizer is found
- */
- public static Synthesizer getSynthesizer() throws MidiUnavailableException
- {
- // TODO: The 1.5 spec has a fancy mechanism to specify the default
- // Synthesizer device. For now, well just return the first one we find.
- MidiDevice.Info[] infos = getMidiDeviceInfo();
- for (int i = 0; i < infos.length; i++)
- {
- MidiDevice device = getMidiDevice(infos[i]);
- if (device instanceof Synthesizer)
- return (Synthesizer) device;
- }
- throw new MidiUnavailableException("No Synthesizer device available");
- }
-
- /**
- * Get the default Sequencer instance. This just picks the first one
- * it finds for now.
- *
- * @return the default Sequencer instance
- * @throws MidiUnavailableException if no Sequencer is found
- */
- public static Sequencer getSequencer() throws MidiUnavailableException
- {
- // TODO: The 1.5 spec has a fancy mechanism to specify the default
- // Sequencer device. For now, well just return the first one we find.
- MidiDevice.Info[] infos = getMidiDeviceInfo();
- for (int i = 0; i < infos.length; i++)
- {
- MidiDevice device = getMidiDevice(infos[i]);
- if (device instanceof Sequencer)
- return (Sequencer) device;
- }
- throw new MidiUnavailableException("No Sequencer device available");
- }
-
- /**
- * Read a Soundbank object from the given stream.
- *
- * @param stream the stream from which to read the Soundbank
- * @return the Soundbank object
- * @throws InvalidMidiDataException if we were unable to read the soundbank
- * @throws IOException if an I/O error happened while reading
- */
- public static Soundbank getSoundbank(InputStream stream)
- throws InvalidMidiDataException, IOException
- {
- Iterator<SoundbankReader> readers =
- ServiceFactory.lookupProviders(SoundbankReader.class);
- while (readers.hasNext())
- {
- SoundbankReader sr = readers.next();
- Soundbank sb = sr.getSoundbank(stream);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Cannot read soundbank from stream");
- }
-
- /**
- * Read a Soundbank object from the given url.
- *
- * @param url the url from which to read the Soundbank
- * @return the Soundbank object
- * @throws InvalidMidiDataException if we were unable to read the soundbank
- * @throws IOException if an I/O error happened while reading
- */
- public static Soundbank getSoundbank(URL url)
- throws InvalidMidiDataException, IOException
- {
- Iterator<SoundbankReader> readers =
- ServiceFactory.lookupProviders(SoundbankReader.class);
- while (readers.hasNext())
- {
- SoundbankReader sr = readers.next();
- Soundbank sb = sr.getSoundbank(url);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Cannot read from url " + url);
- }
-
- /**
- * Read a Soundbank object from the given file.
- *
- * @param file the file from which to read the Soundbank
- * @return the Soundbank object
- * @throws InvalidMidiDataException if we were unable to read the soundbank
- * @throws IOException if an I/O error happened while reading
- */
- public static Soundbank getSoundbank(File file)
- throws InvalidMidiDataException, IOException
- {
- Iterator<SoundbankReader> readers =
- ServiceFactory.lookupProviders(SoundbankReader.class);
- while (readers.hasNext())
- {
- SoundbankReader sr = (SoundbankReader) readers.next();
- Soundbank sb = sr.getSoundbank(file);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Cannot read soundbank from file "
- + file);
- }
-
- /**
- * Read a MidiFileFormat object from the given stream.
- *
- * @param stream the stream from which to read the MidiFileFormat
- * @return the MidiFileFormat object
- * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat
- * @throws IOException if an I/O error happened while reading
- */
- public static MidiFileFormat getMidiFileFormat(InputStream stream)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- MidiFileFormat sb = sr.getMidiFileFormat(stream);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Can't read MidiFileFormat from stream");
- }
-
- /**
- * Read a MidiFileFormat object from the given url.
- *
- * @param url the url from which to read the MidiFileFormat
- * @return the MidiFileFormat object
- * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat
- * @throws IOException if an I/O error happened while reading
- */
- public static MidiFileFormat getMidiFileFormat(URL url)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- MidiFileFormat sb = sr.getMidiFileFormat(url);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Cannot read from url " + url);
- }
-
- /**
- * Read a MidiFileFormat object from the given file.
- *
- * @param file the file from which to read the MidiFileFormat
- * @return the MidiFileFormat object
- * @throws InvalidMidiDataException if we were unable to read the MidiFileFormat
- * @throws IOException if an I/O error happened while reading
- */
- public static MidiFileFormat getMidiFileFormat(File file)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- MidiFileFormat sb = sr.getMidiFileFormat(file);
- if (sb != null)
- return sb;
- }
- throw new InvalidMidiDataException("Can't read MidiFileFormat from file "
- + file);
- }
-
- /**
- * Read a Sequence object from the given stream.
- *
- * @param stream the stream from which to read the Sequence
- * @return the Sequence object
- * @throws InvalidMidiDataException if we were unable to read the Sequence
- * @throws IOException if an I/O error happened while reading
- */
- public static Sequence getSequence(InputStream stream)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- Sequence sq = sr.getSequence(stream);
- if (sq != null)
- return sq;
- }
- throw new InvalidMidiDataException("Can't read Sequence from stream");
- }
-
- /**
- * Read a Sequence object from the given url.
- *
- * @param url the url from which to read the Sequence
- * @return the Sequence object
- * @throws InvalidMidiDataException if we were unable to read the Sequence
- * @throws IOException if an I/O error happened while reading
- */
- public static Sequence getSequence(URL url)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- Sequence sq = sr.getSequence(url);
- if (sq != null)
- return sq;
- }
- throw new InvalidMidiDataException("Cannot read from url " + url);
- }
-
- /**
- * Read a Sequence object from the given file.
- *
- * @param file the file from which to read the Sequence
- * @return the Sequence object
- * @throws InvalidMidiDataException if we were unable to read the Sequence
- * @throws IOException if an I/O error happened while reading
- */
- public static Sequence getSequence(File file)
- throws InvalidMidiDataException, IOException
- {
- Iterator<MidiFileReader> readers =
- ServiceFactory.lookupProviders(MidiFileReader.class);
- while (readers.hasNext())
- {
- MidiFileReader sr = readers.next();
- Sequence sq = sr.getSequence(file);
- if (sq != null)
- return sq;
- }
- throw new InvalidMidiDataException("Can't read Sequence from file "
- + file);
- }
-
- /**
- * Return an array of supported MIDI file types on this system.
- *
- * @return the array of supported MIDI file types
- */
- public static int[] getMidiFileTypes()
- {
- // We only support a max of 3 MIDI file types.
- boolean supported[] = new boolean[3];
- // The number of supported formats.
- int count = 0;
- Iterator<MidiFileWriter> writers =
- ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = writers.next();
- int types[] = fw.getMidiFileTypes();
- for (int i = types.length; i > 0;)
- {
- int type = types[--i];
- if (supported[type] == false)
- {
- count++;
- supported[type] = true;
- }
- }
- }
- int result[] = new int[count];
- for (int i = supported.length; i > 0;)
- {
- if (supported[--i])
- result[--count] = i;
- }
- return result;
- }
-
- /**
- * Return true if the system supports writing files of type fileType.
- *
- * @param fileType the MIDI file type we want to write
- * @return true if we can write fileType files, false otherwise
- */
- public static boolean isFileTypeSupported(int fileType)
- {
- Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = writers.next();
-
- if (fw.isFileTypeSupported(fileType))
- return true;
- }
- return false;
- }
-
- /**
- * Return an array of supported MIDI file types on this system
- * for the given sequnce.
- *
- * @param sequence the sequnce to write
- * @return the array of supported MIDI file types
- */
- public static int[] getMidiFileTypes(Sequence sequence)
- {
- // We only support a max of 3 MIDI file types.
- boolean supported[] = new boolean[3];
- // The number of supported formats.
- int count = 0;
- Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = (MidiFileWriter) writers.next();
- int types[] = fw.getMidiFileTypes(sequence);
- for (int i = types.length; i > 0;)
- {
- int type = types[--i];
- if (supported[type] == false)
- {
- count++;
- supported[type] = true;
- }
- }
- }
- int result[] = new int[count];
- for (int i = supported.length; i > 0;)
- {
- if (supported[--i])
- result[--count] = i;
- }
- return result;
- }
-
- /**
- * Return true if the system supports writing files of type fileType
- * for the given sequence.
- *
- * @param fileType the MIDI file type we want to write
- * @param sequence the Sequence we want to write
- * @return true if we can write fileType files for sequence, false otherwise
- */
- public static boolean isFileTypeSupported(int fileType, Sequence sequence)
- {
- Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = (MidiFileWriter) writers.next();
-
- if (fw.isFileTypeSupported(fileType, sequence))
- return true;
- }
- return false;
- }
-
- /**
- * Write a sequence to an output stream using a specific MIDI file format.
- *
- * @param in the sequence to write
- * @param fileType the MIDI file format to use
- * @param out the output stream to write to
- * @return the number of bytes written
- * @throws IOException if an I/O exception happens
- * @throws IllegalArgumentException if fileType is not supported for in
- */
- public static int write(Sequence in, int fileType, OutputStream out)
- throws IOException
- {
- Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = (MidiFileWriter) writers.next();
-
- if (fw.isFileTypeSupported(fileType, in))
- return fw.write(in, fileType, out);
- }
- throw new IllegalArgumentException("File type "
- + fileType + " is not supported");
- }
-
- /**
- * Write a sequence to a file using a specific MIDI file format.
- *
- * @param in the sequence to write
- * @param fileType the MIDI file format to use
- * @param out the file to write to
- * @return the number of bytes written
- * @throws IOException if an I/O exception happens
- * @throws IllegalArgumentException if fileType is not supported for in
- */
- public static int write(Sequence in, int fileType, File out)
- throws IOException
- {
- Iterator<MidiFileWriter> writers = ServiceFactory.lookupProviders(MidiFileWriter.class);
- while (writers.hasNext())
- {
- MidiFileWriter fw = (MidiFileWriter) writers.next();
-
- if (fw.isFileTypeSupported(fileType, in))
- return fw.write(in, fileType, out);
- }
- throw new IllegalArgumentException("File type "
- + fileType + " is not supported");
- }
-}