chordFrets function
Implementation
Set<FretPosition> chordFrets(
Chord chord, FrettedInstrument instrument, int highestFret) {
final positions = new Set<FretPosition>();
final semitoneSet =
chord.pitches.map((pitch) => pitch.semitones % 12).toSet();
eachWithIndex(instrument.stringPitches, (Pitch pitch, int stringIndex) {
for (var fretNumber = 0; fretNumber <= highestFret; fretNumber++) {
final semitones = instrument
.pitchAt(stringIndex: stringIndex, fretNumber: fretNumber)
.semitones;
if (semitoneSet.contains(semitones % 12)) {
final position = new FretPosition(
stringIndex: stringIndex,
fretNumber: fretNumber,
semitones: semitones);
positions.add(position);
}
}
});
return positions;
}