How to Turn Your Record Player into a Modular Synth Sequencer

Modular Turntable Controller
Want to control your modular synth with your turntable? There’s an Arduino project for that. Turn your record player into a modular sequencer.

Want to control your modular synth with your turntable? Of course you do…

An impressive Arduino project by Lomond Campbell does just that. With a few components and a simple bit of coding on your Arduino unit, you can control your modular synths. From controlling the tempo of your Eurorack modular with your turntable speed control to sampling in real-time from a record while staying in sync, all while making your live modular set more visually appealing with this clever turntable hack.

You’ll need proximity switches and an Arduino to make this modular turntable 4 channel sequencer. Adding toggle switches enable you to switch each channel and mute – great for modular performances.

Components you’ll need for your Modular Turntable Controller:

  1. Arduino Nano
  2. Proximity switches / reed switches x4
  3. 10K resistors x4
  4. 3.5mm mono jacks x4
  5. LEDs (optional) x4
  6. 100 Ohm resistors (optional) x4
  7. SPDT toggle switches (optional) x4
  8. Veroboard
  9. Turntable (Preferably a variable speed turntable)

Copy the code below, compile, and upload it to your Arduino. Check out the schematics on Lomdon’s website for the veroboard diagram, then solder together.

Programmable Rotary Gate Sequencer for Modular Code:

// WVN005 TURNTABLE GATE SEQUENCER 
// LOMOND CAMPBELL 2019
const int AbuttonPin = 8;     // the number of the proximity switch pin
const int AledPin =  12;      // the number of the LED pin
const int AgatePin =  4;      // the number of the gate output pin
const int BbuttonPin = 7;     // the number of the proximity switch pin
const int BledPin =  11;      // the number of the LED pin
const int BgatePin =  3;      // the number of the gate output pin
const int CbuttonPin = 6;     // the number of the proximity switch pin
const int CledPin =  10;      // the number of the LED pin
const int CgatePin =  2;      // the number of the gate output pin
const int DbuttonPin = 5;     // the number of the proximity switch pin
const int DledPin =  9;      // the number of the LED pin
const int DgatePin =  13;      // the number of the gate output pin
// variables will change:
int AbuttonState = 0;         // variable for reading the proximity switch status
int BbuttonState = 0;         // variable for reading the proximity switch status
int CbuttonState = 0;         // variable for reading the proximity switch status
int DbuttonState = 0;         // variable for reading the proximity switch status
void setup() {
  // initialize the LED pin as an output:
  pinMode(AledPin, OUTPUT);      
  // initialize the proximity switch pin as an input:
  pinMode(AbuttonPin, INPUT);   
   // initialize the gate output pin as an output:
  pinMode(AgatePin, OUTPUT);      
  
   // initialize the LED pin as an output:
  pinMode(BledPin, OUTPUT);      
  // initialize the proximity switch pin as an input:
  pinMode(BbuttonPin, INPUT);   
    // initialize the gate output pin as an output:
  pinMode(BgatePin, OUTPUT);   
  
     // initialize the LED pin as an output:
  pinMode(CledPin, OUTPUT);      
  // initialize the proximity switch pin as an input:
  pinMode(CbuttonPin, INPUT);   
     // initialize the gate output pin as an output:
  pinMode(CgatePin, OUTPUT);  
  
       // initialize the LED pin as an output:
  pinMode(DledPin, OUTPUT);      
  // initialize the proximity switch pin as an input:
  pinMode(DbuttonPin, INPUT);   
     // initialize the gate output pin as an output:
  pinMode(DgatePin, OUTPUT);  
  
  
}
void loop(){
  // read the state of the proximity switch value:
  AbuttonState = digitalRead(AbuttonPin);
 // read the state of the proximity switch value:
  BbuttonState = digitalRead(BbuttonPin);
   // read the state of the proximity switch value:
  CbuttonState = digitalRead(CbuttonPin);
     // read the state of the proximity switch value:
  DbuttonState = digitalRead(DbuttonPin);
  // check if the proximity switch has closed.
  // if it has, the buttonState is HIGH:
  if (AbuttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(AledPin, HIGH);  
        // send gate high:    
     digitalWrite(AgatePin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(AledPin, LOW); 
      // send gate low:
    digitalWrite(AgatePin, LOW); 
  }
  
    // check if the proximity switch has closed.
  // if it has, the buttonState is HIGH:
  if (BbuttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(BledPin, HIGH);  
        // send gate high:    
    digitalWrite(BgatePin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(BledPin, LOW); 
       // send gate low:
    digitalWrite(BgatePin, LOW); 
  }
  
    // check if the proximity switch has closed.
  // if it has, the buttonState is HIGH:
  if (CbuttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(CledPin, HIGH);  
     // send gate high:    
    digitalWrite(CgatePin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(CledPin, LOW); 
        // send gate low:
    digitalWrite(CgatePin, LOW); 
  }
    
    // check if the proximity switch has closed.
  // if it has, the buttonState is HIGH:
  if (DbuttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(DledPin, HIGH);  
      // send gate high    
    digitalWrite(DgatePin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(DledPin, LOW); 
        // send gate low:
    digitalWrite(DgatePin, LOW); 
  }
}

Check out Lomdon’s Bandcamp for his music – including a very cool one-take track recorded live using an acoustic robot drum kit and the Elektron Octatrack MkII.

Where it’s at – Add a second turntable and you can beatmatch/mix sequencers with two turntables – “I’ve got two turntables and a modular.”

4 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like