Skip to content

Envelope timings incorrect #185

@fhoenig

Description

@fhoenig

Looks like attack is in seconds but decay and release are off by a factor of ~5 w.r.t. them being seconds.
Is this a know issue / intended?

#include <daisysp.h>
#include <chrono>
#include <thread>
 

daisysp::Oscillator osc;
daisysp::Metro      tick;
daisysp::Adsr       env;
bool gate = false;

void testaudio(void *userData, Uint8 *buffer, int length)
{
    memset(buffer, 0, length);
    int numToWrite = length / (sizeof(float) * 2);
    float *sampleBuffer = (float*)buffer;
    float osc_out, env_out;
    for (int sample = 0; sample < numToWrite; sample++)
    {
        // When the metro ticks, trigger the envelope to start.
        //if (tick.Process())
        //{
        //    gate = !gate;
        //}

        // Use envelope to control the amplitude of the oscillator.
        env_out = env.Process(true);
        osc.SetAmp(env_out);
        osc_out = osc.Process();


        *sampleBuffer++ = osc_out; // Left channel value
        *sampleBuffer++ = osc_out; // Right channel value
    }
}

int main(int argc, char* argv[])
{
    SDL_Init(SDL_INIT_AUDIO);
    SDL_AudioSpec requested = {};
    requested.freq = 48000;
    requested.samples = 2048;
    requested.format = AUDIO_F32;
    requested.channels = 2;
    requested.callback = testaudio;

    SDL_AudioSpec obtained = {};
    int deviceId = SDL_OpenAudioDevice(nullptr, 0, &requested, &obtained, 0);
    
    osc.Init(obtained.freq);
    osc.SetFreq(440);
    tick.Init(1.0f, obtained.freq);
    env.Init(obtained.freq);
    env.SetTime(daisysp::ADSR_SEG_ATTACK, 0.0);
    env.SetTime(daisysp::ADSR_SEG_DECAY, 1.0);
    env.SetTime(daisysp::ADSR_SEG_RELEASE, 1.0);
    env.SetSustainLevel(0);
    
    SDL_PauseAudioDevice(deviceId, false);
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::microseconds(100));
    }
    return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions