- int fret = unsmob_pitch (scm_pitch)->semitone_pitch ()
- - scm_to_int (scm_list_ref (string_tunings, scm_from_int (tab_string - 1)));
- if (fret < min_fret)
- tab_string += high_string_one ? 1 : -1;
- else
- string_found = true;
+ SCM scm_pitch = event->get_property ("pitch");
+ int min_fret = robust_scm2int (get_property ("minimumFret"), 0);
+ int start = (high_string_one) ? 1 : string_count;
+ int end = (high_string_one) ? string_count+1 : 0;
+
+ int i = start;
+ do
+ {
+ int fret = unsmob_pitch (scm_pitch)->rounded_semitone_pitch ()
+ - scm_to_int (robust_list_ref (i - 1, string_tunings));
+
+ if (fret >= min_fret)
+ {
+ string_number = i;
+ break;
+ }
+ i += high_string_one ? 1 : -1;
+ }
+ while (i != end);