Advertisement
Guest User

midi parser events

a guest
May 22nd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.29 KB | None | 0 0
  1. while(byteStream.available() > 0) {
  2.                 MainWindow.getTrackProgressBar().setValue((int) Math.round(100 * ((double) (progress) / (double) totalStreamSize)));
  3.                 //System.out.println(byteStream.available());
  4.                 long time = getVaribaleLengthValue(byteStream);
  5.                 byteStream.mark(1);
  6.  
  7.                 if(time < 0) {
  8.                     event = new EndOfTrackEvent(total);
  9.                     tickLength = t.addEvent(event);
  10.                     continue;
  11.                 }
  12.                 total += time;
  13.                 int meta = byteStream.read() & 0xFF;
  14.  
  15.                 //if not large keyboard
  16.                 if(meta >= 128) {
  17.                     lastStatus = meta;
  18.                 }
  19.  
  20.                 if(meta == 0xFF) {
  21.                     int type = byteStream.read() & 0xFF;
  22.                     int length = (int) getVaribaleLengthValue(byteStream);
  23.                     data = new byte[length];
  24.  
  25.                     if(length > 0) {
  26.                         byteStream.read(data);
  27.                     }
  28.  
  29.                     if(type == TEMPO) {
  30.                         int ppq = bytesToInt(Arrays.copyOfRange(data, 0, 3));
  31.  
  32.                         if(ppq <= 0) {
  33.                             event = null;
  34.                             //t.addEvent(event);
  35.                             continue;
  36.                         }
  37.  
  38.                         event = new TempoEvent(total, 60000000.0F / ppq);
  39.                         tickLength = t.addEvent(event);
  40.                         continue;
  41.                     }
  42.  
  43.                     /*
  44.                     if(type == TIME_SIGNATURE) {
  45.                         event = new TimeSignatureEvent(total, data[0], data[1], data[2], data[3], time);
  46.                         t.addEvent(event);
  47.                         continue;
  48.                     }
  49.                     */
  50.  
  51.                     if(type == END_OF_TRACK) {
  52.                         event = new EndOfTrackEvent(total);
  53.                         tickLength = t.addEvent(event);
  54.                         continue;
  55.                     }
  56.                 } else if(meta >= 0x80 && meta <= 0xFE) {
  57.  
  58.                     if(meta >= 0xF4 && meta <= 0xFF) {
  59.                         event = null;
  60.                         //t.addEvent(event);
  61.                         continue;
  62.                     }
  63.                     int value1 = byteStream.read() & 0xFF;
  64.                     int value2 = 0;
  65.  
  66.                     /*
  67.                     if(meta >= 0xE0 && meta <= 0xEF) { //pitch bend
  68.                         //System.out.println("pitch bend in loading");
  69.                         event = new PitchBend(total, value1, meta - 0xE0);
  70.                         tickLength = t.addEvent(event);
  71.                         continue;
  72.                     }
  73.                     */
  74.  
  75.                     if((!(meta >= 0xC0 && meta <= 0xCF)) && meta != 0xF3 && meta != 0xF1) {
  76.                         value2 = byteStream.read(); // & 0xCF
  77.                     } else {
  78.                         if (meta >= 0xC0 && meta <= 0xCF) {
  79.                             //System.out.println("Value 1: " + value1 + ", Tick: " + total + ", Channel: " + (meta - 0xC0));
  80.  
  81.                             event = new ProgramChangeEvent(total, value1, meta - 0xC0);
  82.                             tickLength = t.addEvent(event);
  83.                             continue;
  84.                         }
  85.                     }
  86.  
  87.                         if(meta == 0x90 || meta == 0x91 || meta == 0x92 || meta == 0x93 || meta == 0x94 || meta == 0x95 || meta == 0x96 || meta == 0x97 || meta == 0x98 || meta == 0x99 || meta == 0x9A || meta == 0x9B || meta == 0x9C || meta == 0x9D || meta == 0x9E || meta == 0x9F){
  88.                             if(value1 > 128) {
  89.                                 keyRange = 256;
  90.                             }
  91.  
  92.                             event = new NoteOn(total, value1 & 0xFF, value2, meta - 0x90);
  93.                             tickLength = t.addEvent(event);
  94.                             continue;
  95.                         } else if(meta == 0x80 || meta == 0x81 || meta == 0x82 || meta == 0x83 || meta == 0x84 || meta == 0x85 || meta == 0x86 || meta == 0x87 || meta == 0x88 || meta == 0x89 || meta == 0x8A || meta == 0x8B || meta == 0x8C || meta == 0x8D || meta == 0x8E || meta == 0x8F){
  96.                             event = new NoteOff(total, value1 & 0xFF, value2, meta - 0x80);
  97.                             tickLength = t.addEvent(event);
  98.                             continue;
  99.                         } else {
  100.                             event = null;
  101.                             //t.addEvent(event);
  102.                             continue;
  103.                         }
  104.  
  105.                         /*
  106.                         if(meta == 0x90 || meta == 0x91 || meta == 0x92 || meta == 0x93 || meta == 0x94 || meta == 0x95 || meta == 0x96 || meta == 0x97 || meta == 0x98 || meta == 0x99 || meta == 0x9A || meta == 0x9B || meta == 0x9C || meta == 0x9D || meta == 0x9E || meta == 0x9F){
  107.                             event = new NoteOn(total, (value1 + (TheGhastMidiPlayerPanel.largeKeyboard ? 60 : 0)) & 0xFF, value2, meta - 0x90);
  108.                             break;
  109.                         } else if(meta == 0x80 || meta == 0x81 || meta == 0x82 || meta == 0x83 || meta == 0x84 || meta == 0x85 || meta == 0x86 || meta == 0x87 || meta == 0x88 || meta == 0x89 || meta == 0x8A || meta == 0x8B || meta == 0x8C || meta == 0x8D || meta == 0x8E || meta == 0x8F){
  110.                             event = new NoteOff(total, (value1 + (TheGhastMidiPlayerPanel.largeKeyboard ? 60 : 0)) & 0xFF, value2, meta - 0x80);
  111.                         } else {
  112.                             event = null;
  113.                             break;
  114.                         }
  115.                          */
  116.                 } else if(meta == 0xF0 || meta == 0xF7) {
  117.                     int thing = 0;
  118.  
  119.                     byteStream.read();
  120.                     while(thing != 0xF7) {
  121.                         thing = byteStream.read() & 0xFF;
  122.                     }
  123.  
  124.                     event = null;
  125.                     //t.addEvent(event);
  126.                     continue;
  127.                 } else {
  128.                     byteStream.reset();
  129.                     byteStream.read();
  130.                 }
  131.  
  132.                 event = null;
  133.                 continue;
  134.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement