/*
 * 
 * Envelope Generator (ADSR)
 * 
 * A3 = trigger (sync) in
 * 
 */

int pwmPin = 11; //define output pin, Meergranen output pin is 11
bool triggered; // logic: triggered, yes or no

void setup() {
  pinMode(pwmPin, OUTPUT); //set pin as output
  Serial.begin(9600); // debugging (see if trigger is registered)
}

void loop() { // run forever
  int input3 = digitalRead(A3); // read analog pin 3, detect triggers

  if(input3 && !triggered) {
  Serial.println("trigger!");
//ATTACK
     for(int value = 0; value<=255; value++){ // cycle through 255 values, start at 0. 8 bit output == 255 values
         analogWrite(pwmPin, value); // analogWrite simulates smooth sinewave using complex pwm duty cycles
//DELAY
         delay(1);
      }
      
 //SUSTAIN       
    for(int value = 255; value>=0; value--){ // cycle through 255 values, start at 0. 8 bit output == 255 values
        analogWrite(pwmPin, value); // analogWrite simulates smooth sinewave using complex pwm duty cycles
        delay(2);
      }

//RELEASE
    delay(20);

        triggered = true;
    }
    else if(!input3 && triggered) { //if there is no reading on input3 and condition triggered is true (aka sound is playing), set triggered to false, aka stop playing 
      // STOP WHEN NO TRIGGER IS PRESENT (or do something else ;)
      triggered = false;
     
    }

    
}
