blob: eede0a958070c8ca330becac2f34c7a330d5fe65 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.sound.midi;
import java.util.ArrayList;
import java.util.List;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import javax.sound.midi.MidiDevice.Info;
import javax.sound.midi.spi.MidiDeviceProvider;
import javax.sound.midi.spi.MidiFileReader;
import javax.sound.midi.spi.MidiFileWriter;
import javax.sound.midi.spi.SoundbankReader;
import org.apache.harmony.sound.utils.ProviderService;
public class MidiSystem {
//path to javax.sound.midi.spi.MidiDeviceProvider file in the jar-file
private final static String midiDeviceProviderPath =
"META-INF/services/javax.sound.midi.spi.MidiDeviceProvider";
//path to javax.sound.midi.spi.MidiFileReader file in the jar-file
private final static String midiFileReaderPath =
"META-INF/services/javax.sound.midi.spi.MidiFileReader";
//path to javax.sound.midi.spi.MidiFileWriter file in the jar-file
private final static String midiFileWriterPath =
"META-INF/services/javax.sound.midi.spi.MidiFileWriter";
//path to javax.sound.midi.spi.SoundbankReader file in the jar-file
private final static String soundbankReaderPath =
"META-INF/services/javax.sound.midi.spi.SoundbankReader";
//key to find default receiver in the sound.properties file
private final static String receiverName = "javax.sound.midi.Receiver";
//key to find default sequencer in the sound.properties file
private final static String sequencerName = "javax.sound.midi.Sequencer";
//key to find default synthesizer in the sound.properties file
private final static String synthesizerName = "javax.sound.midi.Synthesizer";
//key to find default transmitter in the sound.properties file
private final static String transmitterName = "javax.sound.midi.Transmitter";
public static MidiDevice getMidiDevice(MidiDevice.Info info)
throws MidiUnavailableException {
//FIXME
/*
* this method must to throw out MidiUnavailableException if requested device
* is not available
*/
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
/*
* find device that describes by parameter info and return it
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.equals(info)) {
return ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(info);
}
}
}
/*
* if we can't find device with requested info, we throw out IllegalArgumentException
*/
throw new IllegalArgumentException("Requested device not installed: " + info.getName());
}
public static MidiDevice.Info[] getMidiDeviceInfo() {
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
//variable to save MidiDevice.Info
List<MidiDevice.Info> infos = new ArrayList<MidiDevice.Info>();
/*
* look through list of providers and save info of devices
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
infos.add(element);
}
}
MidiDevice.Info[] temp = new MidiDevice.Info[infos.size()];
return infos.toArray(temp);
}
public static MidiFileFormat getMidiFileFormat(File file) throws InvalidMidiDataException,
IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getMidiFileFormat(file);
}
public static MidiFileFormat getMidiFileFormat(InputStream stream) throws InvalidMidiDataException,
IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getMidiFileFormat(stream);
}
public static MidiFileFormat getMidiFileFormat(URL url) throws InvalidMidiDataException,
IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getMidiFileFormat(url);
}
public static int[] getMidiFileTypes() {
/*
* obtain the list of MidiFileWriterProviders
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).getMidiFileTypes();
}
public static int[] getMidiFileTypes(Sequence sequence) {
/*
* obtain the list of MidiFileWriterProviders
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).getMidiFileTypes(sequence);
}
public static Receiver getReceiver() throws MidiUnavailableException {
/*
* description of the default device for javax.sound.midi.Receiver
*/
List<String> defaultDevice = ProviderService.getDefaultDeviceDescription(receiverName);
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
String provName;
int deviceNum = -1;
/*
* defaultDevice.get(0) --> provider
* defaultDevice.get(1) --> name
*/
if (defaultDevice.size() != 0) {
/*
* obtain the provider number in the list of deviceProviders that is provider for default device
*/
for (int i = 0; i < deviceProviders.size(); i++) {
provName = deviceProviders.get(i).toString();
if (provName.substring(0, provName.indexOf("@")).equals(defaultDevice.get(0))) {
deviceNum = i;
break;
}
}
/*
* the first case: find the same provider and name that describes by default device
*/
if (deviceNum != -1) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
try {
return ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element).getReceiver();
} catch (MidiUnavailableException e) {}
}
}
for (Info element : deviceInfo) {
try {
return ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element).getReceiver();
} catch (MidiUnavailableException e) {}
}
}
/*
* if we don't find again, find any receivers describe by name
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
try {
return ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element).getReceiver();
} catch (MidiUnavailableException e) {}
}
}
}
}
/*
* in the last case we look throw all providers and find any receiver
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
try {
return ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element).getReceiver();
} catch (MidiUnavailableException e) {}
}
}
/*
* if we don't find anyway, we throw out MidiUnavailableException
*/
throw new MidiUnavailableException("There are no Recivers installed on your system!");
}
public static Sequence getSequence(File file) throws InvalidMidiDataException, IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
// BEGIN android-added
try {
((List)fileReaderProviders).add((Object)Class.forName("com.android.internal.sound.midi.AndroidMidiFileReader").newInstance());
} catch (Exception ex) {
// Ignore
}
// END android-added
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getSequence(file);
}
public static Sequence getSequence(InputStream stream) throws InvalidMidiDataException,
IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
// BEGIN android-added
try {
((List)fileReaderProviders).add(Class.forName("com.android.internal.sound.midi.AndroidMidiFileReader").newInstance());
} catch (Exception ex) {
// Ignore
}
// END android-added
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getSequence(stream);
}
public static Sequence getSequence(URL url) throws InvalidMidiDataException, IOException {
/*
* obtain the list of MidiFileReaderProviders
*/
List<?> fileReaderProviders = ProviderService.getProviders(midiFileReaderPath);
// BEGIN android-added
try {
((List)fileReaderProviders).add(Class.forName("com.android.internal.sound.midi.AndroidMidiFileReader").newInstance());
} catch (Exception ex) {
// Ignore
}
// END android-added
if (fileReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileReader) fileReaderProviders.get(0)).getSequence(url);
}
public static Sequencer getSequencer() throws MidiUnavailableException {
/*
* this method is equals to method MidiSystem.getSequencer(true)
*/
return getSequencer(true);
}
public static Sequencer getSequencer(boolean connected) throws MidiUnavailableException {
/*
* description of the default device for javax.sound.midi.Sequencer
*/
List<String> defaultDevice = ProviderService.getDefaultDeviceDescription(sequencerName);
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
Sequencer sequencer;
Transmitter seqTrans;
Synthesizer synth;
Receiver recv;
String provName;
int deviceNum = -1;
/*
* defaultDevice.get(0) --> provider
* defaultDevice.get(1) --> name
*/
if (defaultDevice.size() != 0) {
/*
* obtain the provider number in the list of deviceProviders that is provider for default device
*/
for (int i = 0; i < deviceProviders.size(); i++) {
provName = deviceProviders.get(i).toString();
if (provName.substring(0, provName.indexOf("@")).equals(defaultDevice.get(0))) {
deviceNum = i;
break;
}
}
/*
* the first case: find the same provider and name that describes by default device
*/
if (deviceNum != -1) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
if (((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element) instanceof Sequencer) {
if (connected) {
sequencer = (Sequencer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
seqTrans = sequencer.getTransmitter();
try {
synth = MidiSystem.getSynthesizer();
recv = synth.getReceiver();
} catch (MidiUnavailableException e) {
/*
* if we haven't Synthesizer in the system, we use default receiver
*/
recv = MidiSystem.getReceiver();
}
seqTrans.setReceiver(recv);
return sequencer;
}
return (Sequencer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
}
}
}
for (Info element : deviceInfo) {
if (((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element) instanceof Sequencer) {
if (connected) {
sequencer = (Sequencer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
seqTrans = sequencer.getTransmitter();
try {
synth = MidiSystem.getSynthesizer();
recv = synth.getReceiver();
} catch (MidiUnavailableException e) {
/*
* if we haven't Synthesizer in the system, we use default receiver
*/
recv = MidiSystem.getReceiver();
}
seqTrans.setReceiver(recv);
return sequencer;
}
return (Sequencer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
}
}
}
/*
* if we don't find again, find any receivers describe by name
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
if (((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element) instanceof Sequencer) {
if (connected) {
sequencer = (Sequencer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
seqTrans = sequencer.getTransmitter();
try {
synth = MidiSystem.getSynthesizer();
recv = synth.getReceiver();
} catch (MidiUnavailableException e) {
/*
* if we haven't Synthesizer in the system, we use default receiver
*/
recv = MidiSystem.getReceiver();
}
seqTrans.setReceiver(recv);
return sequencer;
}
return (Sequencer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
}
}
}
}
}
/*
* in the last case we look throw all providers and find any receiver
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element) instanceof Sequencer) {
if (connected) {
sequencer = (Sequencer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
seqTrans = sequencer.getTransmitter();
try {
synth = MidiSystem.getSynthesizer();
recv = synth.getReceiver();
} catch (MidiUnavailableException e) {
/*
* if we haven't Synthesizer in the system, we use default receiver
*/
recv = MidiSystem.getReceiver();
}
seqTrans.setReceiver(recv);
return sequencer;
}
return (Sequencer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
}
}
}
// BEGIN android-added
try {
return (Sequencer)(Class.forName("com.android.internal.sound.midi.AndroidSequencer").newInstance());
} catch (Exception ex) {
// Ignore
}
// END android-added
/*
* if we don't find anyway, we throw out MidiUnavailableException
*/
throw new MidiUnavailableException("There are no Synthesizers installed on your system!");
}
public static Soundbank getSoundbank(File file) throws InvalidMidiDataException,
IOException {
/*
* obtain the list of SoundbankReaderProviders
*/
List<?> soundbankReaderProviders = ProviderService.getProviders(soundbankReaderPath);
if (soundbankReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no SoundbankReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((SoundbankReader) soundbankReaderProviders.get(0)).getSoundbank(file);
}
public static Soundbank getSoundbank(InputStream stream) throws InvalidMidiDataException, IOException {
/*
* obtain the list of SoundbankReaderProviders
*/
List<?> soundbankReaderProviders = ProviderService.getProviders(soundbankReaderPath);
if (soundbankReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no SoundbankReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((SoundbankReader) soundbankReaderProviders.get(0)).getSoundbank(stream);
}
public static Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException {
/*
* obtain the list of SoundbankReaderProviders
*/
List<?> soundbankReaderProviders = ProviderService.getProviders(soundbankReaderPath);
if (soundbankReaderProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no SoundbankReaderProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((SoundbankReader) soundbankReaderProviders.get(0)).getSoundbank(url);
}
public static Synthesizer getSynthesizer() throws MidiUnavailableException {
/*
* description of the default device for javax.sound.midi.Synthesizer
*/
List<String> defaultDevice = ProviderService.getDefaultDeviceDescription(synthesizerName);
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
String provName;
int deviceNum = -1;
/*
* defaultDevice.get(0) --> provider
* defaultDevice.get(1) --> name
*/
if (defaultDevice.size() != 0) {
/*
* obtain the provider number in the list of deviceProviders that is provider for default device
*/
for (int i = 0; i < deviceProviders.size(); i++) {
provName = deviceProviders.get(i).toString();
if (provName.substring(0, provName.indexOf("@")).equals(defaultDevice.get(0))) {
deviceNum = i;
break;
}
}
/*
* the first case: find the same provider and name that describes by default device
*/
if (deviceNum != -1) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
if (((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element) instanceof Synthesizer) {
return (Synthesizer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
}
}
}
for (Info element : deviceInfo) {
if (((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element) instanceof Synthesizer) {
return (Synthesizer) ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element);
}
}
}
/*
* if we don't find again, find any receivers describe by name
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
if (((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element) instanceof Synthesizer) {
return (Synthesizer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
}
}
}
}
}
/*
* in the last case we look throw all providers and find any receiver
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element) instanceof Synthesizer) {
return (Synthesizer) ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element);
}
}
}
/*
* if we don't find anyway, we throw out MidiUnavailableException
*/
throw new MidiUnavailableException("There are no Synthesizers installed on your system!");
}
public static Transmitter getTransmitter() throws MidiUnavailableException {
/*
* description of the default device for javax.sound.midi.Transmitter
*/
List<String> defaultDevice = ProviderService.getDefaultDeviceDescription(transmitterName);
/*
* obtain the list of MidiDeviceProviders
*/
List<?> deviceProviders = ProviderService.getProviders(midiDeviceProviderPath);
String provName;
int deviceNum = -1;
/*
* defaultDevice.get(0) --> provider
* defaultDevice.get(1) --> name
*/
if (defaultDevice.size() != 0) {
/*
* obtain the provider number in the list of deviceProviders that is provider for default device
*/
for (int i = 0; i < deviceProviders.size(); i++) {
provName = deviceProviders.get(i).toString();
if (provName.substring(0, provName.indexOf("@")).equals(defaultDevice.get(0))) {
deviceNum = i;
break;
}
}
/*
* the first case: find the same provider and name that describes by default device
*/
if (deviceNum != -1) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
try {
return ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element).getTransmitter();
} catch (MidiUnavailableException e) {}
}
}
for (Info element : deviceInfo) {
try {
return ((MidiDeviceProvider) deviceProviders.get(deviceNum)).getDevice(element).getTransmitter();
} catch (MidiUnavailableException e) {}
}
}
/*
* if we don't find again, find any receivers describe by name
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
if (element.getName().equals(defaultDevice.get(1))) {
try {
return ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element).getTransmitter();
} catch (MidiUnavailableException e) {}
}
}
}
}
/*
* in the last case we look throw all providers and find any receiver
*/
for (int i = 0; i < deviceProviders.size(); i++) {
MidiDevice.Info[] deviceInfo = ((MidiDeviceProvider) deviceProviders.get(i)).getDeviceInfo();
for (Info element : deviceInfo) {
try {
return ((MidiDeviceProvider) deviceProviders.get(i)).getDevice(element).getTransmitter();
} catch (MidiUnavailableException e) {}
}
}
/*
* if we don't find anyway, we throw out MidiUnavailableException
*/
throw new MidiUnavailableException("There are no Transmitters installed on your system!");
}
public static boolean isFileTypeSupported(int fileType) {
/*
* obtain the list of MidiFileWriterProviders;
* if we already obtain the list of providers, we don't obtain it again
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).isFileTypeSupported(fileType);
}
public static boolean isFileTypeSupported(int fileType, Sequence sequence) {
/*
* obtain the list of MidiFileWriterProviders
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).isFileTypeSupported(fileType, sequence);
}
public static int write(Sequence in, int type, File out) throws IOException {
/*
* obtain the list of MidiFileWriterProviders
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).write(in, type, out);
}
public static int write(Sequence in, int fileType, OutputStream out) throws IOException {
/*
* obtain the list of MidiFileWriterProviders
*/
List<?> fileWriterProviders = ProviderService.getProviders(midiFileWriterPath);
if (fileWriterProviders.size() == 0) {
//FIXME
/*
* I don't understand what type of exception we should throw out if we haven't
* appropriate providers...
* Maybe here is should be MidiUnavailableException
*/
throw new Error("There is no MidiFileWriterProviders on your system!!!");
}
/*
* It's not determine what provider for this service I should to use, and so
* I use the first one
*/
return ((MidiFileWriter) fileWriterProviders.get(0)).write(in, fileType, out);
}
}