Add Sync Out to Boss RC30 Loop Station

by DenisDIY in Circuits > Audio

1376 Views, 3 Favorites, 0 Comments

Add Sync Out to Boss RC30 Loop Station

RC30_title_2_small.jpg

What are we about to do?

The Boss RC30 dual track loop station identifies bpm of a recorded loop and will flash LEDs on every quarter note. We will add a circuit to the RC30 (soldering to the PCB!) to output a short 5V puls for every 16th note (4 bpqn) as a master clock to sync e.g. drum mashines or synths to the loop. Sync frequency will be adjustable.

DISCLAIMER: you might be damaging your RC30 if you are not careful. This is not recommended as a first project involving a soldering iron!

Why do this?

The RC30 has been with me for some years used mainly with my electric guitar. I recently ventured into the field of DIY analog synths and electronic music and was a little frustrated when trying to sync guitar loops with synth sequences and drum loops. So I decided to add a sync out capability to the RC30.

Why do it this way?

It is the simplest way I could think of. Hacking the tap tempo buttons could be used to get the RC30 to receive a clock rather than work as master. But this is beyond my (current) capabilities.

The 4 bpqn (beats per quarter note) standard is my personal choice. This is done in the micro controller / arduino code and you can adapt this the way you like. e.g. the 24 bpqn as used in the Roland TR808.

