- char s[2] = "a";
- s[0] = (pit->notename_i_ + 2)%7 + 'a';
-
- s[0] = toupper (s[0]);
- note_p->set_grob_property ("note-character", ly_str02scm (s));
+ SCM scm_tonic = get_property ("tonic");
+ Pitch tonic (0, 0, 0);
+ if (unsmob_pitch (scm_tonic))
+ tonic = *unsmob_pitch (scm_tonic);
+
+ unsigned int delta = (pit->get_notename () - tonic.get_notename () + 7) % 7;
+
+ SCM style = SCM_EOL;
+ if (scm_c_vector_length (shape_vector) > delta
+ && scm_is_symbol (scm_vector_ref (shape_vector, scm_from_int (delta))))
+ style = scm_vector_ref (shape_vector, scm_from_int (delta));
+ if (scm_is_symbol (style))
+ note->set_property ("style", style);