/* * 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; /** * Represents instrument changes, also known as <i>patch changes</i>. * * @author David Koelle * @version 2.0 */ public final class Instrument implements JFugueElement { private byte instrument; /** * Creates a new Instrument object, with the specified instrument number. * * @param instrument * the number of the instrument to use */ public Instrument(byte instrument) { setInstrument(instrument); } /** * Sets the value of the instrument for this object. * * @param instrument * the number of the instrument to use */ public void setInstrument(byte instrument) { this.instrument = instrument; } /** * Returns the instrument used in this object * * @return the instrument used in this object */ public byte getInstrument() { return instrument; } /** * Returns the name of the instrument used in this object * * @return the name of the instrument used in this object */ public String getInstrumentName() { return INSTRUMENT_NAME[getInstrument()]; } /** * Returns the Music String representing this element and all of its * settings. For an Instrument object, the Music String is <code>I</code> * <i>instrument-number</i> * * @return the Music String for this element */ @Override public String getMusicString() { StringBuffer buffy = new StringBuffer(); buffy.append("I["); buffy.append(INSTRUMENT_NAME[getInstrument()]); buffy.append("]"); return buffy.toString(); } /** * Returns verification string in this format: Instrument: instrument={#} * * @version 4.0 */ @Override public String getVerifyString() { StringBuffer buffy = new StringBuffer(); buffy.append("Instrument: instrument="); buffy.append(getInstrument()); return buffy.toString(); } public static final String[] INSTRUMENT_NAME = new String[] { "Piano", "Bright_Acoustic", "Electric_Grand", "Honkey_Tonk", "Electric_Piano", "Electric_Piano_2", "Harpischord", "Clavinet", "Celesta", "Glockenspiel", "Music_Box", "Vibraphone", "Marimba", "Xylophone", "Tubular_Bells", "Dulcimer", "Drawbar_Organ", "Percussive_Organ", "Rock_Organ", "Church_Organ", "Reed_Organ", "Accordian", "Harmonica", "Tango_Accordian", "Guitar", "Steel_String_Guitar", "Electric_Jazz_Guitar", "Electric_Clean_Guitar", "Electric_muted_Guitar", "Overdriven_Guitar", "Distortion_Guitar", "Guitar_Harmonics", "Acoustic_Bass", "Electric_Bass_Finger", "Electric_Bass_Pick", "Fretless_Bass", "Slap_Bass_1", "Slap_Bass_2", "Synth_Bass_1", "Synth_Bass_2", "Violin", "Viola", "Cello", "Contrabass", "Tremolo_Strings", "Pizzicato_Strings", "Orchestral_Strings", "Timpani", "String_Ensemble_1", "String_Ensemble_2", "Synth_strings_1", "Synth_strings_2", "Choir_Aahs", "Voice_Oohs", "Synth_Voice", "Orchestra_Hit", "Trumpet", "Trombone", "Tuba", "Muted_Trumpet", "French_Horn", "Brass_Section", "Synth_brass_1", "Synth_brass_2", "Soprano_Sax", "Alto_Sax", "Tenor_Sax", "Baritone_Sax", "Oboe", "English_Horn", "Bassoon", "Clarinet", "Piccolo", "Flute", "Recorder", "Pan_Flute", "Blown_Bottle", "Skakuhachi", "Whistle", "Ocarina", "Square", "Sawtooth", "Calliope", "Chiff", "Charang", "Voice", "Fifths", "Basslead", "New_Age", "Warm", "Polysynth", "Choir", "Bowed", "Metallic", "Halo", "Sweep", "Rain", "Soundtrack", "Crystal", "Atmosphere", "Brightness", "Goblins", "Echoes", "Sci-fi", "Sitar", "Banjo", "Shamisen", "Koto", "Kalimba", "Bagpipe", "Fiddle", "Shanai", "Tinkle_Bell", "Agogo", "Steel_Drums", "Woodblock", "Taiko_Drum", "Melodic_Tom", "Synth_Drum", "Reverse_Cymbal", "Guitar_Fret_Noise", "Breath_Noise", "Seashore", "Bird_Tweet", "Telephone_Ring", "Helicopter", "Applause", "Gunshot" }; public static final byte PIANO = 0; public static final byte ACOUSTIC_GRAND = 0; public static final byte BRIGHT_ACOUSTIC = 1; public static final byte ELECTRIC_GRAND = 2; public static final byte HONKEY_TONK = 3; public static final byte ELECTRIC_PIANO = 4; public static final byte ELECTRIC_PIANO_1 = 4; public static final byte ELECTRIC_PIANO_2 = 5; public static final byte HARPISCHORD = 6; public static final byte CLAVINET = 7; public static final byte CELESTA = 8; public static final byte GLOCKENSPIEL = 9; public static final byte MUSIC_BOX = 10; public static final byte VIBRAPHONE = 11; public static final byte MARIMBA = 12; public static final byte XYLOPHONE = 13; public static final byte TUBULAR_BELLS = 14; public static final byte DULCIMER = 15; public static final byte DRAWBAR_ORGAN = 16; public static final byte PERCUSSIVE_ORGAN = 17; public static final byte ROCK_ORGAN = 18; public static final byte CHURCH_ORGAN = 19; public static final byte REED_ORGAN = 20; public static final byte ACCORDIAN = 21; public static final byte HARMONICA = 22; public static final byte TANGO_ACCORDIAN = 23; public static final byte GUITAR = 24; public static final byte NYLON_STRING_GUITAR = 24; public static final byte STEEL_STRING_GUITAR = 25; public static final byte ELECTRIC_JAZZ_GUITAR = 26; public static final byte ELECTRIC_CLEAN_GUITAR = 27; public static final byte ELECTRIC_MUTED_GUITAR = 28; public static final byte OVERDRIVEN_GUITAR = 29; public static final byte DISTORTION_GUITAR = 30; public static final byte GUITAR_HARMONICS = 31; public static final byte ACOUSTIC_BASS = 32; public static final byte ELECTRIC_BASS_FINGER = 33; public static final byte ELECTRIC_BASS_PICK = 34; public static final byte FRETLESS_BASS = 35; public static final byte SLAP_BASS_1 = 36; public static final byte SLAP_BASS_2 = 37; public static final byte SYNTH_BASS_1 = 38; public static final byte SYNTH_BASS_2 = 39; public static final byte VIOLIN = 40; public static final byte VIOLA = 41; public static final byte CELLO = 42; public static final byte CONTRABASS = 43; public static final byte TREMOLO_STRINGS = 44; public static final byte PIZZICATO_STRINGS = 45; public static final byte ORCHESTRAL_STRINGS = 46; public static final byte TIMPANI = 47; public static final byte STRING_ENSEMBLE_1 = 48; public static final byte STRING_ENSEMBLE_2 = 49; public static final byte SYNTH_STRINGS_1 = 50; public static final byte SYNTH_STRINGS_2 = 51; public static final byte CHOIR_AAHS = 52; public static final byte VOICE_OOHS = 53; public static final byte SYNTH_VOICE = 54; public static final byte ORCHESTRA_HIT = 55; public static final byte TRUMPET = 56; public static final byte TROMBONE = 57; public static final byte TUBA = 58; public static final byte MUTED_TRUMPET = 59; public static final byte FRENCH_HORN = 60; public static final byte BRASS_SECTION = 61; public static final byte SYNTHBRASS_1 = 62; public static final byte SYNTHBRASS_2 = 63; public static final byte SOPRANO_SAX = 64; public static final byte ALTO_SAX = 65; public static final byte TENOR_SAX = 66; public static final byte BARITONE_SAX = 67; public static final byte OBOE = 68; public static final byte ENGLISH_HORN = 69; public static final byte BASSOON = 70; public static final byte CLARINET = 71; public static final byte PICCOLO = 72; public static final byte FLUTE = 73; public static final byte RECORDER = 74; public static final byte PAN_FLUTE = 75; public static final byte BLOWN_BOTTLE = 76; public static final byte SKAKUHACHI = 77; public static final byte WHISTLE = 78; public static final byte OCARINA = 79; public static final byte LEAD_SQUARE = 80; public static final byte SQUARE = 80; public static final byte LEAD_SAWTOOTH = 81; public static final byte SAWTOOTH = 81; public static final byte LEAD_CALLIOPE = 82; public static final byte CALLIOPE = 82; public static final byte LEAD_CHIFF = 83; public static final byte CHIFF = 83; public static final byte LEAD_CHARANG = 84; public static final byte CHARANG = 84; public static final byte LEAD_VOICE = 85; public static final byte VOICE = 85; public static final byte LEAD_FIFTHS = 86; public static final byte FIFTHS = 86; public static final byte LEAD_BASSLEAD = 87; public static final byte BASSLEAD = 87; public static final byte PAD_NEW_AGE = 88; public static final byte NEW_AGE = 88; public static final byte PAD_WARM = 89; public static final byte WARM = 89; public static final byte PAD_POLYSYNTH = 90; public static final byte POLYSYNTH = 90; public static final byte PAD_CHOIR = 91; public static final byte CHOIR = 91; public static final byte PAD_BOWED = 92; public static final byte BOWED = 92; public static final byte PAD_METALLIC = 93; public static final byte METALLIC = 93; public static final byte PAD_HALO = 94; public static final byte HALO = 94; public static final byte PAD_SWEEP = 95; public static final byte SWEEP = 95; public static final byte FX_RAIN = 96; public static final byte RAIN = 96; public static final byte FX_SOUNDTRACK = 97; public static final byte SOUNDTRACK = 97; public static final byte FX_CRYSTAL = 98; public static final byte CRYSTAL = 98; public static final byte FX_ATMOSPHERE = 99; public static final byte ATMOSPHERE = 99; public static final byte FX_BRIGHTNESS = 100; public static final byte BRIGHTNESS = 100; public static final byte FX_GOBLINS = 101; public static final byte GOBLINS = 101; public static final byte FX_ECHOES = 102; public static final byte ECHOES = 102; public static final byte FX_SCI = 103; public static final byte SCI = 103; public static final byte SITAR = 104; public static final byte BANJO = 105; public static final byte SHAMISEN = 106; public static final byte KOTO = 107; public static final byte KALIMBA = 108; public static final byte BAGPIPE = 109; public static final byte FIDDLE = 110; public static final byte SHANAI = 111; public static final byte TINKLE_BELL = 112; public static final byte AGOGO = 113; public static final byte STEEL_DRUMS = 114; public static final byte WOODBLOCK = 115; public static final byte TAIKO_DRUM = 116; public static final byte MELODIC_TOM = 117; public static final byte SYNTH_DRUM = 118; public static final byte REVERSE_CYMBAL = 119; public static final byte GUITAR_FRET_NOISE = 120; public static final byte BREATH_NOISE = 121; public static final byte SEASHORE = 122; public static final byte BIRD_TWEET = 123; public static final byte TELEPHONE_RING = 124; public static final byte HELICOPTER = 125; public static final byte APPLAUSE = 126; public static final byte GUNSHOT = 127; }