Ejemplo n.º 1
0
void pdsp::ClockedPhazor::onReset(const int &n, const float &inc, float* &triggerBuffer, const int &bufferSize){
        phase-=1.0f;
        if(triggerBuffer==nullptr){
                triggerBuffer = getOutputBufferToFill(output_trig);
                ofx_Aeq_Zero(triggerBuffer, bufferSize);
        }
        triggerBuffer[n] = 1.0f;  //inter sample trigger value
    
}
Ejemplo n.º 2
0
 //-------------------------ALIGNED ALLOCATION------------------------------------------
 void ofx_allocate_aligned(float* &toAllocate, int len){
     int check=0;
 #ifdef _MSC_VER
     toAllocate = reinterpret_cast<float*>(_aligned_malloc(len*sizeof(float), OFX_SIMD_ALIGNMENT_NUM));
     if(toAllocate ==NULL) {
             check = -1;
     }
 #else
     check = posix_memalign(reinterpret_cast<void**>(&toAllocate), OFX_SIMD_ALIGNMENT_NUM, len*sizeof(float));
 #endif
                             
     if(check!=0){
             toAllocate = nullptr;
     }else{
             ofx_Aeq_Zero(toAllocate, len);
     }
 };
Ejemplo n.º 3
0
void pdsp::TriggerControl::process (int bufferSize) noexcept {
    
    if(nextTrigger.load() == 0.0f){ 
        
        setOutputToZero(output); 
        
    }else{

        float* outputBuffer = getOutputBufferToFill(output);
        ofx_Aeq_Zero(outputBuffer, bufferSize);
        outputBuffer[0] = nextTrigger.load();
        nextTrigger.store(0.0f);
        
    }


}
Ejemplo n.º 4
0
void pdsp::GateSequencer::process (int bufferSize) noexcept {
        meter_ticks++;
        
        //if( messageBuffer!=nullptr ){         
    
        if( ( messageBuffer->empty() ) ){
                setOutputToZero(output_trig);
        }else{
                float* trigBuffer = getOutputBufferToFill( output_trig );
                ofx_Aeq_Zero(trigBuffer, bufferSize); //clean buffer
                
                int imax = messageBuffer->size();
                for( int i=0; i<imax; ++i){
                        ControlMessage &msg = messageBuffer->messages[i];
                        
                        if(msg.value <=0.0f){
                                trigBuffer[ msg.sample  * getOversampleLevel() ] = pdspTriggerOff;
                                gateState = false;
                        }else{
                                if(!singleTrigger || (singleTrigger && !gateState) ){
                                        //normal trigger or first trigger with legato
                                        trigBuffer[ msg.sample  * getOversampleLevel() ] =  msg.value;
                                        meter_ticks = 0;
                                        
                                }else{
                                        //legato triggers
                                        trigBuffer[ msg.sample  * getOversampleLevel() ] = - msg.value;
                                }
                                gateState = true;   
                                meter_value = msg.value;
                        }
                }
        }
                
        //}else{
        //        setOutputToZero(output_trig);
        //}

}
Ejemplo n.º 5
0
void ofxPDSPWrapper::process(int bufferSize) noexcept {
    
    ofx_Aeq_Zero( buffer, bufferLength);
    
    for(int i=0; i<(int)inputs.size(); i++){
        
        int inputState;
        const float* inputBuffer = processInput(inputs[i], inputState);
        
        switch(inputState){
            case pdsp::Changed: case pdsp::Unchanged:
                for(int n=0; n<bufferSize; ++n){
                    buffer[n*maxChannels + i] = inputBuffer[0];
                }
            break;
            
            case pdsp::AudioRate:
                for(int n=0; n<bufferSize; ++n){
                    buffer[n*maxChannels + i] = inputBuffer[n];
                }
            break;
        }

    }
    
    audioProcess( buffer, bufferSize, maxChannels );
    
    for(int i=0; i<(int)outputs.size(); i++){
        float* outputBuffer = getOutputBufferToFill( outputs[i] );

        for(int n=0; n<bufferSize; ++n){
            outputBuffer[n] = buffer[n*maxChannels + i];
        }
    }
    
    setOutputToZero(dummyOut);
    
}
Ejemplo n.º 6
0
void pdsp::TriggerGeiger::process (int bufferSize) noexcept {
    
    if(counter < bufferSize){

        int distanceSamples = (processAndGetSingleValue( in_distance_ms, 0 ) * sampleRateMult );
        int jitterSamples = (processAndGetSingleValue( in_jitter_ms, 0 ) * sampleRateMult );

        float* outputBuffer = getOutputBufferToFill(output_trig);
        ofx_Aeq_Zero(outputBuffer, bufferSize);
        
        for(int n=0; n<bufferSize; ++n){
            if(counter==0){
                outputBuffer[n] = 1.0f; //set trigger pulse
                counter = distanceSamples + randomUnipolarInt(jitterSamples);
            }
            counter--;
        }

    }else{
        counter -= bufferSize;
        setOutputToZero(output_trig);
    }

}