/* * JFugue - API for Music Programming * Copyright (C) 2003-2008 David Koelle * * http://www.jfugue.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ package org.jfugue; /** * Handles JFugue parsing exceptions. * * @author David Koelle * @version 2.0 */ @SuppressWarnings("serial") public class JFugueException extends RuntimeException { /** * Create a new JFugueException. * * @param exc * The string representing the exception. */ public JFugueException(String exc) { super(exc); } /** * Create a new JFugueException. * * @param exc * The string representing the exception. This should contain the * * character, so 'param' can be placed into the string. * @param token * The token or dictionary entry in which the exception has been * discovered */ public JFugueException(String exc, String token) { super(exc + " Found while parsing the following token, word, or definition: " + token); } /** * Create a new JFugueException. * * @param exc * The string representing the exception. This should contain the * * character, so 'param' can be placed into the string. * @param param * The direct object of the exception, the thing that has had * some problem with it * @param token * The token or dictionary entry in which the exception has been * discovered */ public JFugueException(String exc, String param, String token) { super(exc.substring(0, exc.indexOf('*')) + param + exc.substring(exc.indexOf('*') + 1, exc.length()) + " Found while parsing the following token, word, or definition: " + token); } /** The Voice command, V<i>voice</i>, is out of range. */ public static final String VOICE_EXC = "Voice * is not a number, or is not in the range 0 - 127."; /** The Tempo command, T<i>tempo</i>, is out of range. */ public static final String TEMPO_EXC = "Tempo * is not a number"; /** The KeySignature command, K<i>keysig</i>, is poorly formed. */ public static final String KEYSIG_EXC = " * is not a proper key signature; should be like KC#maj or KAbmin."; /** The Layer command, L<i>layer</i>, is out of range. */ public static final String LAYER_EXC = "Layer * is not a number, or is not in the range 0 - 127."; /** * The Instrument command, I<i>instrument</i>, is not a valid instrument. */ public static final String INSTRUMENT_EXC = "Instrument * is not a valid instrument name, or is not in the range 0 - 127."; /** * The index of the Controller command, X<i>index</i>=<i>value</i>, is not a * valid controller. */ public static final String CONTROL_EXC = "Control * is not a valid controller name, or is not in the range 0 - 127."; /** The Note command does not specify a valid percussion sound. */ public static final String NOTE_EXC = "Note * is not a valid drum sound name, or is not in the range 0 - 127."; /** The Octave specifier within the Note command is out of range. */ public static final String OCTAVE_EXC = "Octave * is not a number, or is not in the range 0 - 10."; /** The Octave value calculated by the parser is out of range. */ public static final String NOTE_OCTAVE_EXC = "The note value *, calculated by computing (octave*12)+noteValue, is not in the range 0 - 127."; /** The Duration part of the MusicString has an error. */ public static final String NOTE_DURATION_EXC = "The Duration part of the MusicString has an error."; /** The Velocity character is not known. */ public static final String NOTE_VELOCITY_EXC = "The velocity character in * is unknown."; /** The root note for a chord inversion has an error. */ public static final String INVERSION_EXC = "The root given for a chord inversion is less than the initial chord root, or greater than the range of the chord."; /** The parser encountered spaces in a single token. */ public static final String PARSER_SPACES_EXC = "The token * sent to Parser.parse() contains spaces. A token is one unit of musical data, and should not contain a space."; /** The parser cannot find a definition for the given word. */ public static final String WORD_NOT_DEFINED_EXC = "The word * has no definition. Check the spelling, or define the word before using it. See the JFugue Instruction Manual for information on defining words."; /** The Controller command, X<i>index</i>=<i>value</i>, is malformed. */ public static final String CONTROL_FORMAT_EXC = "The controller token * is missing an equals sign. See the JFugue Instruction Manual for information on using the Controller token."; /** The parser expected a byte. */ public static final String EXPECTED_BYTE = "The JFugue Parser expected a byte, but encountered the value * which is not a byte."; /** The parser expected a long. */ public static final String EXPECTED_LONG = "The JFugue Parser expected a long, but encountered the value * which is not a long."; /** The parser expected an int. */ public static final String EXPECTED_INT = "The JFugue Parser expected an int, but encountered the value * which is not an int."; /** The parser expected a double. */ public static final String EXPECTED_DOUBLE = "The JFugue Parser expected a double, but encountered the value * which is not a double."; /** The MIDI System cannot instantiate a sequencer. */ public static final String SEQUENCER_DEVICE_NOT_SUPPORTED_WITH_EXCEPTION = "The MIDI System cannot instantiate a sequencer. Although this error is reported by JFugue, the problem is not with JFugue itself. Find resources for using MIDI on your specific system. The exception message from MidiSystem.getSequencer() is: "; /** The MIDI System cannot instantiate a sequencer. */ public static final String SEQUENCER_DEVICE_NOT_SUPPORTED = "The MIDI System cannot instantiate a sequencer. Although this error is reported by JFugue, the problem is not with JFugue itself. Find resources for using MIDI on your specific system."; /** Player.play(String) plays a music string, not a filename */ public static final String PLAYS_STRING_NOT_FILE_EXC = "play(String) plays a music string, not a filename. Try using play(File)."; /** Error playing music */ public static final String ERROR_PLAYING_MUSIC = "Error playing music: "; /** Error while sleep */ public static final String ERROR_SLEEP = "Error while sleeping"; /** Error resolving MidiDevice with Intelligent Resolver */ public static final String INTELLIGENT_RESOLVER_FAILED = "IntelligentDeviceResolver not intelligent enough. Be explicit about the MidiDevice."; /** Verification exception */ public static final String VERIFICATION_EXCEPTION = "The result of parsing, '*', was not expected."; /** General error */ public static final String GENERAL_ERROR = "General error: "; /** * Error for MusicXMLParser (TODO: Should this reside in MusicXMLParser?) */ public static final String BEAT_UNIT_MUST_BE_QUARTER = "MusicXML tag \"beat-unit\" must be set to \"quarter\""; }