/// <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; }
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); }