Send_ResetAllControllers.java revision 8729:0242fce0f717
1321936Shselasky/* 2321936Shselasky * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. 3321936Shselasky * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4321936Shselasky * 5321936Shselasky * This code is free software; you can redistribute it and/or modify it 6321936Shselasky * under the terms of the GNU General Public License version 2 only, as 7321936Shselasky * published by the Free Software Foundation. 8321936Shselasky * 9321936Shselasky * This code is distributed in the hope that it will be useful, but WITHOUT 10321936Shselasky * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11321936Shselasky * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12321936Shselasky * version 2 for more details (a copy is included in the LICENSE file that 13321936Shselasky * accompanied this code). 14321936Shselasky * 15321936Shselasky * You should have received a copy of the GNU General Public License version 16321936Shselasky * 2 along with this work; if not, write to the Free Software Foundation, 17321936Shselasky * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18321936Shselasky * 19321936Shselasky * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20321936Shselasky * or visit www.oracle.com if you need additional information or have any 21321936Shselasky * questions. 22321936Shselasky */ 23321936Shselasky 24321936Shselasky/* @test 25321936Shselasky @summary Test SoftReceiver send method */ 26321936Shselasky 27321936Shselaskyimport javax.sound.midi.*; 28321936Shselaskyimport javax.sound.sampled.*; 29321936Shselasky 30321936Shselaskyimport com.sun.media.sound.*; 31321936Shselasky 32321936Shselaskypublic class Send_ResetAllControllers { 33321936Shselasky 34321936Shselasky public static boolean[] dontResetControls = new boolean[128]; 35321936Shselasky static { 36321936Shselasky for (int i = 0; i < dontResetControls.length; i++) 37321936Shselasky dontResetControls[i] = false; 38321936Shselasky 39321936Shselasky dontResetControls[0] = true; // Bank Select (MSB) 40321936Shselasky dontResetControls[32] = true; // Bank Select (LSB) 41321936Shselasky dontResetControls[7] = true; // Channel Volume (MSB) 42321936Shselasky dontResetControls[8] = true; // Balance (MSB) 43321936Shselasky dontResetControls[10] = true; // Pan (MSB) 44321936Shselasky dontResetControls[11] = true; // Expression (MSB) 45321936Shselasky dontResetControls[91] = true; // Effects 1 Depth (default: Reverb Send) 46321936Shselasky dontResetControls[92] = true; // Effects 2 Depth (default: Tremolo Depth) 47321936Shselasky dontResetControls[93] = true; // Effects 3 Depth (default: Chorus Send) 48321936Shselasky dontResetControls[94] = true; // Effects 4 Depth (default: Celeste [Detune] Depth) 49321936Shselasky dontResetControls[95] = true; // Effects 5 Depth (default: Phaser Depth) 50321936Shselasky dontResetControls[70] = true; // Sound Controller 1 (default: Sound Variation) 51321936Shselasky dontResetControls[71] = true; // Sound Controller 2 (default: Timbre / Harmonic Quality) 52321936Shselasky dontResetControls[72] = true; // Sound Controller 3 (default: Release Time) 53321936Shselasky dontResetControls[73] = true; // Sound Controller 4 (default: Attack Time) 54321936Shselasky dontResetControls[74] = true; // Sound Controller 5 (default: Brightness) 55321936Shselasky dontResetControls[75] = true; // Sound Controller 6 (GM2 default: Decay Time) 56321936Shselasky dontResetControls[76] = true; // Sound Controller 7 (GM2 default: Vibrato Rate) 57321936Shselasky dontResetControls[77] = true; // Sound Controller 8 (GM2 default: Vibrato Depth) 58321936Shselasky dontResetControls[78] = true; // Sound Controller 9 (GM2 default: Vibrato Delay) 59321936Shselasky dontResetControls[79] = true; // Sound Controller 10 (GM2 default: Undefined) 60321936Shselasky dontResetControls[120] = true; // All Sound Off 61321936Shselasky dontResetControls[121] = true; // Reset All Controllers 62321936Shselasky dontResetControls[122] = true; // Local Control On/Off 63321936Shselasky dontResetControls[123] = true; // All Notes Off 64321936Shselasky dontResetControls[124] = true; // Omni Mode Off 65321936Shselasky dontResetControls[125] = true; // Omni Mode On 66321936Shselasky dontResetControls[126] = true; // Poly Mode Off 67321936Shselasky dontResetControls[127] = true; // Poly Mode On 68321936Shselasky 69321936Shselasky dontResetControls[6] = true; // Data Entry (MSB) 70321936Shselasky dontResetControls[38] = true; // Data Entry (LSB) 71321936Shselasky dontResetControls[96] = true; // Data Increment 72321936Shselasky dontResetControls[97] = true; // Data Decrement 73321936Shselasky dontResetControls[98] = true; // Non-Registered Parameter Number (LSB) 74321936Shselasky dontResetControls[99] = true; // Non-Registered Parameter Number(MSB) 75321936Shselasky dontResetControls[100] = true; // RPN = Null 76321936Shselasky dontResetControls[101] = true; // RPN = Null 77321936Shselasky } 78321936Shselasky 79321936Shselasky private static void assertEquals(Object a, Object b) throws Exception 80321936Shselasky { 81321936Shselasky if(!a.equals(b)) 82321936Shselasky throw new RuntimeException("assertEquals fails!"); 83321936Shselasky } 84321936Shselasky 85321936Shselasky private static void assertTrue(boolean value) throws Exception 86321936Shselasky { 87321936Shselasky if(!value) 88321936Shselasky throw new RuntimeException("assertTrue fails!"); 89321936Shselasky } 90321936Shselasky 91321936Shselasky public static void main(String[] args) throws Exception { 92321936Shselasky SoftTestUtils soft = new SoftTestUtils(); 93321936Shselasky MidiChannel channel = soft.synth.getChannels()[0]; 94321936Shselasky Receiver receiver = soft.synth.getReceiver(); 95321936Shselasky 96321936Shselasky // First let all controls contain non-default values 97321936Shselasky for (int i = 0; i < 128; i++) 98321936Shselasky channel.setPolyPressure(i, 10); 99321936Shselasky channel.setChannelPressure(10); 100321936Shselasky channel.setPitchBend(2192); 101321936Shselasky for (int i = 0; i < 120; i++) 102321936Shselasky channel.controlChange(i, 1); 103321936Shselasky 104321936Shselasky ShortMessage smsg = new ShortMessage(); 105321936Shselasky smsg.setMessage(ShortMessage.CONTROL_CHANGE,0, 121,0); 106321936Shselasky receiver.send(smsg, -1); 107321936Shselasky 108321936Shselasky // Now check if resetAllControllers did what it was suppose to do 109321936Shselasky 110321936Shselasky for (int i = 0; i < 128; i++) 111321936Shselasky assertEquals(channel.getPolyPressure(i), 0); 112321936Shselasky assertEquals(channel.getChannelPressure(), 0); 113321936Shselasky assertEquals(channel.getPitchBend(),8192); 114321936Shselasky for (int i = 0; i < 120; i++) 115321936Shselasky if(!dontResetControls[i]) 116321936Shselasky assertEquals(channel.getController(i), 0); 117321936Shselasky assertEquals(channel.getController(71), 64); // Filter Resonance 118321936Shselasky assertEquals(channel.getController(72), 64); // Release Time 119321936Shselasky assertEquals(channel.getController(73), 64); // Attack Time 120321936Shselasky assertEquals(channel.getController(74), 64); // Brightness 121321936Shselasky assertEquals(channel.getController(75), 64); // Decay Time 122321936Shselasky assertEquals(channel.getController(76), 64); // Vibrato Rate 123321936Shselasky assertEquals(channel.getController(77), 64); // Vibrato Depth 124321936Shselasky assertEquals(channel.getController(78), 64); // Vibrato Delay 125321936Shselasky assertEquals(channel.getController(8), 64); // Balance 126321936Shselasky assertEquals(channel.getController(11), 127); // Expression 127321936Shselasky assertEquals(channel.getController(98), 127); // NRPN Null 128321936Shselasky assertEquals(channel.getController(99), 127); // NRPN Null 129321936Shselasky assertEquals(channel.getController(100), 127); // RPN = Null 130321936Shselasky assertEquals(channel.getController(101), 127); // RPN = Null 131321936Shselasky 132321936Shselasky soft.close(); 133321936Shselasky } 134321936Shselasky} 135321936Shselasky