code: public static Accidental convertToAccidental(String accidental) throws IllegalArgumentException
  	{
  		if (accidental==null) return NONE;
  		else if (accidental.equals("^")
  			|| accidental.equals("#")
  			|| accidental.equals("\u266F")) return SHARP;
  		else if (accidental.equals("_")
  			|| accidental.equals("b")
  			|| accidental.equals("\u266D")) return FLAT;
  		else if (accidental.equals("=")
  			|| accidental.equals("\u266E")) return NATURAL;
  		else if (accidental.equals("^^")
  			|| accidental.equals("##")
  			|| accidental.equals("\u266F\u266F")) return DOUBLE_SHARP;
  		else if (accidental.equals("__")
  			|| accidental.equals("bb")
  			|| accidental.equals("\u266D\u266D")) return DOUBLE_FLAT;
  		else if (accidental.equals("^/")) return HALF_SHARP;
  		else if (accidental.equals("_/")) return HALF_FLAT;
  		else if (accidental.equals("^3/")
  				|| accidental.equals("^3/2")) return SHARP_AND_A_HALF;
  		else if (accidental.equals("_3/")
  				|| accidental.equals("_3/2")) return FLAT_AND_A_HALF;
  		else throw new IllegalArgumentException(accidental + " is not a valid accidental");
  	}
docs: Convert a string to an accidental. Understand ABC ^ and _, chord names #,
  b and unicode char