Welcome, Guest
Username: Password: Remember me

TOPIC: Psycho Echo Effect

Psycho Echo Effect 4 years 1 month ago #1656

  • Ray
  • Ray's Avatar
  • OFFLINE
  • Moderator
  • Posts: 702
  • Thank you received: 152
  • Karma: 44
This effect is a mix of Chorus and Reverb, it was created by mistake but sounds great!

The complete code looks like:
// CC-by-www.ElectroSmash.com Psycho 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;
 
int psycho_counter = 0;
int direction_up=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 audio relays (all ON)
digitalWrite(SWA, HIGH);digitalWrite(SWB, HIGH);digitalWrite(SWC, HIGH);digitalWrite(SWD, HIGH);
 
if (direction_up==1)
  {
    digitalWrite(LED1_R,LOW);digitalWrite(LED2_R,HIGH);digitalWrite(LED1_G,HIGH);digitalWrite(LED2_G,LOW); 
    psycho_counter++; //if too fast try divider 
    if (psycho_counter>220) {psycho_counter=220; direction_up=0;}
    delay(ENC_counter>>1);
  }
else 
  {
    digitalWrite(LED1_R,HIGH);digitalWrite(LED2_R,LOW);digitalWrite(LED1_G,LOW);digitalWrite(LED2_G,HIGH);
    psycho_counter--; //if too fast try divider 
    if (psycho_counter<50) {psycho_counter=20;direction_up=1;}
    delay(ENC_counter>>1);
  }            
if ((psycho_counter>>1)>50)analogWrite(DELAY1, psycho_counter>>1); else analogWrite(DELAY1, 50);
analogWrite(DELAY2, 250 - psycho_counter);
}
 
 
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_psycho.zip
File Size: 1 KB
The administrator has disabled public write access.
Time to create page: 0.123 seconds
Powered by Kunena Forum
Joomla SEF URLs by Artio