Load2.java revision 2362
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs/*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * This code is free software; you can redistribute it and/or modify it
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * under the terms of the GNU General Public License version 2 only, as
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * published by the Free Software Foundation. Oracle designates this
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * particular file as subject to the "Classpath" exception as provided
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * by Oracle in the LICENSE file that accompanied this code.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * This code is distributed in the hope that it will be useful, but WITHOUT
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * version 2 for more details (a copy is included in the LICENSE file that
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * accompanied this code).
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * You should have received a copy of the GNU General Public License version
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 2 along with this work; if not, write to the Free Software Foundation,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * or visit www.oracle.com if you need additional information or have any
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * questions.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs/* @test
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs @summary Test SoftTuning load method */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsimport javax.sound.midi.MidiUnavailableException;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsimport javax.sound.midi.Patch;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsimport javax.sound.sampled.*;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsimport com.sun.media.sound.*;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobspublic class Load2 {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs private static void assertEquals(Object a, Object b) throws Exception
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if(!a.equals(b))
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs throw new RuntimeException("assertEquals fails!");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs private static void assertTrue(boolean value) throws Exception
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if(!value)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs throw new RuntimeException("assertTrue fails!");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs public static void main(String[] args) throws Exception {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs // http://www.midi.org/about-midi/tuning.shtml
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs // 0x02 SINGLE NOTE TUNING CHANGE (REAL-TIME)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs SoftTuning tuning = new SoftTuning();
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int[] msg = {0xf0,0x7f,0x7f,0x08,0x02,0x10,0x02,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs 36,36,64,0,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs 40,70,0,0,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs 0xf7};
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs byte[] bmsg = new byte[msg.length];
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs for (int i = 0; i < bmsg.length; i++)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs bmsg[i] = (byte)msg[i];
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tuning.load(bmsg);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs double[] tunings = tuning.getTuning();
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs for (int i = 0; i < tunings.length; i++) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if(i == 36)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs assertTrue(Math.abs(tunings[i]-3650)< 0.00001);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs else if(i == 40)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs assertTrue(Math.abs(tunings[i]-7000) < 0.00001);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs else
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs assertTrue(Math.abs(tunings[i]-i*100) < 0.00001);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs