/*
* 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;
}