- // Hmm, can't these be handled/constructed by Key_change_req?
- if (no_of_acc < 0)
- {
- int accidental = 6 ; // First accidental: bes
- for ( ; no_of_acc < 0 ; no_of_acc++ )
- {
- Musical_pitch m;
- m.accidental_i_ = -1;
- m.notename_i_ = accidental;
- if (key_.multi_octave_b_)
- key_.set (m);
- else
- key_.set (m.notename_i_, m.accidental_i_);
- accidental_idx_arr_.push (m);
-
- accidental = (accidental + 3) % 7 ;
- }
- }
- else
- {
- int accidental = 3 ; // First accidental: fis
- for ( ; no_of_acc > 0 ; no_of_acc-- )
- {
- Musical_pitch m;
- m.accidental_i_ = 1;
- m.notename_i_ = accidental;
- if (key_.multi_octave_b_)
- key_.set (m);
- else
- key_.set (m.notename_i_, m.accidental_i_);
- accidental_idx_arr_.push (m);
-
- accidental = (accidental + 4) % 7 ;
- }
- }
- }
- else // Special key
+void
+Key_engraver::read_event (Music const *r)
+{
+ SCM p = r->get_property ("pitch-alist");
+ if (!scm_is_pair (p))
+ return;
+
+ SCM n = scm_list_copy (p);
+ SCM accs = SCM_EOL;
+ for (SCM s = get_property ("keyAlterationOrder");
+ scm_is_pair (s); s = scm_cdr (s))