/* * JFugue, an Application Programming Interface (API) for Music Programming * http://www.jfugue.org * * Copyright (C) 2003-2014 David Koelle * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.staccato; import org.jfugue.midi.MidiDefaults; import org.jfugue.parser.ParserListener; import org.jfugue.pattern.Pattern; import org.jfugue.pattern.PatternProducer; import org.jfugue.theory.Chord; import org.jfugue.theory.Note; public class StaccatoParserListener implements ParserListener, PatternProducer { private Pattern pattern; private byte track; public StaccatoParserListener() { pattern = new Pattern(); } public Pattern getPattern() { return this.pattern; } @Override public void beforeParsingStarts() { pattern = new Pattern(); } @Override public void afterParsingFinished() { } @Override public void onTrackChanged(byte track) { pattern.add(StaccatoUtil.createTrackElement(track)); this.track = track; } @Override public void onLayerChanged(byte layer) { pattern.add(StaccatoUtil.createLayerElement(layer)); } @Override public void onInstrumentParsed(byte instrument) { pattern.add(StaccatoUtil.createInstrumentElement(instrument)); } @Override public void onTempoChanged(int tempoBPM) { pattern.add(StaccatoUtil.createTempoElement(tempoBPM)); } @Override public void onKeySignatureParsed(byte key, byte scale) { pattern.add(StaccatoUtil.createKeySignatureElement(key, scale)); } @Override public void onTimeSignatureParsed(byte numerator, byte powerOfTwo) { pattern.add(StaccatoUtil.createTimeSignatureElement(numerator, powerOfTwo)); } @Override public void onBarLineParsed(long time) { pattern.add(StaccatoUtil.createBarLineElement(time)); } @Override public void onTrackBeatTimeBookmarked(String timeBookmarkId) { pattern.add(StaccatoUtil.createTrackBeatTimeBookmarkElement(timeBookmarkId)); } @Override public void onTrackBeatTimeBookmarkRequested(String timeBookmarkId) { pattern.add(StaccatoUtil.createTrackBeatTimeBookmarkRequestElement(timeBookmarkId)); } @Override public void onTrackBeatTimeRequested(double time) { pattern.add(StaccatoUtil.createTrackBeatTimeRequestElement(time)); } @Override public void onPitchWheelParsed(byte lsb, byte msb) { pattern.add(StaccatoUtil.createPitchWheelElement(lsb, msb)); } @Override public void onChannelPressureParsed(byte pressure) { pattern.add(StaccatoUtil.createChannelPressureElement(pressure)); } @Override public void onPolyphonicPressureParsed(byte key, byte pressure) { pattern.add(StaccatoUtil.createPolyphonicPressureElement(key, pressure)); } @Override public void onSystemExclusiveParsed(byte... bytes) { pattern.add(StaccatoUtil.createSystemExclusiveElement(bytes)); } @Override public void onControllerEventParsed(byte controller, byte value) { pattern.add(StaccatoUtil.createControllerEventElement(controller, value)); } @Override public void onLyricParsed(String lyric) { pattern.add(StaccatoUtil.createLyricElement(lyric)); } @Override public void onMarkerParsed(String marker) { pattern.add(StaccatoUtil.createMarkerElement(marker)); } @Override public void onFunctionParsed(String id, Object message) { pattern.add(StaccatoUtil.createFunctionElement(id, message)); } @Override public void onNoteParsed(Note note) { pattern.add(StaccatoUtil.createNoteElement(note, track)); } @Override public void onChordParsed(Chord chord) { pattern.add(StaccatoUtil.createChordElement(chord)); } }