home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / sound / midi / MidiSystem.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  8.2 KB  |  514 lines

  1. package javax.sound.midi;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.lang.reflect.InvocationTargetException;
  9. import java.lang.reflect.Method;
  10. import java.net.URL;
  11. import java.util.Vector;
  12. import javax.sound.midi.spi.MidiDeviceProvider;
  13. import javax.sound.midi.spi.MidiFileReader;
  14. import javax.sound.midi.spi.MidiFileWriter;
  15. import javax.sound.midi.spi.SoundbankReader;
  16.  
  17. public class MidiSystem {
  18.    private static final String defaultServicesClassName = "com.sun.media.sound.DefaultServices";
  19.    private static final String jdk13ServicesClassName = "com.sun.media.sound.JDK13Services";
  20.    private static final String servicesMethodName = "getProviders";
  21.    private static final Class[] servicesParamTypes;
  22.    // $FF: synthetic field
  23.    static Class class$java$lang$String;
  24.    // $FF: synthetic field
  25.    static Class class$javax$sound$midi$MidiDevice;
  26.    // $FF: synthetic field
  27.    static Class class$javax$sound$midi$Receiver;
  28.    // $FF: synthetic field
  29.    static Class class$javax$sound$midi$Transmitter;
  30.    // $FF: synthetic field
  31.    static Class class$javax$sound$midi$Synthesizer;
  32.    // $FF: synthetic field
  33.    static Class class$javax$sound$midi$Sequencer;
  34.  
  35.    private MidiSystem() {
  36.    }
  37.  
  38.    public static MidiDevice.Info[] getMidiDeviceInfo() {
  39.       return getGenericDeviceInfo(class$javax$sound$midi$MidiDevice == null ? (class$javax$sound$midi$MidiDevice = class$("javax.sound.midi.MidiDevice")) : class$javax$sound$midi$MidiDevice);
  40.    }
  41.  
  42.    public static MidiDevice getMidiDevice(MidiDevice.Info var0) throws MidiUnavailableException {
  43.       return (MidiDevice)getGenericDevice((Class)null, var0);
  44.    }
  45.  
  46.    public static Receiver getReceiver() throws MidiUnavailableException {
  47.       return ((MidiDevice)getGenericDevice(class$javax$sound$midi$Receiver == null ? (class$javax$sound$midi$Receiver = class$("javax.sound.midi.Receiver")) : class$javax$sound$midi$Receiver, (MidiDevice.Info)null)).getReceiver();
  48.    }
  49.  
  50.    public static Transmitter getTransmitter() throws MidiUnavailableException {
  51.       return ((MidiDevice)getGenericDevice(class$javax$sound$midi$Transmitter == null ? (class$javax$sound$midi$Transmitter = class$("javax.sound.midi.Transmitter")) : class$javax$sound$midi$Transmitter, (MidiDevice.Info)null)).getTransmitter();
  52.    }
  53.  
  54.    public static Synthesizer getSynthesizer() throws MidiUnavailableException {
  55.       return (Synthesizer)getGenericDevice(class$javax$sound$midi$Synthesizer == null ? (class$javax$sound$midi$Synthesizer = class$("javax.sound.midi.Synthesizer")) : class$javax$sound$midi$Synthesizer, (MidiDevice.Info)null);
  56.    }
  57.  
  58.    public static Sequencer getSequencer() throws MidiUnavailableException {
  59.       return (Sequencer)getGenericDevice(class$javax$sound$midi$Sequencer == null ? (class$javax$sound$midi$Sequencer = class$("javax.sound.midi.Sequencer")) : class$javax$sound$midi$Sequencer, (MidiDevice.Info)null);
  60.    }
  61.  
  62.    public static Soundbank getSoundbank(InputStream var0) throws InvalidMidiDataException, IOException {
  63.       new Vector();
  64.       Object var2 = null;
  65.       Object var3 = null;
  66.       Vector var1 = getSoundbankReaders();
  67.  
  68.       for(int var4 = 0; var4 < var1.size(); ++var4) {
  69.          SoundbankReader var5 = (SoundbankReader)var1.elementAt(var4);
  70.          Soundbank var6 = var5.getSoundbank(var0);
  71.          if (var6 != null) {
  72.             return var6;
  73.          }
  74.       }
  75.  
  76.       throw new InvalidMidiDataException("cannot get soundbank from stream");
  77.    }
  78.  
  79.    public static Soundbank getSoundbank(URL var0) throws InvalidMidiDataException, IOException {
  80.       new Vector();
  81.       Object var2 = null;
  82.       Object var3 = null;
  83.       Vector var1 = getSoundbankReaders();
  84.  
  85.       for(int var4 = 0; var4 < var1.size(); ++var4) {
  86.          SoundbankReader var5 = (SoundbankReader)var1.elementAt(var4);
  87.          Soundbank var6 = var5.getSoundbank(var0);
  88.          if (var6 != null) {
  89.             return var6;
  90.          }
  91.       }
  92.  
  93.       throw new InvalidMidiDataException("cannot get soundbank from stream");
  94.    }
  95.  
  96.    public static Soundbank getSoundbank(File var0) throws InvalidMidiDataException, IOException {
  97.       FileInputStream var1 = new FileInputStream(var0);
  98.       return getSoundbank((InputStream)var1);
  99.    }
  100.  
  101.    public static MidiFileFormat getMidiFileFormat(InputStream var0) throws InvalidMidiDataException, IOException {
  102.       MidiFileReader[] var1 = getMidiFileReaders();
  103.       MidiFileFormat var2 = null;
  104.  
  105.       for(int var3 = 0; var3 < var1.length; ++var3) {
  106.          try {
  107.             var2 = var1[var3].getMidiFileFormat(var0);
  108.             break;
  109.          }
  110.       }
  111.  
  112.       if (var2 == null) {
  113.          throw new InvalidMidiDataException("input stream is not a supported file type");
  114.       } else {
  115.          return var2;
  116.       }
  117.    }
  118.  
  119.    public static MidiFileFormat getMidiFileFormat(URL var0) throws InvalidMidiDataException, IOException {
  120.       MidiFileReader[] var1 = getMidiFileReaders();
  121.       MidiFileFormat var2 = null;
  122.  
  123.       for(int var3 = 0; var3 < var1.length; ++var3) {
  124.          try {
  125.             var2 = var1[var3].getMidiFileFormat(var0);
  126.             break;
  127.          }
  128.       }
  129.  
  130.       if (var2 == null) {
  131.          throw new InvalidMidiDataException("url is not a supported file type");
  132.       } else {
  133.          return var2;
  134.       }
  135.    }
  136.  
  137.    public static MidiFileFormat getMidiFileFormat(File var0) throws InvalidMidiDataException, IOException {
  138.       MidiFileReader[] var1 = getMidiFileReaders();
  139.       MidiFileFormat var2 = null;
  140.  
  141.       for(int var3 = 0; var3 < var1.length; ++var3) {
  142.          try {
  143.             var2 = var1[var3].getMidiFileFormat(var0);
  144.             break;
  145.          }
  146.       }
  147.  
  148.       if (var2 == null) {
  149.          throw new InvalidMidiDataException("file is not a supported file type");
  150.       } else {
  151.          return var2;
  152.       }
  153.    }
  154.  
  155.    public static Sequence getSequence(InputStream var0) throws InvalidMidiDataException, IOException {
  156.       MidiFileReader[] var1 = getMidiFileReaders();
  157.       Sequence var2 = null;
  158.  
  159.       for(int var3 = 0; var3 < var1.length; ++var3) {
  160.          try {
  161.             var2 = var1[var3].getSequence(var0);
  162.             break;
  163.          }
  164.       }
  165.  
  166.       if (var2 == null) {
  167.          throw new InvalidMidiDataException("could not get sequence from input stream");
  168.       } else {
  169.          return var2;
  170.       }
  171.    }
  172.  
  173.    public static Sequence getSequence(URL var0) throws InvalidMidiDataException, IOException {
  174.       MidiFileReader[] var1 = getMidiFileReaders();
  175.       Sequence var2 = null;
  176.  
  177.       for(int var3 = 0; var3 < var1.length; ++var3) {
  178.          try {
  179.             var2 = var1[var3].getSequence(var0);
  180.             break;
  181.          }
  182.       }
  183.  
  184.       if (var2 == null) {
  185.          throw new InvalidMidiDataException("could not get sequence from URL");
  186.       } else {
  187.          return var2;
  188.       }
  189.    }
  190.  
  191.    public static Sequence getSequence(File var0) throws InvalidMidiDataException, IOException {
  192.       MidiFileReader[] var1 = getMidiFileReaders();
  193.       Sequence var2 = null;
  194.  
  195.       for(int var3 = 0; var3 < var1.length; ++var3) {
  196.          try {
  197.             var2 = var1[var3].getSequence(var0);
  198.             break;
  199.          }
  200.       }
  201.  
  202.       if (var2 == null) {
  203.          throw new InvalidMidiDataException("could not get sequence from file");
  204.       } else {
  205.          return var2;
  206.       }
  207.    }
  208.  
  209.    public static int[] getMidiFileTypes() {
  210.       MidiFileWriter[] var0 = getMidiFileWriters();
  211.       Vector var1 = new Vector();
  212.       int var2 = 0;
  213.       int var3 = 0;
  214.       Object var4 = null;
  215.  
  216.       for(int var5 = 0; var5 < var0.length; ++var5) {
  217.          int[] var9 = var0[var5].getMidiFileTypes();
  218.          var2 += var9.length;
  219.          var1.addElement(var9);
  220.       }
  221.  
  222.       int[] var6 = new int[var2];
  223.  
  224.       for(int var7 = 0; var7 < var1.size(); ++var7) {
  225.          int[] var10 = (int[])var1.elementAt(var7);
  226.  
  227.          for(int var8 = 0; var8 < var10.length; ++var8) {
  228.             var6[var3++] = var10[var8];
  229.          }
  230.       }
  231.  
  232.       return var6;
  233.    }
  234.  
  235.    public static boolean isFileTypeSupported(int var0) {
  236.       MidiFileWriter[] var1 = getMidiFileWriters();
  237.  
  238.       for(int var2 = 0; var2 < var1.length; ++var2) {
  239.          if (var1[var2].isFileTypeSupported(var0)) {
  240.             return true;
  241.          }
  242.       }
  243.  
  244.       return false;
  245.    }
  246.  
  247.    public static int[] getMidiFileTypes(Sequence var0) {
  248.       MidiFileWriter[] var1 = getMidiFileWriters();
  249.       int[][] var2 = new int[var1.length][];
  250.       Object var3 = null;
  251.       int var4 = 0;
  252.       int var5 = 0;
  253.  
  254.       for(int var6 = 0; var6 < var1.length; ++var6) {
  255.          var2[var6] = var1[var6].getMidiFileTypes(var0);
  256.          var4 += var2[var6].length;
  257.       }
  258.  
  259.       int[] var9 = new int[var4];
  260.  
  261.       for(int var7 = 0; var7 < var1.length; ++var7) {
  262.          for(int var8 = 0; var8 < var2[var7].length; ++var8) {
  263.             var9[var5] = var2[var7][var8];
  264.             ++var5;
  265.          }
  266.       }
  267.  
  268.       return var9;
  269.    }
  270.  
  271.    public static boolean isFileTypeSupported(int var0, Sequence var1) {
  272.       MidiFileWriter[] var2 = getMidiFileWriters();
  273.  
  274.       for(int var3 = 0; var3 < var2.length; ++var3) {
  275.          if (var2[var3].isFileTypeSupported(var0, var1)) {
  276.             return true;
  277.          }
  278.       }
  279.  
  280.       return false;
  281.    }
  282.  
  283.    public static int write(Sequence var0, int var1, OutputStream var2) throws IOException {
  284.       MidiFileWriter[] var3 = getMidiFileWriters();
  285.       int var4 = 0;
  286.  
  287.       for(int var5 = 0; var5 < var3.length; ++var5) {
  288.          if (var3[var5].isFileTypeSupported(var1, var0)) {
  289.             var4 = var3[var5].write(var0, var1, var2);
  290.             break;
  291.          }
  292.       }
  293.  
  294.       return var4;
  295.    }
  296.  
  297.    public static int write(Sequence var0, int var1, File var2) throws IOException {
  298.       MidiFileWriter[] var3 = getMidiFileWriters();
  299.       int var4 = 0;
  300.  
  301.       for(int var5 = 0; var5 < var3.length; ++var5) {
  302.          if (var3[var5].isFileTypeSupported(var1, var0)) {
  303.             var4 = var3[var5].write(var0, var1, var2);
  304.             break;
  305.          }
  306.       }
  307.  
  308.       return var4;
  309.    }
  310.  
  311.    private static synchronized boolean isA(Class var0, Class var1) {
  312.       return var1.isAssignableFrom(var0);
  313.    }
  314.  
  315.    private static Vector getMidiDeviceProviders() {
  316.       Object var0 = null;
  317.  
  318.       try {
  319.          Class.forName("sun.misc.Service");
  320.          var3 = getJDK13Services("javax.sound.midi.spi.MidiDeviceProvider");
  321.       } catch (Exception var2) {
  322.          var3 = getDefaultServices("javax.sound.midi.spi.MidiDeviceProvider");
  323.       }
  324.  
  325.       return var3;
  326.    }
  327.  
  328.    private static Vector getSoundbankReaders() {
  329.       Object var0 = null;
  330.  
  331.       try {
  332.          Class.forName("sun.misc.Service");
  333.          var3 = getJDK13Services("javax.sound.midi.spi.SoundbankReader");
  334.       } catch (Exception var2) {
  335.          var3 = getDefaultServices("javax.sound.midi.spi.SoundbankReader");
  336.       }
  337.  
  338.       return var3;
  339.    }
  340.  
  341.    private static MidiFileWriter[] getMidiFileWriters() {
  342.       new Vector();
  343.  
  344.       Vector var0;
  345.       try {
  346.          Class.forName("sun.misc.Service");
  347.          var0 = getJDK13Services("javax.sound.midi.spi.MidiFileWriter");
  348.       } catch (Exception var3) {
  349.          var0 = getDefaultServices("javax.sound.midi.spi.MidiFileWriter");
  350.       }
  351.  
  352.       MidiFileWriter[] var1 = new MidiFileWriter[var0.size()];
  353.  
  354.       for(int var2 = 0; var2 < var1.length; ++var2) {
  355.          var1[var2] = (MidiFileWriter)var0.elementAt(var2);
  356.       }
  357.  
  358.       return var1;
  359.    }
  360.  
  361.    private static MidiFileReader[] getMidiFileReaders() {
  362.       new Vector();
  363.  
  364.       Vector var0;
  365.       try {
  366.          Class.forName("sun.misc.Service");
  367.          var0 = getJDK13Services("javax.sound.midi.spi.MidiFileReader");
  368.       } catch (Exception var3) {
  369.          var0 = getDefaultServices("javax.sound.midi.spi.MidiFileReader");
  370.       }
  371.  
  372.       MidiFileReader[] var1 = new MidiFileReader[var0.size()];
  373.  
  374.       for(int var2 = 0; var2 < var1.length; ++var2) {
  375.          var1[var2] = (MidiFileReader)var0.elementAt(var2);
  376.       }
  377.  
  378.       return var1;
  379.    }
  380.  
  381.    private static MidiDevice.Info[] getGenericDeviceInfo(Class var0) {
  382.       Vector var3 = new Vector();
  383.       Vector var6 = getMidiDeviceProviders();
  384.  
  385.       for(int var1 = 0; var1 < var6.size(); ++var1) {
  386.          MidiDevice.Info[] var4 = ((MidiDeviceProvider)var6.elementAt(var1)).getDeviceInfo();
  387.  
  388.          for(int var2 = 0; var2 < var4.length; ++var2) {
  389.             MidiDevice var7 = ((MidiDeviceProvider)var6.elementAt(var1)).getDevice(var4[var2]);
  390.             if (isA(var0, class$javax$sound$midi$Receiver == null ? (class$javax$sound$midi$Receiver = class$("javax.sound.midi.Receiver")) : class$javax$sound$midi$Receiver)) {
  391.                if (var7.getMaxReceivers() != 0) {
  392.                   var3.addElement(var4[var2]);
  393.                }
  394.             } else if (isA(var0, class$javax$sound$midi$Transmitter == null ? (class$javax$sound$midi$Transmitter = class$("javax.sound.midi.Transmitter")) : class$javax$sound$midi$Transmitter)) {
  395.                if (var7.getMaxTransmitters() != 0) {
  396.                   var3.addElement(var4[var2]);
  397.                }
  398.             } else if (var0.isInstance(var7)) {
  399.                var3.addElement(var4[var2]);
  400.             }
  401.          }
  402.       }
  403.  
  404.       MidiDevice.Info[] var5 = new MidiDevice.Info[var3.size()];
  405.  
  406.       for(int var8 = 0; var8 < var5.length; ++var8) {
  407.          var5[var8] = (MidiDevice.Info)var3.elementAt(var8);
  408.       }
  409.  
  410.       return var5;
  411.    }
  412.  
  413.    private static Object getGenericDevice(Class var0, MidiDevice.Info var1) {
  414.       Object var4 = null;
  415.       Object var5 = null;
  416.       new Vector();
  417.       Vector var6 = getMidiDeviceProviders();
  418.  
  419.       for(int var2 = 0; var2 < var6.size(); ++var2) {
  420.          MidiDevice.Info[] var9 = ((MidiDeviceProvider)var6.elementAt(var2)).getDeviceInfo();
  421.          if (var1 == null) {
  422.             for(int var8 = 0; var8 < var9.length; ++var8) {
  423.                MidiDevice var10 = ((MidiDeviceProvider)var6.elementAt(var2)).getDevice(var9[var8]);
  424.                if (isA(var0, class$javax$sound$midi$Receiver == null ? (class$javax$sound$midi$Receiver = class$("javax.sound.midi.Receiver")) : class$javax$sound$midi$Receiver)) {
  425.                   if (var10.getMaxReceivers() != 0) {
  426.                      return var10;
  427.                   }
  428.                } else if (isA(var0, class$javax$sound$midi$Transmitter == null ? (class$javax$sound$midi$Transmitter = class$("javax.sound.midi.Transmitter")) : class$javax$sound$midi$Transmitter)) {
  429.                   if (var10.getMaxTransmitters() != 0) {
  430.                      return var10;
  431.                   }
  432.                } else if (var0.isInstance(var10)) {
  433.                   return var10;
  434.                }
  435.             }
  436.          } else {
  437.             for(int var3 = 0; var3 < var9.length; ++var3) {
  438.                if (var9[var3].equals(var1)) {
  439.                   MidiDevice var7 = ((MidiDeviceProvider)var6.elementAt(var2)).getDevice(var9[var3]);
  440.                   if (var0 == null) {
  441.                      return var7;
  442.                   }
  443.  
  444.                   if (isA(var0, class$javax$sound$midi$Receiver == null ? (class$javax$sound$midi$Receiver = class$("javax.sound.midi.Receiver")) : class$javax$sound$midi$Receiver)) {
  445.                      if (var7.getMaxReceivers() != 0) {
  446.                         return var7;
  447.                      }
  448.                   } else if (isA(var0, class$javax$sound$midi$Transmitter == null ? (class$javax$sound$midi$Transmitter = class$("javax.sound.midi.Transmitter")) : class$javax$sound$midi$Transmitter) && var7.getMaxTransmitters() != 0) {
  449.                      return var7;
  450.                   }
  451.                }
  452.             }
  453.          }
  454.       }
  455.  
  456.       throw new IllegalArgumentException("Requested device not installed: " + var1);
  457.    }
  458.  
  459.    private static Vector getJDK13Services(String var0) {
  460.       Object var1 = null;
  461.  
  462.       try {
  463.          Class var2 = Class.forName("com.sun.media.sound.JDK13Services");
  464.          Method var3 = var2.getMethod("getProviders", servicesParamTypes);
  465.          Object[] var4 = new Object[]{var0};
  466.          var10 = (Vector)var3.invoke(var2, var4);
  467.       } catch (InvocationTargetException var6) {
  468.          var10 = new Vector();
  469.       } catch (ClassNotFoundException var7) {
  470.          var10 = new Vector();
  471.       } catch (IllegalAccessException var8) {
  472.          var10 = new Vector();
  473.       } catch (NoSuchMethodException var9) {
  474.          var10 = new Vector();
  475.       }
  476.  
  477.       return var10;
  478.    }
  479.  
  480.    private static Vector getDefaultServices(String var0) {
  481.       Object var1 = null;
  482.  
  483.       try {
  484.          Class var2 = Class.forName("com.sun.media.sound.DefaultServices");
  485.          Method var3 = var2.getMethod("getProviders", servicesParamTypes);
  486.          Object[] var4 = new Object[]{var0};
  487.          var10 = (Vector)var3.invoke(var2, var4);
  488.       } catch (InvocationTargetException var6) {
  489.          var10 = new Vector();
  490.       } catch (ClassNotFoundException var7) {
  491.          var10 = new Vector();
  492.       } catch (IllegalAccessException var8) {
  493.          var10 = new Vector();
  494.       } catch (NoSuchMethodException var9) {
  495.          var10 = new Vector();
  496.       }
  497.  
  498.       return var10;
  499.    }
  500.  
  501.    // $FF: synthetic method
  502.    static Class class$(String var0) {
  503.       try {
  504.          return Class.forName(var0);
  505.       } catch (ClassNotFoundException var2) {
  506.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  507.       }
  508.    }
  509.  
  510.    static {
  511.       servicesParamTypes = new Class[]{class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String};
  512.    }
  513. }
  514.