/* * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
// start recording and add various events
seq.startRecording();
// is exception from here on, not failed
failed = false;
if (!seq.isRecording()) {
failed = true; thrownew Exception("Sequencer did not start recording!");
} if (!seq.isRunning()) {
failed = true; thrownew Exception("Sequencer started recording, but is not running!");
}
// first: add an event to the middle of the sequence
ShortMessage msg = new ShortMessage();
msg.setMessage(0xC0, 80, 00);
rec.send(msg, 5l * 1000l * 1000l);
Thread.sleep(1000);
// then add a real-time event
msg = new ShortMessage();
msg.setMessage(0xC0, 81, 00); long secondEventTick = seq.getTickPosition();
rec.send(msg, -1);
seq.stopRecording(); if (seq.isRecording()) {
failed = true; thrownew Exception("Stopped recording, but Sequencer is still recording!");
} if (!seq.isRunning()) {
failed = true; thrownew Exception("Stopped recording, but Sequencer but is not running anymore!");
}
seq.stop(); if (seq.isRunning()) {
failed = true; thrownew Exception("Stopped Sequencer, but it is still running!");
}
// now examine the contents of the recorded track: // 1) number of events: should be 2 more int newSize = track.size(); int addedEventCount = newSize - oldSize;
out("Added "+addedEventCount+" events to recording track."); if (addedEventCount != 2) {
failed = true; thrownew Exception("Did not add 2 events!");
}
// 2) the first event should be at roughly "secondEventTick"
MidiEvent ev = track.get(0);
msg = (ShortMessage) ev.getMessage();
out("The first recorded event is at tick position: "+ev.getTick()); if (Math.abs(ev.getTick() - secondEventTick) > 1000) {
out(" -> but expected something like: "+secondEventTick+"! FAILED.");
failed = true;
}
ev = track.get(1);
msg = (ShortMessage) ev.getMessage();
out("The 2nd recorded event is at tick position: "+ev.getTick());
out(" -> sequence's tick length is "+seq.getTickLength()); if (Math.abs(ev.getTick() - (sequence.getTickLength() / 2)) > 1000) {
out(" -> but expected something like: "+(seq.getTickLength()/2)+"! FAILED.");
failed = true;
}
passed = true;
} catch (Exception e) {
out(e.toString()); if (!failed) out("Test not failed.");
} if (seq != null) {
seq.close();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.