Supplies

  • Boss RC30 Loop Station
  • Tools and software
    • soldering iron
    • some solder
    • screw driver
    • hex wrench (M4 = 3mm)
    • pliers
    • power drill and 9mm metal drill (maybe smaller one to drill pilot hole)
    • Computer with e.g. Arduino IDE for programing and e.g. AVRDudess for setting fuses (all available for free)
    • programer for ATmega328P -- I use an Arduino nano as ISP as describer elsewhere (see below for links)
    • Optional
      • an oscilloscope
      • a volt meter (not really optional!)
  • For the circuit
    • 1x strip board / perf board / proto board with 33 rows with 10 holes each
    • wires (two really thin ones e.g. 26 AWG, for the rest thicknes is not really important)
    • 1x 78L05 voltage regulator (7805 will do)
    • 1x 0.22uF capacitor (any type, optional)
    • 1x 0.1uF capacitor (any type, optional)
    • 2x 47k resistor (any type)
    • 2x 10k resistor (any type)
    • 2x 220 Ohm resistor (any type)
    • 1x 100k resistor (any type)
    • 1x 1k resistor (any type)
    • 1x 4.7k resistor (any tape)
    • 3x 2N3904 NPN transistor (BC549 will do, I guess)
    • 2x 1uF capacitor (any type)
    • 1x ATmega328P chip
    • 1x 28 pin IC socket
    • 2x 22pF capacitors
    • 1x 16MHz quarz cristal
    • 1x 6.3mm jack socket (3.5" for all imperials) - or any other connector that is the same size or smaller and fits better in your setup
    • some duct tape or other durable adhesive tape

I use the ATmega328P chip because it is a little smaller than an Arduino nano (and cheaper). But you can use other micro controllers or use the signal comming from the 2N3904 collector without upscaling the frequency. Details below.

Add Wires to RC30 Tap Tempo LEDs

RC30_bottom_view_1_small.png
RC30_bottom_view_2_small.png
RC30_top_view_1_small.png
RC30_PCB2_front_Tap_Tempo_LED_small.JPG
RC30_PCB2_back_T61_T62_scratched_small.png
RC30_PCB2_T61_T61_wires_small.png

Open up the RC30 and find the leads to the tap tempo dual LED (red and green in one). Red will flash on beat 1, green on 2, 3, and 4.

  • unscrew and remove bottom cover of RC30
  • remove 1st PCB (you have to undo all the nuts on the jacks)
  • remove 2nd PCB (optional for better handling, but you could leave it in if you want)
  • Find TP61 and TP62 (see picture) which lead to positive end of tap tempo LED on the other side of the PCB

Scratch the leads carfully to expose the copper. Solder one wire each to the PCB as shown in the picture. Use a thin wire to make sure each wire is connected to only one lead - TP61 or TP62.

I practiced this procedure with the PCB of an old computer mouse. You don't want to break the leads or get solder all over the PCB.

Using a oscilloscope you should see that the wires are at ~1.6V when the LED is off and at ~1.2V when th LED is on.

NOTE: If you connect the RC30 to the power connector and turn it on while it is open you could damage it or get electrecuted.

Connect Power Wires to RC30

RC30_PCB1_top_view_full.JPG
RC30_PCB1_top_view_TP14_TP21.JPG

The circuit to be added needs power to work. Wiring it to the socket where power comes in is the simplest option. But it will continuously power the new circuit - which is not optimal. The RC30 turns one when power is connected and a Jack is incerted into output left / mono. Taking power from the connectors between PCB 1 and 2 will power the circuit only when the RC30 is turned on.

The pins TP14 (+9V) and TP21 (GND) of the connector on PCB 1 are where I connected the wires (see picture). The cable in the connector going to TP14 is red while all others are white. The connector is marked with a black stripe on the pin going to TP21.

Solder on cables and done with this step.

Build the Circuit

RC30_sync_schematic.png
RC30_sync_stripboard_layout.png
RC30_strip_board_programmer.png

I prefer to do this on a bread board first - this is optional. Or just put together the circuit as described. Be sure to check for shorts before adding the micro controller or you might damage it or the RC30.

Here is how it works

The voltage comming from the LEDs is at arround 1.6V. It drops a few 100mV every time the led lights up. The 1uF capacitors C3 and C4 convert this to 0V when the LEDs are off and slightly below 0V when they are turning on.

The base voltage on the transistors Q1 and Q2 (NPN; 2N3904) is above the threshold for making it fully conduct / fully open. So at the collector the voltage is at ground level. When the tap tempo LED lights up the voltage slightly drops below the threshold closing the transistor for a few milli seconds. The collector will rise to 5V in sync with the LED lighting up.

The arduino picks up these signals, calculates the distance between peaks and devides it by what ever you want and outputs the scaled up frequency. The transistor Q3 acts as a buffer so the micro controller doesn't have to take the load of what ever is connected to the output.

Feel free to add another output for a dedicated signal for beat 1 (red LED) or a switch to select between different frequency scalings. You could leave out the whole arduino part and output the 5V peaks on every quarter note directly (usually syncing needs a higher frequency).

BOM / parts list

  • C1 0,1uF
  • C2 0,22uF
  • C3/C4 1uF
  • C5/C6 22pF
  • Q1/Q2/Q3 2N390
  • R1/R4 10K 0,5W
  • R2/R5 47K 0,5W
  • R3/R6 220Ω 0,5W
  • R7 4,7K 0,5W
  • R8 1K 0,5W
  • R9 100K 0,5W
  • 16MHz quarz oscillator
  • 78L05 voltage regulator (or 7805 if you have one of these)
  • ATmega328P
  • 28 pin IC socket

Strip board layout

This is what I came up with. I recommend using a rectangular pice much longer then wide to fit in the RC30 case. next to all the stuff already in there. I removed the battery box and added the final circuit. Maybe you find a layout that can fit into the battery box or even next to it. But there is little space. This worked for me. I strongly recommend an IC socket to be able to take out the IC and program it or reprogram it if needed. Tolerance of resistors can be 5% or higher.

Programing the ATmega328P

ATmega328-Pinout.png

CODE

I used the following code to process the singnal, scale the frequency and output 20ms pulses.

PD0 is pin 2; PD1 is pin 3; PD2 is pin 4; I chose these randomly. Feel free to use other pins

const byte PIN_IN1 = PD0;
const byte PIN_IN2 = PD2;
const byte PIN_OUT = PD1; 
byte last_in; 
byte in; 
byte freq_up; 
long time_current; // current millis 
long time_last;    // millis of last click 
long dist;         // current distance between clicks 
long m;            // current millis 
long time_up;      // time of up scaled freq going high

void setup() { 
	pinMode(PIN_IN1,INPUT); 
	pinMode(PIN_IN2,INPUT); 
	pinMode(PIN_OUT, OUTPUT); 
	digitalWrite(PIN_OUT,LOW); 

	time_last = 0; 
	dist = 0; 
	last_in = 0; 
	freq_up = 0; 
	dist = 0; 
}

void loop() { 

	in = digitalRead(PIN_IN1) + digitalRead(PIN_IN2); 
	if (in > 0 && last_in == 0) { 
					time_current = millis(); 
					time_up = time_current; 
					last_in = 1; 
					digitalWrite(PIN_OUT,HIGH); // set output high with incomming puls
					if (time_last > 0) {dist = floor((time_current - time_last)/4);}  // replace the 4 by any other value you like
					time_last = time_current; 
					freq_up = 1; 
	} else if (in == 0) {last_in = 0;}

	m = millis(); 


	// set output to low after 20ms -> can be adjusted to your favorite sync puls length
	if (m - time_up > 20) {digitalWrite(PIN_OUT,LOW); freq_up = 0;}

	// set scaled freq to high between incomming pulses
	if (m - dist - time_up > 0 && freq_up == 0 && dist > 0) {	
								digitalWrite(PIN_OUT,HIGH); 
								freq_up = 1; 
								time_up = m;} 
}

The variable dist gives the distance between output pulses in milli seconds. I use a devision by 4 to get 4 pulses per quarter note = one per 16th note. To get 24 per quarter note as needed e.g. for the TR808 it might be necessary to reduce the output puls length (currently 20ms). I didn't test this.

Programing the ATmega328P

I used a Arduino nano on a breadboard as ISP to program the ATmega328P. Instructions can be found all over the web. For example on Martyn Currey's page. Or here at instructables using an arduino uno.

You can burn the bootloader or you can set fuses using AVRDudess (its a GUI for AVRdude).

Make sure to set the fuses for 16MHz external oscillator clock and program it acordingly. This will give you a fast respons and the least lag between in and output.

Connect and Test It

RC30_oscilloscope_in_out.jpg

Check for shorts before connecting it to the RC30. Connect it as seen in the pictures in Step 3. Power up the RC30.

Use the volt meter to check the power in (should be 9V) and the voltage regulator out (should be 5V). ATmega328P can't take more than 5V! Maybe add the IC only after this first check.

With a very fast volt meter you might be able to pick up the 5V peaks at the collectors of Q1 and Q2. Or just use an oscilloscope. If there is no signal (always 0V at the collector) the value of the resistors R1 / R4 might be to low (transistor always turned on; small voltage drop can't turn the transistor off). If the collector is at 5V and either dropping to 0V for a few milli seconds or not dropping at all then the value of the resistors R1 / R4 might be to high. 10k for R1 and R4 did work for me.

In the image of the oscilloscope screen you can see the collector peak (top) rising to 5V in sync with the output at emitter of Q3 (bottom). The output is a 5V puls 20ms long. Both signals are in sync. If this is not the case in your setup make sure the Atmega328P uses the external 16MHz clock.

Drill a Hole for the 6.3mm Jack Socket in the RC30 Enclosure

RC30_hole_enclosure.jpg
RC30_enclosure_pilot_hole.png
RC30_pilot_hole_outside.png

This was the part where I began to hesitate. Everything else could be reversed but this is permanent! If you hesitate just let a cable dangle out of the battery box and see how it goes.

I decided to make it all permanent!

The socket I used needs a 9mm hole. Check your socket before drilling. When removing the battery box there is enough space to add the socket (see picture). Mark the position for the hole from the inside. Double check the position and drilled a 3mm pilot hole using a power drill from the inside.

Now use the powerdrill or a drill press to drill the final 9mm hole from the outside.

Put It All Together

RC30_final_top_view.jpg
RC30_final_bottom_view.jpg
RC30_final_open_1.jpg
RC30_final_open_2.jpg

Remove the battery box from the RC30 enclosure completely, screw in the jack socket, solder / connect all the cables and done ... well, almost.

Where there used to be the battery box now there is a hole in the bottom of the case. Add some duct tape from the inside and some from the outside. This double layer should keep dust out and the guts in. Not the most advanced technique but it is thin, durable and removable.

Enjoy making music!