package com.teotigraphix.caustic.sound.midi; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; /** * Enum containing the basic note information at octave 0. * * @author gmuller */ public enum NoteReference { /** * Base Number 0, Note Name "C" */ C(0, "C"), /** * Base Number 1, Note Name "C#" */ Csharp(1, "C#"), /** * Base Number 1, Note Name "Db" */ Dflat(1, "Db"), /** * Base Number 2, Note Name "D" */ D(2, "D"), /** * Base Number 3, Note Name "D#" */ Dsharp(3, "D#"), /** * Base Number 3, Note Name "Eb" */ Eflat(3, "Eb"), /** * Base Number 4, Note Name "E" */ E(4, "E"), /** * Base Number 5, Note Name "F" */ F(5, "F"), /** * Base Number 6, Note Name "F#" */ Fsharp(6, "F#"), /** * Base Number 6, Note Name "Gb" */ Gflat(6, "Gb"), /** * Base Number 7, Note Name "G" */ G(7, "G"), /** * Base Number 8, Note Name "G#" */ Gsharp(8, "G#"), /** * Base Number 8, Note Name "Ab" */ Aflat(8, "Ab"), /** * Base Number 9, Note Name "A" */ A(9, "A"), /** * Base Number 10, Note Name "A#" */ Asharp(10, "A#"), /** * Base Number 10, Note Name "Bb" */ Bflat(10, "Bb"), /** * Base Number 11, Note Name "B" */ B(11, "B"); private static final Map<String, NoteReference> lookup = new HashMap<String, NoteReference>(); static { for (NoteReference s : EnumSet.allOf(NoteReference.class)) lookup.put(s.getBaseName(), s); } private final int baseNumber; private final String baseNoteName; NoteReference(int baseNumber, String baseNoteName) { this.baseNumber = baseNumber; this.baseNoteName = baseNoteName; } /** * This method gets the base note number of the note at octave 0. As an * example G has a base note number of 7. * * @return the integer of the note at octave 0 */ public int getBaseNumber() { return baseNumber; } String getBaseName() { return baseNoteName; } /** * Reverse lookup of a NoteReference based on the abbreviation passed in. * For example, passing in the String "C#" will return the Csharp * NoteReference * * @param baseName * @return The NoteReference of the abbreviation passed in */ public static NoteReference get(String baseName) { return lookup.get(baseName); } }