public IEnumerable <IEnumerable <Note> > GetProgressionChords(Note root) { var n = new Notes(); var scale = n.EnumerateNotes(root, Scale).ToArray(); for (var i = 0; i < ScaleDegrees.Length; i++) { var chordRoot = scale[ScaleDegrees[i] - 1]; yield return(n.EnumerateNotes(chordRoot, Chords[i].Pattern)); } }
public KeyboardOctave(int octaveNumber) { var n = new Notes(); OctaveNumber = octaveNumber; var minNoteNumber = (octaveNumber + 1) * 12; var notes = n.EnumerateNotes("C", Scales.Chromatic).ToArray(); Keys = Enumerable.Range(minNoteNumber, 12).Select(a => { var not = notes[a - minNoteNumber]; return(new MidiKey(a, not, this)); }).ToArray(); NoteKeyMap = Keys.ToDictionary(a => a.Note); }