Пример #1
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));
        }