#pragma once class Chirp { public: // constructor Chirp(); // initializes the chirp object void init(float time_record, float frequency_start_hz, float frequency_stop_hz, float time_fade_in, float time_fade_out, float time_const_freq); // determine chirp signal output at the specified time and amplitude float update(float time, float waveform_magnitude); // accessor for the current waveform frequency float get_frequency_rads() {return waveform_freq_rads; } private: // Total chirp length in seconds float record; // Chirp oscillation amplitude float magnitude; // Chirp start frequency in rad/s float wMin; // Chirp end frequency in rad/s float wMax; // Amplitude fade in time in seconds float fade_in; // Amplitude fade out time in seconds float fade_out; // Time that chirp will remain at the min frequency before increasing to max frequency float const_freq; // frequency ratio float B; // current waveform frequency in rad/s float waveform_freq_rads; // current amplitude of chirp float window; // output of chirp signal at the requested time float output; };