// Update is called once per frame void Update() { if (positionHistory.Count >= historySize) { positionAverage = Vector3.LerpUnclamped(positionHistory[0], positionAverage, ((float)positionHistory.Count) / (positionHistory.Count - 1)); positionHistory.RemoveAt(0); } if (velocityHistory.Count >= historySize) { velocityAverage = Mathf.LerpUnclamped(velocityHistory[0], velocityAverage, ((float)velocityHistory.Count) / (velocityHistory.Count - 1)); velocityHistory.RemoveAt(0); } transform.position = follow.position; Vector3 position = transform.position; positionHistory.Add(position); positionAverage = Vector3.LerpUnclamped(positionHistory[positionHistory.Count - 1], positionAverage, ((float)positionHistory.Count - 1) / positionHistory.Count); if (follow.localScale == untrackedJointScale) { velocityHistory.Add(0); velocityAverage = Mathf.LerpUnclamped(velocityHistory[velocityHistory.Count - 1], velocityAverage, ((float)velocityHistory.Count - 1) / velocityHistory.Count); } else { if (positionHistory.Count > 1) { float velocity = Vector3.Magnitude(position - positionHistory[positionHistory.Count - 2]) / Time.deltaTime; if (velocity < velocityLimit) //check if the velocity is a reasonable value { velocityHistory.Add(velocity); velocityAverage = Mathf.LerpUnclamped(velocityHistory[velocityHistory.Count - 1], velocityAverage, ((float)velocityHistory.Count - 1) / velocityHistory.Count); } } } synth.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Gain, Mathf.Lerp(gainMin, gainMax, velocityAverage / velocityMax)); synth.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Freqcutoff, Mathf.Lerp(frequencyMin, frequencyMax, velocityAverage / velocityMax)); synth.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Oscnote, Mathf.Lerp(noteMin, noteMax, positionAverage.y / heightMax)); synth.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodfreq, Mathf.Lerp(ringFreqMin, ringFreqMax, positionAverage.z / heightMax)); synth.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodmultiplier, Mathf.Lerp(ringMultMin, ringMultMax, velocityAverage / velocityMax)); }
public override void OnInspectorGUI() { bool isEnabled = _dsp.IsInstantiated(); if (!isEnabled) { EditorGUILayout.LabelField("Press Play!", EditorStyles.centeredGreyMiniLabel); } GUILayout.EndVertical(); // parameters GUI.enabled = true; GUILayout.BeginVertical(); EditorGUILayout.Space(); EditorGUI.indentLevel++; // freqCutoff GUILayout.BeginHorizontal(); float freqCutoff = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Freqcutoff); float newFreqcutoff = EditorGUILayout.Slider("freqCutoff", freqCutoff, 0.0f, 20000.0f); if (freqCutoff != newFreqcutoff) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Freqcutoff, newFreqcutoff); } GUILayout.EndHorizontal(); // gain GUILayout.BeginHorizontal(); float gain = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Gain); float newGain = EditorGUILayout.Slider("gain", gain, 0.0f, 1.0f); if (gain != newGain) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Gain, newGain); } GUILayout.EndHorizontal(); // oscNote GUILayout.BeginHorizontal(); float oscNote = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Oscnote); float newOscnote = EditorGUILayout.Slider("oscNote", oscNote, 0.0f, 127.0f); if (oscNote != newOscnote) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Oscnote, newOscnote); } GUILayout.EndHorizontal(); // ringModFreq GUILayout.BeginHorizontal(); float ringModFreq = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodfreq); float newRingmodfreq = EditorGUILayout.Slider("ringModFreq", ringModFreq, 0.0f, 20000.0f); if (ringModFreq != newRingmodfreq) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodfreq, newRingmodfreq); } GUILayout.EndHorizontal(); // ringModMultiplier GUILayout.BeginHorizontal(); float ringModMultiplier = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodmultiplier); float newRingmodmultiplier = EditorGUILayout.Slider("ringModMultiplier", ringModMultiplier, 0.0f, 1.0f); if (ringModMultiplier != newRingmodmultiplier) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Ringmodmultiplier, newRingmodmultiplier); } GUILayout.EndHorizontal(); // sawMult GUILayout.BeginHorizontal(); float sawMult = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sawmult); float newSawmult = EditorGUILayout.Slider("sawMult", sawMult, 0.0f, 1.0f); if (sawMult != newSawmult) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sawmult, newSawmult); } GUILayout.EndHorizontal(); // sawOffset GUILayout.BeginHorizontal(); float sawOffset = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sawoffset); float newSawoffset = EditorGUILayout.Slider("sawOffset", sawOffset, -24.0f, 24.0f); if (sawOffset != newSawoffset) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sawoffset, newSawoffset); } GUILayout.EndHorizontal(); // sinMult GUILayout.BeginHorizontal(); float sinMult = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sinmult); float newSinmult = EditorGUILayout.Slider("sinMult", sinMult, 0.0f, 1.0f); if (sinMult != newSinmult) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sinmult, newSinmult); } GUILayout.EndHorizontal(); // sinOffset GUILayout.BeginHorizontal(); float sinOffset = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sinoffset); float newSinoffset = EditorGUILayout.Slider("sinOffset", sinOffset, -24.0f, 24.0f); if (sinOffset != newSinoffset) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sinoffset, newSinoffset); } GUILayout.EndHorizontal(); // sqrMult GUILayout.BeginHorizontal(); float sqrMult = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sqrmult); float newSqrmult = EditorGUILayout.Slider("sqrMult", sqrMult, 0.0f, 1.0f); if (sqrMult != newSqrmult) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sqrmult, newSqrmult); } GUILayout.EndHorizontal(); // sqrOffset GUILayout.BeginHorizontal(); float sqrOffset = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sqroffset); float newSqroffset = EditorGUILayout.Slider("sqrOffset", sqrOffset, -24.0f, 24.0f); if (sqrOffset != newSqroffset) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Sqroffset, newSqroffset); } GUILayout.EndHorizontal(); // triMult GUILayout.BeginHorizontal(); float triMult = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Trimult); float newTrimult = EditorGUILayout.Slider("triMult", triMult, 0.0f, 1.0f); if (triMult != newTrimult) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Trimult, newTrimult); } GUILayout.EndHorizontal(); // triOffset GUILayout.BeginHorizontal(); float triOffset = _dsp.GetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Trioffset); float newTrioffset = EditorGUILayout.Slider("triOffset", triOffset, -24.0f, 24.0f); if (triOffset != newTrioffset) { _dsp.SetFloatParameter(Hv_quadSynth_AudioLib.Parameter.Trioffset, newTrioffset); } GUILayout.EndHorizontal(); EditorGUI.indentLevel--; }