c++qtwaveformqwt

How to generate a square waveform for qwt oscillocope example?


the example of qwt oscillocope generate a sinus waveform, for my project I would like to generate a Square or cosinus wave. I tried to find out where the sinus wave is generated , I did'nt find. any help will be appreciated thx


Solution

  • To generate a 'Mathmatical square wave" meaning non band-limited square wave use the following code:

    double value = sin(x / period * 2.0 * M_PI)>=0.0 ? 1.0:-1.0;
    

    This will give you a wave that would theoretically be the pure analog square wave. As I mentioned above this wave will be non band limited in that it is not going to sound correct because of aliasing. But if you are just using it for a oscilloscope that does not have audio output it will look correct.

    Let Me know if this helps.

    EDIT: For saw...

    const double Sample_Rate = 44100.0;
    typedef struct Saw_Data{
        double _phasor = 0.0;
        double _tolerance = 1.0;
    }Saw_Data;
    
    double _DSP::Saw_Wave(double* _frequency,_DSP::Saw_Data* _data){
        double _val = _data->_phasor;
        _data->_phasor += 2.0 * (1.0/(Sample_Rate/ *_frequency));
        if (_data->_phasor > _data->_tolerance) {
            _data->_phasor-=2.0;
        }
        return _val ;
    }
    

    This is the code i use for a "Mathematical" non band limited saw wave. Lemme know if you need me to explain it.