My build progress

I’m with you. I would rather use strip board.

2 Likes

I say de facto because of how commonly I see them used for synth applications but haven’t used one of my own yet. some experience with stripboard could very well have me running back to protoboard!

I must admit that I do appreciate with the protoboard the comfort of knowing that my ICs are definitely not shorted underneath!

2 Likes

It’s all good. Whatever works for you. Just don’t make the mistake of thinking you’re “supposed” to like stripboard or “supposed” to like protoboard or “supposed” to anything. Try stripboard and protoboard and fabbed PCBs (just don’t try etching your own, that’s horrible) (kidding) (but I never have) and find your own path.

6 Likes

I’ve never used protoboard, but some projects the strips just get in the way, and I bet it would be easier to just make my own routes in those cases.

I should try that out someday.

1 Like

triple oscillator test board, laid out like half a mini moog. need to do a bunch of testing and didnt want to design a finished product. excited to play with it!

10 Likes

Had a mini project for christmas holiday that i only managed to finish today. Late projects are still better than unfinished projects i s’pose!

Debounce handled in interrupt function by checking if state change is over threshold.
Short presses = speed change
Long press = program change

Gives a flash for speed change, and a double flash for program change.

// janky xmas flasher that only really is applicable to this project

#define pin1 3
#define pin2 4
#define pin3 5
#define pin4 6
#define pin5 7
#define pin6 8
#define pin7 9
#define button_pin 2

const int SHORT_PRESS_TIME = 300; // 600 milliseconds
const int DEBOUNCE_TIME = 100; // 100 milliseconds

int delay_speed = 300;
int button_pressed = 0;
volatile int led_pattern_select = 0;

int lastState = LOW;  // the previous state from the input pin
int currentState;     // the current reading from the input pin
unsigned long pressedTime  = 0;
unsigned long releasedTime = 0;

void setup() {
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
  pinMode(pin6, OUTPUT);
  pinMode(pin7, OUTPUT);
  pinMode(button_pin, INPUT_PULLUP); 
  attachInterrupt(digitalPinToInterrupt(button_pin), iterate_led_pattern, CHANGE );
  Serial.begin(115200);
}

void iterate_led_pattern() {

  // read the state of the switch/button:
  currentState = digitalRead(button_pin);

  if (lastState == HIGH && currentState == LOW) {        // button is pressed
    pressedTime = millis();
  }
  else if (lastState == LOW && currentState == HIGH) { // button is released
    releasedTime = millis();
    
    long pressDuration = releasedTime - pressedTime;

    if (pressDuration > DEBOUNCE_TIME){
      if (pressDuration < SHORT_PRESS_TIME){
        Serial.println("A short press is detected");

        digitalWrite(pin1, HIGH); 
        digitalWrite(pin2, HIGH); 
        digitalWrite(pin3, HIGH); 
        digitalWrite(pin4, HIGH); 
        digitalWrite(pin5, HIGH); 
        digitalWrite(pin6, HIGH); 
        digitalWrite(pin7, HIGH);
        delay(1000);
        digitalWrite(pin1, LOW); 
        digitalWrite(pin2, LOW); 
        digitalWrite(pin3, LOW); 
        digitalWrite(pin4, LOW); 
        digitalWrite(pin5, LOW); 
        digitalWrite(pin6, LOW); 
        digitalWrite(pin7, LOW);
        
        if (delay_speed == 300){
          delay_speed = 250;
        }
        else if (delay_speed == 250) {
          delay_speed = 200;
        }
        else if (delay_speed == 200) {
          delay_speed = 150;
        }
        else if (delay_speed == 150) {
          delay_speed = 100;
        }
        else if (delay_speed == 100) {
          delay_speed = 50;
        }
        else {
          delay_speed = 300;
        }
        Serial.println((String)"delay_speed:" + delay_speed);
        
      }
      else {
        Serial.println("A long press is detected");

        digitalWrite(pin1, HIGH); 
        digitalWrite(pin2, HIGH); 
        digitalWrite(pin3, HIGH); 
        digitalWrite(pin4, HIGH); 
        digitalWrite(pin5, HIGH); 
        digitalWrite(pin6, HIGH); 
        digitalWrite(pin7, HIGH);

        delay(8000);
        
        digitalWrite(pin1, LOW); 
        digitalWrite(pin2, LOW); 
        digitalWrite(pin3, LOW); 
        digitalWrite(pin4, LOW); 
        digitalWrite(pin5, LOW); 
        digitalWrite(pin6, LOW); 
        digitalWrite(pin7, LOW);
        
        if (led_pattern_select > 13) {
          led_pattern_select = 0;
        }
        else {
          led_pattern_select++;
        }
        Serial.println((String)"IN INTERRUPT " + led_pattern_select);
      }
    }
  }
  // save the the last state
  lastState = currentState;

}

