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