void init(int channelCount, double inSampleRate) {
        channels = channelCount;

        sampleRate = float(inSampleRate);

        sp_create(&sp);
        sp_adsr_create(&adsr);
    }
 void init() override {
     sp_adsr_create(&adsr);
     sp_adsr_init(kernel->getSpData(), adsr);
     sp_blsquare_init(kernel->getSpData(), blsquare);
     *blsquare->freq = 0;
     *blsquare->amp = 0;
     *blsquare->width = 0.5;
 }
 void init() {
     sp_adsr_create(&adsr);
     sp_adsr_init(kernel->sp, adsr);
     sp_blsquare_create(&blsquare);
     sp_blsquare_init(kernel->sp, blsquare);
     *blsquare->freq = 0;
     *blsquare->amp = 0;
     *blsquare->width = 0.5;
 }
        void init() {
            sp_adsr_create(&adsr);
            sp_adsr_init(kernel->sp, adsr);
            
            sp_pdhalf_create(&pdhalf);
            sp_tabread_create(&tab);
            sp_tabread_init(kernel->sp, tab, kernel->ftbl, 1);
            sp_phasor_create(&phs);
            
            sp_pdhalf_init(kernel->sp, pdhalf);
            sp_phasor_init(kernel->sp, phs, 0);

            phs->freq = 0;
        }
    void init(int channelCount, double inSampleRate) {
        channels = channelCount;

        sampleRate = float(inSampleRate);

        sp_create(&sp);
        sp->sr = sampleRate;
        sp->nchan = channels;
        sp_adsr_create(&adsr);

        attackDurationRamper.init();
        decayDurationRamper.init();
        sustainLevelRamper.init();
        releaseDurationRamper.init();
    }