public ScaleBase(string name, Note rootNote, ScaleFamily scaleFamily, ScaleFamilyMode mode) { Name = name; RootNote = rootNote; ScaleFamily = scaleFamily; Mode = mode; ChromaticNotes = GetChromaticNotes(); Notes = ChromaticNotes.Where(x => x.IsPresent).ToArray(); }
public bool[] GetModeIntervals(ScaleFamilyMode mode) { var modeIntervals = new bool[Intervals.Length]; Intervals.CopyTo(modeIntervals, 0); for (int i = 0; i < mode.FirstDegree; i++) { var first = modeIntervals[0]; for (int j = 0; j < modeIntervals.Length - 1; j++) { modeIntervals[j] = modeIntervals[j + 1]; } modeIntervals[modeIntervals.Length - 1] = first; } return(modeIntervals); }