//----------------------------------------------------------------------------//
// //
// M i d i A b s t r a c t i o n s //
// //
//----------------------------------------------------------------------------//
// <editor-fold defaultstate="collapsed" desc="hdr"> //
// Copyright © Hervé Bitteur and others 2000-2013. All rights reserved. //
// This software is released under the GNU General Public License. //
// Goto http://kenai.com/projects/audiveris to report bugs or suggestions. //
//----------------------------------------------------------------------------//
// </editor-fold>
package omr.score.midi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
/**
* Class {@code MidiAbstractions} handles various MIDI abstractions
*
* @author Hervé Bitteur
*/
public class MidiAbstractions
{
//~ Static fields/initializers ---------------------------------------------
/** Usual logger utility */
private static final Logger logger = LoggerFactory.getLogger(
MidiAbstractions.class);
/** The extension used for Midi output files: {@value} */
public static final String MIDI_EXTENSION = ".mid";
/** Definition of all Midi instruments in proper order */
private static final String[] instrumentNames = {
/** 1 */
"Acoustic Grand Piano",
/** 2 */
"Bright Acoustic Piano",
/** 3 */
"Electric Grand Piano",
/** 4 */
"Honky-tonk Piano",
/** 5 */
"Electric Piano 1",
/** 6 */
"Electric Piano 2",
/** 7 */
"Harpsichord",
/** 8 */
"Clavi",
/** 9 */
"Celesta",
/** 10 */
"Glockenspiel",
/** 11 */
"Music Box",
/** 12 */
"Vibraphone",
/** 13 */
"Marimba",
/** 14 */
"Xylophone",
/** 15 */
"Tubular Bells",
/** 16 */
"Dulcimer",
/** 17 */
"Drawbar Organ",
/** 18 */
"Percussive Organ",
/** 19 */
"Rock Organ",
/** 20 */
"Church Organ",
/** 21 */
"Reed Organ",
/** 22 */
"Accordion",
/** 23 */
"Harmonica",
/** 24 */
"Tango Accordion",
/** 25 */
"Acoustic Guitar (nylon)",
/** 26 */
"Acoustic Guitar (steel)",
/** 27 */
"Electric Guitar (jazz)",
/** 28 */
"Electric Guitar (clean)",
/** 29 */
"Electric Guitar (muted)",
/** 30 */
"Overdriven Guitar",
/** 31 */
"Distortion Guitar",
/** 32 */
"Guitar harmonics",
/** 33 */
"Acoustic Bass",
/** 34 */
"Electric Bass (finger)",
/** 35 */
"Electric Bass (pick)",
/** 36 */
"Fretless Bass",
/** 37 */
"Slap Bass 1",
/** 38 */
"Slap Bass 2",
/** 39 */
"Synth Bass 1",
/** 40 */
"Synth Bass 2",
/** 41 */
"Violin",
/** 42 */
"Viola",
/** 43 */
"Cello",
/** 44 */
"Contrabass",
/** 45 */
"Tremolo Strings",
/** 46 */
"Pizzicato Strings",
/** 47 */
"Orchestral Harp",
/** 48 */
"Timpani",
/** 49 */
"String Ensemble 1",
/** 50 */
"String Ensemble 2",
/** 51 */
"SynthStrings 1",
/** 52 */
"SynthStrings 2",
/** 53 */
"Choir Aahs",
/** 54 */
"Voice Oohs",
/** 55 */
"Synth Voice",
/** 56 */
"Orchestra Hit",
/** 57 */
"Trumpet",
/** 58 */
"Trombone",
/** 59 */
"Tuba",
/** 60 */
"Muted Trumpet",
/** 61 */
"French Horn",
/** 62 */
"Brass Section",
/** 63 */
"SynthBrass 1",
/** 64 */
"SynthBrass 2",
/** 65 */
"Soprano Sax",
/** 66 */
"Alto Sax",
/** 67 */
"Tenor Sax",
/** 68 */
"Baritone Sax",
/** 69 */
"Oboe",
/** 70 */
"English Horn",
/** 71 */
"Bassoon",
/** 72 */
"Clarinet",
/** 73 */
"Piccolo",
/** 74 */
"Flute",
/** 75 */
"Recorder",
/** 76 */
"Pan Flute",
/** 77 */
"Blown Bottle",
/** 78 */
"Shakuhachi",
/** 79 */
"Whistle",
/** 80 */
"Ocarina",
/** 81 */
"Lead 1 (square)",
/** 82 */
"Lead 2 (sawtooth)",
/** 83 */
"Lead 3 (calliope)",
/** 84 */
"Lead 4 (chiff)",
/** 85 */
"Lead 5 (charang)",
/** 86 */
"Lead 6 (voice)",
/** 87 */
"Lead 7 (fifths)",
/** 88 */
"Lead 8 (bass + lead)",
/** 89 */
"Pad 1 (new age)",
/** 90 */
"Pad 2 (warm)",
/** 91 */
"Pad 3 (polysynth)",
/** 92 */
"Pad 4 (choir)",
/** 93 */
"Pad 5 (bowed)",
/** 94 */
"Pad 6 (metallic)",
/** 95 */
"Pad 7 (halo)",
/** 96 */
"Pad 8 (sweep)",
/** 97 */
"FX 1 (rain)",
/** 98 */
"FX 2 (soundtrack)",
/** 99 */
"FX 3 (crystal)",
/** 100 */
"FX 4 (atmosphere)",
/** 101 */
"FX 5 (brightness)",
/** 102 */
"FX 6 (goblins)",
/** 103 */
"FX 7 (echoes)",
/** 104 */
"FX 8 (sci-fi)",
/** 105 */
"Sitar",
/** 106 */
"Banjo",
/** 107 */
"Shamisen",
/** 108 */
"Koto",
/** 109 */
"Kalimba",
/** 110 */
"Bag pipe",
/** 111 */
"Fiddle",
/** 112 */
"Shanai",
/** 113 */
"Tinkle Bell",
/** 114 */
"Agogo",
/** 115 */
"Steel Drums",
/** 116 */
"Woodblock",
/** 117 */
"Taiko Drum",
/** 118 */
"Melodic Tom",
/** 119 */
"Synth Drum",
/** 120 */
"Reverse Cymbal",
/** 121 */
"Guitar Fret Noise",
/** 122 */
"Breath Noise",
/** 123 */
"Seashore",
/** 124 */
"Bird Tweet",
/** 125 */
"Telephone Ring",
/** 126 */
"Helicopter",
/** 127 */
"Applause",
/** 128 */
"Gunshot"
};
//~ Constructors -----------------------------------------------------------
//------------------//
// MidiAbstractions //
//------------------//
/**
* Not meant to be instantiated
*/
private MidiAbstractions ()
{
}
//~ Methods ----------------------------------------------------------------
//----------------//
// getProgramName //
//----------------//
/**
* Report the instrument name for a given program id
*
* @param id the given program id
* @return the corresponding instrument name
*/
public static String getProgramName (int id)
{
try {
return instrumentNames[id - 1];
} catch (Exception ex) {
logger.error("Illegal MIDI program id: " + id, ex);
return "";
}
}
//-----------------//
// getProgramNames //
//-----------------//
/**
* Report the ordered table of midi instruments
*
* @return (a copy of) the table of Midi instruments
*/
public static String[] getProgramNames ()
{
return Arrays.copyOf(instrumentNames, instrumentNames.length);
}
}