void loop() {
  //Serial.println((String)"IN LOOP " + led_pattern_select);

  if (led_pattern_select == 0) {
    digitalWrite(pin1, LOW); 
    digitalWrite(pin2, LOW); 
    digitalWrite(pin3, LOW); 
    digitalWrite(pin4, LOW); 
    digitalWrite(pin5, LOW); 
    digitalWrite(pin6, LOW); 
    digitalWrite(pin7, LOW); 
  }
  else if (led_pattern_select == 1) {
    //Pattern 01
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 2) {
    //Pattern 02
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 3) {
    //Pattern 03
    digitalWrite(pin7, LOW); 
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin5, LOW); 
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW); 
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 4) {
    //Pattern 04
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 5) {
    //Pattern 05
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 6) {
    //Pattern 06
    digitalWrite(pin1, LOW); 
    digitalWrite(pin7, LOW);
    delay(delay_speed); 
    digitalWrite(pin2, LOW); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);  
    digitalWrite(pin3, LOW); 
    digitalWrite(pin5, LOW);
    delay(delay_speed);   
    digitalWrite(pin4, LOW); 
    delay(delay_speed);   

    digitalWrite(pin1, HIGH); 
    digitalWrite(pin7, HIGH);
    delay(delay_speed); 
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin6, HIGH);
    delay(delay_speed);  
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin5, HIGH);
    delay(delay_speed);   
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 7) {
    //Pattern 07
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin7, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 8) {
    //Pattern 08
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin1, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 9) {
    //Pattern 09
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, LOW); 
    digitalWrite(pin5, LOW);
    delay(delay_speed); 
    digitalWrite(pin2, LOW); 
    digitalWrite(pin6, LOW);
    delay(delay_speed); 
    digitalWrite(pin1, LOW); 
    digitalWrite(pin7, LOW);
    delay(delay_speed); 
     
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin5, HIGH);
    delay(delay_speed); 
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin6, HIGH);
    delay(delay_speed); 
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin7, HIGH);
    delay(delay_speed);
  }
  else if (led_pattern_select == 10) {
    //Pattern 10
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin7, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 11) {
    //Pattern 11
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin1, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, HIGH); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);
  }
  else if (led_pattern_select == 12) {
    //Pattern 12
    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin7, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH);
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin1, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin7, HIGH); 
    delay(delay_speed);

    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);

    digitalWrite(pin5, HIGH); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);

    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW);
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);

    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW);
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);

    digitalWrite(pin2, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW);
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);

    digitalWrite(pin1, HIGH); 
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin5, LOW);
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin6, LOW);
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin7, LOW);
    delay(delay_speed);
    digitalWrite(pin7, HIGH);
    delay(delay_speed);
  }
  else if (led_pattern_select == 13) {
    //Pattern 13
    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);
    digitalWrite(pin2, HIGH);
    digitalWrite(pin1, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);
    digitalWrite(pin3, HIGH);
    digitalWrite(pin2, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH);
    digitalWrite(pin5, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);

    digitalWrite(pin7, LOW); 
    delay(delay_speed);
      
    digitalWrite(pin1, HIGH); 
    delay(delay_speed);

    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);

    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW);
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);

    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW);
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW);
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);

    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW);
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW);
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);

    digitalWrite(pin6, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW);
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW);
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);

    digitalWrite(pin7, HIGH); 
    digitalWrite(pin6, LOW); 
    delay(delay_speed);
    digitalWrite(pin6, HIGH); 
    digitalWrite(pin5, LOW); 
    delay(delay_speed);
    digitalWrite(pin5, HIGH); 
    digitalWrite(pin4, LOW);
    delay(delay_speed);
    digitalWrite(pin4, HIGH); 
    digitalWrite(pin3, LOW);
    delay(delay_speed);
    digitalWrite(pin3, HIGH); 
    digitalWrite(pin2, LOW);
    delay(delay_speed);
    digitalWrite(pin2, HIGH); 
    digitalWrite(pin1, LOW);
    delay(delay_speed);
    digitalWrite(pin1, HIGH);
    delay(delay_speed);
  }
}
5 Likes

