Welcome, Guest
Username: Password: Remember me

TOPIC: Reverb Effect

Reverb Effect 4 years 1 month ago #1651

  • Ray
  • Ray's Avatar
  • OFFLINE
  • Moderator
  • Posts: 702
  • Thank you received: 152
  • Karma: 44
This code is very similar to the Delay and Echo effect, the only difference is the configuration of the audio relays:
reverb.jpg


You can also check the codes of the Delay and Echo, to see the similarities:
The complete code looks like this:
// CC-by-www.ElectroSmash.com Reverb Effect Pedal.
// More info about the project at www.ElectroSmash.com/Time-Manipulator
 
// Pin Definitions: 
#define DELAY1 10
#define DELAY2 9
#define SWA 3
#define SWB 14
#define SWC 2
#define SWD 4 
#define LED1_G 1 
#define LED1_R 0
#define LED2_G 5
#define LED2_R 6
#define ENC_A 16
#define ENC_B 18
#define ENC_GND 17
#define ENC_PUSH 19
#define BYPASS_DETECT 8
#define TAP_DETECT  15

//VARIABLES
unsigned int ENC_counter = 100; 
int ENC_aState;
int ENC_aLastState;  
int ENC_aState_selection=0;
int ENC_aLastState_selection=0;
 
// the setup function runs once when you press reset or power the board
void setup() 
{
//set the pins //init the values
pinMode(DELAY1, OUTPUT);    analogWrite(DELAY1, 100);
pinMode(DELAY2, OUTPUT);    analogWrite(DELAY2, 100);
pinMode(SWA, OUTPUT);       digitalWrite(SWA, LOW);
pinMode(SWB, OUTPUT);       digitalWrite(SWB, LOW);
pinMode(SWC, OUTPUT);       digitalWrite(SWC, LOW);
pinMode(SWD, OUTPUT);       digitalWrite(SWD, LOW);
pinMode(LED1_G, OUTPUT);    analogWrite(LED1_G, 0);
pinMode(LED1_R, OUTPUT);    analogWrite(LED1_R, 0);
pinMode(LED2_G, OUTPUT);    analogWrite(LED2_G, 0);
pinMode(LED2_R, OUTPUT);    analogWrite(LED2_R, 0);
pinMode(ENC_A, INPUT_PULLUP);
pinMode(ENC_B, INPUT_PULLUP);
pinMode(ENC_GND, OUTPUT);
pinMode(ENC_PUSH, INPUT_PULLUP);
pinMode(BYPASS_DETECT, INPUT_PULLUP);
pinMode(TAP_DETECT, INPUT_PULLUP);
ENC_aLastState = digitalRead(ENC_A); 
void read_encoder(void);
}
 
 
void loop() // the loop function runs over and over again forever
{
//detect if the effect is on or off
while((digitalRead(BYPASS_DETECT) == LOW)) 
  {
  digitalWrite(LED1_R,LOW);digitalWrite(LED2_R,LOW);digitalWrite(LED1_G,LOW);digitalWrite(LED2_G,LOW); 
  }  
 
read_encoder();
//set the LED (both green)
digitalWrite(LED1_G,HIGH);digitalWrite(LED2_G,HIGH);
//set the audio relays so the signal goes in parallel for reverb
digitalWrite(SWA, HIGH);digitalWrite(SWB, LOW);digitalWrite(SWC, HIGH);digitalWrite(SWD, HIGH);
//Adjust the delay time for the PT2399, one has half the delay than the other.
analogWrite(DELAY2, 220-(ENC_counter>>1));//one delay is 1/2 the other
analogWrite(DELAY1, 220);
}
 
void read_encoder(void)
{
 ENC_aState = digitalRead(ENC_A); // Reads the "current" state
   if (ENC_aState != ENC_aLastState)
   {    
     if (digitalRead(ENC_B) != ENC_aState) 
          {if(ENC_counter>50)ENC_counter-=5;}
     else 
          {if(ENC_counter<230)ENC_counter+=5;}   
   } 
ENC_aLastState = ENC_aState; // Updates the prev. state 
 
}


File Attachment:

File Name: Time-Manipulator_reverb.zip
File Size: 1 KB
The administrator has disabled public write access.
Time to create page: 0.136 seconds
Powered by Kunena Forum
Joomla SEF URLs by Artio