public float GetValueWithOffset(float offset, bool clamped) { float value = Wave.Evaluate(m_Waveform, m_PositionInCycle + m_Phase + offset); if (clamped) { return(Mathf.Clamp01(value)); } return(value); }
public float Evaluate(float t) { return(_vol * (_w1.Evaluate(t) + _w2.Evaluate(t))); }
/* * This builds our waveform */ void OnAudioFilterRead(float[] data, int channels) { // #if UNITY_EDITOR // long started = System.DateTime.Now.Ticks; // #endif if (playing == true) { float position = 0f; float pass = 0f; float counter = 0f; bool d_enable = Configie.WibbleWobble.Enabled; int limit = 0; int length = data.Length; float len = (float)length - 2; float max_count = len / channels; if (d_enable == true) { limit = ((data.Length / 2) * Configie.WibbleWobble.Time.Value) / samples_per_second; if (passes >= limit) { passes = 0; } } rise_lerp_goal = CalculateAttack(); for (int i = 0; i < length; i += channels) { pass = counter++ / max_count; if (d_enable == true) { position = passes++ / limit; } float rise = SmoothFloatTransition( previous_rise, rise_lerp_goal, pass); DoFastLerps(); data[i] = wave.Evaluate(note, octave, rise, position, pass, Configie); if (channels == 2) { data[i + 1] = data[i]; } } DoSlowLerps(); previous_rise = rise_lerp_goal; if (previous_rise == 0f) { playing = false; } } // #if UNITY_EDITOR // long finish = System.DateTime.Now.Ticks; // // Debug.Log("total wave generation time " + ((finish - started) * 0.0001f)); // #endif }