jdk/test/javax/sound/midi/Sequence/MidiSMPTE.java
changeset 41905 e8e5df013c6e
equal deleted inserted replaced
41904:524d908e49ea 41905:e8e5df013c6e
       
     1 /*
       
     2  * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 
       
    24 import java.io.ByteArrayInputStream;
       
    25 import java.io.File;
       
    26 import java.io.FileInputStream;
       
    27 import java.io.InputStream;
       
    28 
       
    29 import javax.sound.midi.MidiSystem;
       
    30 import javax.sound.midi.Sequence;
       
    31 
       
    32 /**
       
    33  * @test
       
    34  * @bug 4291250
       
    35  * @summary Midi files with SMPTE time do not play properly
       
    36  */
       
    37 public class MidiSMPTE {
       
    38 
       
    39     public static void main(String[] args) throws Exception {
       
    40         Sequence s = null;
       
    41         //File midiFile = new File("outsmpte.mid");
       
    42         //InputStream is = new FileInputStream(midiFile);
       
    43         //is = new BufferedInputStream(is);
       
    44         InputStream is = new ByteArrayInputStream(smptemidifile);
       
    45         s = MidiSystem.getSequence(is);
       
    46         long duration = s.getMicrosecondLength() / 1000000;
       
    47         System.out.println("Duration: "+duration+" seconds ");
       
    48         if (duration > 14) {
       
    49             throw new Exception("SMPTE time reader is broken! Test FAILED");
       
    50         }
       
    51         System.out.println("Test passed");
       
    52     }
       
    53 
       
    54     public static void printFile(String filename) throws Exception {
       
    55         File file = new File(filename);
       
    56         FileInputStream fis = new FileInputStream(file);
       
    57         byte[] data = new byte[(int) file.length()];
       
    58         fis.read(data);
       
    59         String s = "";
       
    60         for (int i=0; i<data.length; i++) {
       
    61             s+=String.valueOf(data[i])+", ";
       
    62             if (s.length()>72) {
       
    63                 System.out.println(s);
       
    64                 s="";
       
    65             }
       
    66         }
       
    67         System.out.println(s);
       
    68     }
       
    69 
       
    70     // A MIDI file with SMPTE timing
       
    71     static byte[] smptemidifile = {
       
    72             77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, -30, 120, 77, 84, 114, 107, 0,
       
    73             0, 0, 123, 0, -112, 30, 100, -113, 49, -128, 50, 100, -114, 69, -112, 31,
       
    74             100, -114, 33, -128, 51, 100, -114, 55, -112, 32, 100, -114, 120, -128, 52,
       
    75             100, -114, 40, -112, 33, 100, -114, 26, -128, 53, 100, -114, 26, -112, 34,
       
    76             100, -114, 76, -128, 54, 100, -114, 12, -112, 35, 100, -114, 91, -128, 55,
       
    77             100, -114, 69, -112, 36, 100, -114, 33, -128, 56, 100, -114, 55, -112, 37,
       
    78             100, -114, 84, -128, 57, 100, -114, 40, -112, 38, 100, -114, 26, -128, 58,
       
    79             100, -114, 26, -112, 39, 100, -113, 24, -128, 59, 100, -113, 60, -112, 40,
       
    80             100, -113, 110, -128, 60, 100, -113, 96, -112, 41, 100, -113, 39, -128, 61,
       
    81             100, 0, -1, 47, 0, 77, 84, 114, 107, 0, 0, 0, 4, 0, -1, 47, 0, 77, 84, 114,
       
    82             107, 0, 0, 0, 4, 0, -1, 47, 0
       
    83     };
       
    84 
       
    85 }