예제 #1
0
        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();
        }
예제 #2
0
        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);
        }