image-et-son / p600fw

GliGli based Prophet 600 firmware upgrade
10 stars 4 forks source link

Feature Request: add VCO selection as targets for poly mod env #58

Open matrix12x opened 2 years ago

matrix12x commented 2 years ago

Add the following targets as poly mod targets for the filter envelope: VCO A VCO B VCO A-B

This enables using the env to create a pitch envelope for any choice of VCOs (especially A and B at the same time). Which is great for sound design.

Add from matrix V2.28 version of code. UI.c: /4/ {.type=ptStep,.number=spPolyModEnv,.name="poly-mod env tgt",.values={"vco-a","vco-b","vco","Pw-a","Pw-b"}}, //added V2.28 polymod env to both pitches - V2.33 added polymod PWM

in synth.c (under BLOCK_INT):

    //V2.28
    switch(currentPreset.steppedParameters[spPolyModEnv])
    {
        case 0:
            va+=scaleU16S16(envVal,oscEnvAmt);  //mod VCO A only by filter env
            break;
        case 1:
            vb+=scaleU16S16(envVal,oscEnvAmt); // Mod VCO B only by filter env
            break;
        case 2:
            vb+=scaleU16S16(envVal,oscEnvAmt); //mod both VCOs
            va+=scaleU16S16(envVal,oscEnvAmt);
            break;
        case 3:
            polyModEnvPWA+=(scaleU16S16(envVal,oscEnvAmt))>>2; //V2.33 added polymod env PWM VCO A
            break;
        case 4:
            polyModEnvPWB+=(scaleU16S16(envVal,oscEnvAmt))<<2; //V2.33 added polymod env PWM VCO B
        break;         
    }

Add to storage.c currentPreset.steppedParameters[spPolyModEnv]=storageRead8();

add to storage.h as a stepped parameter (may need to change the 29 to a diff # depending on your added parameters): spPolyModEnv=29, // added V2.28 for polymod env to VCOA-VCO B pitch