Пример #1
0
        public MinorKey(ToneClass Tone, Scale Scale)
        {
            this.Scale = Scale;
            SortedSet <int> tonesInKey = new SortedSet <int>();
            int             toneIndex  = Scale.ToneIndex(Tone);

            TonePattern.ForEach((index) => tonesInKey.Add((toneIndex + index) % 12));
            for (int i = 0; i < TonePattern.Count; i++)
            {
                Map[Scale.ToneAtIndex(BaseTonePattern[i])] = Scale.ToneAtIndex(tonesInKey.Min);
                tonesInKey.Remove(tonesInKey.Min);
            }
            Scale.ToneAtIndex(toneIndex + 2);
        }
Пример #2
0
        public ISingleSound RaiseSemitones(int Semitones, Scale scale)
        {
            int octave       = Octave;
            int toneIndex    = scale.ToneIndex(ToneClass);
            int newToneIndex = toneIndex + Semitones;

            while (newToneIndex < 0)
            {
                newToneIndex += scale.ToneCount();
                octave--;
            }
            while (newToneIndex > scale.ToneCount())
            {
                newToneIndex -= scale.ToneCount();
                octave++;
            }
            return(new Tone(scale.ToneAtIndex(newToneIndex), octave));
        }