jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java
author serb
Tue, 12 Nov 2013 20:24:25 +0400
changeset 21596 0e3a39f29dbc
parent 6502 13b20559a04a
child 23010 6dadb192ad81
permissions -rw-r--r--
8027696: Incorrect copyright header in the tests Reviewed-by: alanb, malenkov, mullan
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6502
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     1
/*
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     2
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     4
 *
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
21596
0e3a39f29dbc 8027696: Incorrect copyright header in the tests
serb
parents: 6502
diff changeset
     7
 * published by the Free Software Foundation.
6502
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     8
 *
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    13
 * accompanied this code).
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    14
 *
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    18
 *
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    21
 * questions.
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    22
 */
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    23
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    24
/* @test
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    25
 @summary Test RealTime-tunings using SoftReciver.send method */
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    26
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    27
import java.io.IOException;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    28
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    29
import javax.sound.midi.*;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    30
import javax.sound.sampled.*;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    31
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    32
import com.sun.media.sound.*;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    33
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    34
public class RealTimeTuning {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    35
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    36
    private static class PitchSpy {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    37
        public float pitch = 0;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    38
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    39
        public Soundbank getSoundBank() {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    40
            ModelOscillator osc = new ModelOscillator() {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    41
                public float getAttenuation() {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    42
                    return 0;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    43
                }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    44
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    45
                public int getChannels() {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    46
                    return 0;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    47
                }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    48
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    49
                public ModelOscillatorStream open(float samplerate) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    50
                    return new ModelOscillatorStream() {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    51
                        public void close() throws IOException {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    52
                            pitch = 0;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    53
                        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    54
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    55
                        public void noteOff(int velocity) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    56
                            pitch = 0;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    57
                        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    58
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    59
                        public void noteOn(MidiChannel channel,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    60
                                VoiceStatus voice, int noteNumber, int velocity) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    61
                            pitch = noteNumber * 100;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    62
                        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    63
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    64
                        public int read(float[][] buffer, int offset, int len)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    65
                                throws IOException {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    66
                            return len;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    67
                        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    68
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    69
                        public void setPitch(float ipitch) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    70
                            pitch = ipitch;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    71
                        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    72
                    };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    73
                }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    74
            };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    75
            ModelPerformer performer = new ModelPerformer();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    76
            performer.getOscillators().add(osc);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    77
            SimpleInstrument testinstrument = new SimpleInstrument();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    78
            testinstrument.setPatch(new Patch(0, 0));
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    79
            testinstrument.add(performer);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    80
            SimpleSoundbank testsoundbank = new SimpleSoundbank();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    81
            testsoundbank.addInstrument(testinstrument);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    82
            return testsoundbank;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    83
        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    84
    }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    85
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    86
    public static void sendTuningChange(Receiver recv, int channel,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    87
            int tuningpreset, int tuningbank) throws InvalidMidiDataException {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    88
        // Data Entry
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    89
        ShortMessage sm1 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    90
        sm1.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x64, 04);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    91
        ShortMessage sm2 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    92
        sm2.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x65, 00);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    93
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    94
        // Tuning Bank
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    95
        ShortMessage sm3 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    96
        sm3.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x06, tuningbank);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    97
        // Data Increment
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    98
        ShortMessage sm4 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
    99
        sm4.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x60, 0x7F);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   100
        // Data Decrement
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   101
        ShortMessage sm5 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   102
        sm5.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x61, 0x7F);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   103
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   104
        // Data Entry
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   105
        ShortMessage sm6 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   106
        sm6.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x64, 03);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   107
        ShortMessage sm7 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   108
        sm7.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x65, 00);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   109
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   110
        // Tuning program
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   111
        ShortMessage sm8 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   112
        sm8
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   113
                .setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x06,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   114
                        tuningpreset);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   115
        // Data Increment
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   116
        ShortMessage sm9 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   117
        sm9.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x60, 0x7F);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   118
        // Data Decrement
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   119
        ShortMessage sm10 = new ShortMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   120
        sm10.setMessage(ShortMessage.CONTROL_CHANGE, channel, 0x61, 0x7F);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   121
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   122
        recv.send(sm1, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   123
        recv.send(sm2, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   124
        recv.send(sm3, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   125
        recv.send(sm4, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   126
        recv.send(sm5, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   127
        recv.send(sm6, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   128
        recv.send(sm7, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   129
        recv.send(sm8, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   130
        recv.send(sm9, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   131
        recv.send(sm10, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   132
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   133
    }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   134
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   135
    private static void assertTrue(boolean value) throws Exception {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   136
        if (!value)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   137
            throw new RuntimeException("assertTrue fails!");
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   138
    }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   139
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   140
    public static void testTunings(int[] msg, int tuningProgram,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   141
            int tuningBank, int targetNote, float targetPitch, boolean realtime)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   142
            throws Exception {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   143
        AudioSynthesizer synth = new SoftSynthesizer();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   144
        AudioInputStream stream = synth.openStream(null, null);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   145
        Receiver recv = synth.getReceiver();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   146
        MidiChannel channel = synth.getChannels()[0];
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   147
        byte[] buff = new byte[2048];
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   148
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   149
        // Create test instrument which we can use to monitor pitch changes
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   150
        PitchSpy pitchspy = new PitchSpy();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   151
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   152
        synth.unloadAllInstruments(synth.getDefaultSoundbank());
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   153
        synth.loadAllInstruments(pitchspy.getSoundBank());
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   154
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   155
        SysexMessage sysex = null;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   156
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   157
        // Send tuning changes
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   158
        if (msg != null) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   159
            byte[] bmsg = new byte[msg.length];
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   160
            for (int i = 0; i < bmsg.length; i++)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   161
                bmsg[i] = (byte) msg[i];
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   162
            sysex = new SysexMessage();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   163
            sysex.setMessage(bmsg, bmsg.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   164
            if (targetPitch == 0) {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   165
                targetPitch = (float) new SoftTuning(bmsg)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   166
                        .getTuning(targetNote);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   167
                // Check if targetPitch != targetNote * 100
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   168
                assertTrue(Math.abs(targetPitch - targetNote * 100.0) > 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   169
            }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   170
        }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   171
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   172
        if (tuningProgram != -1)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   173
            sendTuningChange(recv, 0, tuningProgram, tuningBank);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   174
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   175
        // First test without tunings
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   176
        channel.noteOn(targetNote, 64);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   177
        stream.read(buff, 0, buff.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   178
        assertTrue(Math.abs(pitchspy.pitch - (targetNote * 100.0)) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   179
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   180
        // Test if realtime/non-realtime works
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   181
        if (sysex != null)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   182
            recv.send(sysex, -1);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   183
        stream.read(buff, 0, buff.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   184
        if (realtime)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   185
            assertTrue(Math.abs(pitchspy.pitch - targetPitch) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   186
        else
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   187
            assertTrue(Math.abs(pitchspy.pitch - (targetNote * 100.0)) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   188
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   189
        // Test if tunings works
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   190
        channel.noteOn(targetNote, 0);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   191
        stream.read(buff, 0, buff.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   192
        assertTrue(Math.abs(pitchspy.pitch - 0.0) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   193
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   194
        channel.noteOn(targetNote, 64);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   195
        stream.read(buff, 0, buff.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   196
        assertTrue(Math.abs(pitchspy.pitch - targetPitch) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   197
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   198
        channel.noteOn(targetNote, 0);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   199
        stream.read(buff, 0, buff.length);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   200
        assertTrue(Math.abs(pitchspy.pitch - 0.0) < 0.001);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   201
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   202
        stream.close();
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   203
    }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   204
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   205
    public static void main(String[] args) throws Exception {
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   206
        // Test with no-tunings
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   207
        testTunings(null, -1, -1, 60, 6000, false);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   208
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   209
        int[] msg;
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   210
        // 0x02 SINGLE NOTE TUNING CHANGE (REAL-TIME)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   211
        msg = new int[] { 0xf0, 0x7f, 0x7f, 0x08, 0x02, 0x10, 0x02, 36, 36, 64,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   212
                0, 60, 70, 0, 0, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   213
        testTunings(msg, 0x10, 0, 60, 7000, true);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   214
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   215
        // 0x07 SINGLE NOTE TUNING CHANGE (NON REAL-TIME) (BANK)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   216
        msg = new int[] { 0xf0, 0x7e, 0x7f, 0x08, 0x07, 0x05, 0x07, 0x02, 36,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   217
                36, 64, 0, 60, 80, 0, 0, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   218
        testTunings(msg, 0x07, 0x05, 60, 8000, false);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   219
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   220
        // 0x07 SINGLE NOTE TUNING CHANGE (REAL-TIME) (BANK)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   221
        msg = new int[] { 0xf0, 0x7f, 0x7f, 0x08, 0x07, 0x05, 0x07, 0x02, 36,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   222
                36, 64, 0, 60, 80, 0, 0, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   223
        testTunings(msg, 0x07, 0x05, 60, 8000, true);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   224
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   225
        // 0x08 scale/octave tuning 1-byte form (Non Real-Time)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   226
        msg = new int[] { 0xf0, 0x7e, 0x7f, 0x08, 0x08, 0x03, 0x7f, 0x7f, 5,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   227
                10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   228
        testTunings(msg, -1, -1, 60, 0, false);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   229
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   230
        // 0x08 scale/octave tuning 1-byte form (REAL-TIME)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   231
        msg = new int[] { 0xf0, 0x7f, 0x7f, 0x08, 0x08, 0x03, 0x7f, 0x7f, 5,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   232
                10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   233
        testTunings(msg, -1, -1, 60, 0, true);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   234
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   235
        // 0x09 scale/octave tuning 2-byte form (Non Real-Time)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   236
        msg = new int[] { 0xf0, 0x7e, 0x7f, 0x08, 0x09, 0x03, 0x7f, 0x7f, 5,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   237
                10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52, 5, 10, 15, 20, 25,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   238
                30, 35, 40, 45, 50, 51, 52, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   239
        testTunings(msg, -1, -1, 60, 0, false);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   240
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   241
        // 0x09 scale/octave tuning 2-byte form (REAL-TIME)
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   242
        msg = new int[] { 0xf0, 0x7f, 0x7f, 0x08, 0x09, 0x03, 0x7f, 0x7f, 5,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   243
                10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52, 5, 10, 15, 20, 25,
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   244
                30, 35, 40, 45, 50, 51, 52, 0xf7 };
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   245
        testTunings(msg, -1, -1, 60, 0, true);
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   246
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   247
    }
13b20559a04a 6941027: Gervill update, April 2010
kalli
parents:
diff changeset
   248
}