public void ApplySelectedNotesToFretboard() { if (SelectedNotes == null || !SelectedNotes.Any()) { return; } //TODO: This should happen when you're building the fretboard, the strings are being constructed... and then reiterated over... the first step is wasteful foreach (InstrumentString guitarString in Fretboard.InstrumentStrings) { foreach (InstrumentNote fretboardNote in guitarString.Notes) { var currentNote = SelectedNotes.SingleOrDefault(s => s.Equals(fretboardNote)); if (currentNote != null) { fretboardNote.Selected = currentNote.Selected; } if (SelectedScale != null && SelectedScale.Scale.NoteSet.Contains(fretboardNote.Note)) { fretboardNote.InSelectedScale = true; } } } }
public void ProcessNotesAndScale(string selectedScale, IEnumerable <string> selectedNotes) { UpdateSelectedNotes(selectedNotes); if (SelectedNotes.Count > 1) { Scales = _dictionaryService.FindScales(SelectedNotes.Select(a => a.Note)).ToList(); } else { if (Scales != null && Scales.Any(a => a.Selected)) { Scales.SingleOrDefault(a => a.Selected).Selected = false; } Scales.Clear(); ResetNotesInScale(); SelectedScale = null; if (!selectedNotes.Any()) { ResetSelectedNotes(); } } ApplySelectedScales(selectedScale); ApplySelectedNotesToFretboard(); }
bool Filter(Note x) => SelectedTags.All(t => x.Tags.Contains(t)) && (SelectedNotes.Any() ? SelectedNotes.Any(n => n == x.Name) : true);