Wow, that is quite a bit of work you’ve done there. Must have taken you quite some time to route the traces or did you use some auto router (I have no experience with them so I do not know what to expect from those) by chance?

4 Likes

Nah, traces by hand. I ran the auto router once on a previous project and I didn’t like the results. This actually wasn’t too bad! Maybe 3 hours working on traces? The routing would definitely get tougher if I had to make a faceplate and have dual circuit boards.

I’ve learned how these kind of things usually work out for me so I’m expecting to make a handful of changes and then working on a finished design.

The rotary switches are a big problem. Unfortunately finding a rotary with the same “behind panel depth” as potentiometers isn’t that easy. Found some really nice looking mini 12-ways…13$ each. What I’ll probably end up doing is using the long shafted rotaries on a board stacked behind the potentiometer board? No way I’m spending 80$ on six switches.

5 Likes

I found these 8 position switches for 1.8€ each:

https://www.musikding.de/Rotary-switch-1-Pole-8-positions

but only in this german shop so far and they don’t show any manufacturer, so this information might be useless to you :frowning: But small and cheap rotary switches do exist :wink: They have almost the same height as potentiometers, but are plastic and have a rather small diameter. I wanted to use them on my sequencer, but then @TimMJN pointed me to nice slide switches instead! So, I have quite some of these left over, still need to think of a use xD.

7 Likes

Looks like the same switch here

(out of stock right now), and here

5 Likes

Auto routing (using the package that works with KiCad) can be okay, provided you start with parts in appropriate positions. It seems to help if you hand route the power rails first. Then you need to go in and fix up various small sillinesses the auto router comes up with. I’ve nevertheless saved time and had reasonable results with it. Still I tend to route by hand most of the time.

3 Likes

That is also my experience. I used freerouting, so I had to export and import the kicad project, but that was easy! The reason why I don’t use it anymore is that when I route by hand I can still notice suboptimal placement of components and easily fix that. Yes, I could also do that with autorouting, but with the import and export it is a bit more annoying :wink: I would probably save some time still, but I kind of enjoy doing routing while listening to relaxing music xD

1 Like

Finished my Eddy Bergman version on the Moog Ladder filter. Damn it sounds awesome. Had to get a bit funky with the construction because I’m doing Eurorack height modules and the circuit board is longer. It fits fine in my double height rack. I included a tribute to my cat who passed away this week.



12 Likes

I like the Donkey Kong style :smiley:

Should also build this this ladder… do you have some sound samples from your build?

Which method have you used to match the transistors?

Edit: just read it about your cat, I feel with you. Mine passed away a year ago and I still miss her fur and meow. Wish you the best!

3 Likes

Thank you. I love trying to bring in some fun style into my modules.

I made the version that uses transistor arrays, so you don’t need to match them! I used CA3086s instead of the 3046s because they’re more readily available and it seems to sound good to me.
httpss://www.eddybergman.com/2021/02/synthesizer-build-part-39-moog-ladder.html?m=1

Here’s a short video of my first test. Moog Ladder First Test - YouTube

Thank you, it’s been a rough couple days. Sorry to hear about yours.

3 Likes

Here’s my last build of 2021, and probably my last build for a while, as now my mixer/audio interface is full!

It’s a Rare Waves tabletop Hydronium and it was a pleasure to put together. The build guide was excellent and I took my time, in the end it worked first go:

It’s got a nifty send return loop between the filter and the vca, so I slipped my rat clone in there for maximum acid silliness:

Now I have promised myself that I will spend time making music with my synths rather than building new ones…

Cheers and catch you all next year!

12 Likes

Finished up a Studworth Bistab


12 Likes

This instrument looks really nice. What is the red on black center part made of?

4 Likes

The center strip is soldermask -
The orange and black doping is nail polish - just to cover the center solder points that shouldnt be touched.
It contains the Solar Charging circuit :slight_smile:

6 Likes

Almost finished the SVF prototype. I need to add some LEDs and then it is.
But now it is late, I’ll finish this next year …

I’ve already designed a follow up version that will leave some more space between the knobs and lower the inputs a bit.

12 Likes