properly handle integer steps in plugin controls
[ardour.git] / libs / evoral / src / midi_util.cpp
index 4076337137063904c263f7146896525b21b6cd8e..be7010ce6e0ccf1e0417b10cdb7690cc420284ec 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Evoral.
- * Copyright (C) 2008 Dave Robillard <http://drobilla.net>
+ * Copyright (C) 2008 David Robillard <http://drobilla.net>
  * Copyright (C) 2009 Paul Davis
  *
  * Evoral is free software; you can redistribute it and/or modify it under the
@@ -29,24 +29,25 @@ midi_note_name (uint8_t val)
        }
 
        static const char* notes[] = {
-               "c",
-               "c#",
-               "d",
-               "d#",
-               "e",
-               "f",
-               "f#",
-               "g",
-               "a",
-               "a#",
-               "b",
-               "b#"
+               "C",
+               "C#",
+               "D",
+               "D#",
+               "E",
+               "F",
+               "F#",
+               "G",
+               "G#",
+               "A",
+               "A#",
+               "B"
        };
 
-       int octave = val/12;
+       /* MIDI note 0 is in octave -1 (in scientific pitch notation) */
+       int octave = val / 12 - 1;
        static char buf[8];
 
-       val -= octave*12;
+       val = val % 12;
 
        snprintf (buf, sizeof (buf), "%s%d", notes[val], octave);
        return buf;