/// <summary>
        /// Set the key for any DroneSynths registered to this DroneMachine
        /// </summary>
        /// <param name="rootNote">root note of the scale</param>
        /// <param name="scaleMode">scale mode (Dorian, Aeolian, etc)</param>
        public void SetKey(MusicMathUtils.Note rootNote, MusicMathUtils.ScaleMode scaleMode)
        {
            for (int i = 0; i < _synths.Count; i++)
            {
                _synths[i].SetKeyAndScaleMode(rootNote, scaleMode);
            }

            _currentRootNote  = rootNote;
            _currentScaleMode = scaleMode;
        }
Пример #2
0
        public void SetKeyAndScaleMode(MusicMathUtils.Note rootNote, MusicMathUtils.ScaleMode scaleMode)
        {
            _rootNote  = rootNote;
            _scaleMode = scaleMode;

            if (_droneSynthPtr == IntPtr.Zero)
            {
                return;
            }

            double baseFrequency = MusicMathUtils.ScaleIntervalToFrequency(ScaleInterval, _rootNote, _scaleMode, Octave);

            DroneSynth_SetOsc1TargetFrequency(_droneSynthPtr, baseFrequency * MusicMathUtils.SemitonesToPitch(Osc1Pitch), false);
            DroneSynth_SetOsc2TargetFrequency(_droneSynthPtr, baseFrequency * MusicMathUtils.SemitonesToPitch(Osc2Pitch), false);
        }