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 / Sequence.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.7 KB  |  167 lines

  1. package javax.sound.midi;
  2.  
  3. import java.util.Vector;
  4.  
  5. public class Sequence {
  6.    public static final float PPQ = 0.0F;
  7.    public static final float SMPTE_24 = 24.0F;
  8.    public static final float SMPTE_25 = 25.0F;
  9.    public static final float SMPTE_30DROP = 29.97F;
  10.    public static final float SMPTE_30 = 30.0F;
  11.    protected float divisionType;
  12.    protected int resolution;
  13.    protected Vector tracks = new Vector();
  14.  
  15.    public Sequence(float var1, int var2) throws InvalidMidiDataException {
  16.       if (var1 == 0.0F) {
  17.          this.divisionType = 0.0F;
  18.       } else if (var1 == 24.0F) {
  19.          this.divisionType = 24.0F;
  20.       } else if (var1 == 25.0F) {
  21.          this.divisionType = 25.0F;
  22.       } else if (var1 == 29.97F) {
  23.          this.divisionType = 29.97F;
  24.       } else {
  25.          if (var1 != 30.0F) {
  26.             throw new InvalidMidiDataException("Unsupported division type: " + var1);
  27.          }
  28.  
  29.          this.divisionType = 30.0F;
  30.       }
  31.  
  32.       this.resolution = var2;
  33.    }
  34.  
  35.    public Sequence(float var1, int var2, int var3) throws InvalidMidiDataException {
  36.       if (var1 == 0.0F) {
  37.          this.divisionType = 0.0F;
  38.       } else if (var1 == 24.0F) {
  39.          this.divisionType = 24.0F;
  40.       } else if (var1 == 25.0F) {
  41.          this.divisionType = 25.0F;
  42.       } else if (var1 == 29.97F) {
  43.          this.divisionType = 29.97F;
  44.       } else {
  45.          if (var1 != 30.0F) {
  46.             throw new InvalidMidiDataException("Unsupported division type: " + var1);
  47.          }
  48.  
  49.          this.divisionType = 30.0F;
  50.       }
  51.  
  52.       this.resolution = var2;
  53.  
  54.       for(int var4 = 0; var4 < var3; ++var4) {
  55.          this.tracks.addElement(new Track());
  56.       }
  57.  
  58.    }
  59.  
  60.    public float getDivisionType() {
  61.       return this.divisionType;
  62.    }
  63.  
  64.    public int getResolution() {
  65.       return this.resolution;
  66.    }
  67.  
  68.    public Track createTrack() {
  69.       Track var1 = new Track();
  70.       this.tracks.addElement(var1);
  71.       return var1;
  72.    }
  73.  
  74.    public boolean deleteTrack(Track var1) {
  75.       Vector var2 = this.tracks;
  76.       synchronized(var2) {
  77.          boolean var3 = this.tracks.removeElement(var1);
  78.          return var3;
  79.       }
  80.    }
  81.  
  82.    public Track[] getTracks() {
  83.       Vector var1 = this.tracks;
  84.       synchronized(var1) {
  85.          Track[] var2 = new Track[this.tracks.size()];
  86.  
  87.          for(int var3 = 0; var3 < var2.length; ++var3) {
  88.             var2[var3] = (Track)this.tracks.elementAt(var3);
  89.          }
  90.  
  91.          return var2;
  92.       }
  93.    }
  94.  
  95.    public long getMicrosecondLength() {
  96.       long var1 = this.getTickLength();
  97.       if (this.divisionType != 0.0F) {
  98.          double var3 = (double)this.getTickLength() / (double)(this.divisionType * (float)this.resolution);
  99.          return (long)((double)1.0E9F * var3);
  100.       } else {
  101.          Track var5 = new Track();
  102.          Object var6 = null;
  103.          Object var7 = null;
  104.          Object var8 = null;
  105.          Object var9 = null;
  106.          Vector var11 = this.tracks;
  107.          synchronized(var11) {
  108.             for(int var12 = 0; var12 < this.tracks.size(); ++var12) {
  109.                Track var21 = (Track)this.tracks.elementAt(var12);
  110.  
  111.                for(int var13 = 0; var13 < var21.size(); ++var13) {
  112.                   MidiEvent var22 = var21.get(var13);
  113.                   MidiMessage var24 = var22.getMessage();
  114.                   if (var24 instanceof MetaMessage && ((MetaMessage)var24).getType() == 81) {
  115.                      var5.add(var22);
  116.                   }
  117.                }
  118.             }
  119.          }
  120.  
  121.          int var25 = 500000;
  122.          long var28 = 0L;
  123.          long var15 = 0L;
  124.          long var17 = 0L;
  125.  
  126.          for(int var19 = 0; var19 < var5.size() - 1; ++var19) {
  127.             MidiEvent var23 = var5.get(var19);
  128.             var17 = var23.getTick();
  129.             if (var17 >= var15) {
  130.                var28 += (var17 - var15) * (long)var25 / (long)this.resolution;
  131.                var15 = var17;
  132.                byte[] var10 = ((MetaMessage)var23.getMessage()).getMessage();
  133.                var25 = 255 & var10[5];
  134.                var25 |= (255 & var10[4]) << 8;
  135.                var25 |= (255 & var10[3]) << 16;
  136.             }
  137.          }
  138.  
  139.          var17 = this.getTickLength();
  140.          if (var17 > var15) {
  141.             var28 += (var17 - var15) * (long)var25 / (long)this.resolution;
  142.          }
  143.  
  144.          return var28;
  145.       }
  146.    }
  147.  
  148.    public long getTickLength() {
  149.       long var1 = 0L;
  150.       Vector var3 = this.tracks;
  151.       synchronized(var3) {
  152.          for(int var4 = 0; var4 < this.tracks.size(); ++var4) {
  153.             long var5 = ((Track)this.tracks.elementAt(var4)).ticks();
  154.             if (var5 > var1) {
  155.                var1 = var5;
  156.             }
  157.          }
  158.  
  159.          return var1;
  160.       }
  161.    }
  162.  
  163.    public Patch[] getPatchList() {
  164.       return new Patch[0];
  165.    }
  166. }
  167.