#include "LightControl.hpp" #include LightControl::LightControl() { setState(); } void LightControl::step() { m_currentValue = m_currentState->step(); } float LightControl::lightValue()const { return m_currentValue; } float LightControl::StateOff::step() { return 0.f; } float LightControl::StateOn::step() { return 1.f; } LightControl::StateBlink::StateBlink(float blinkTime, bool initialLightState) : m_blinkTime(blinkTime), m_timeCounter(0.f), m_lightState(initialLightState) { } float LightControl::StateBlink::step() { auto const timeStep = 1.f / rack::engineGetSampleRate(); m_timeCounter += timeStep; if (m_timeCounter > m_blinkTime) { m_timeCounter -= m_blinkTime; m_lightState = !m_lightState; } return m_lightState ? 1.0f : 0.f; }