VC-1: Volume control for guitar using Arduino

As explained here, here and here, the VC-1 is a volume control for guitar (or bass) that can use a potentiometer, a variable analog signal or a Midi command to change the output volume.


In this picture, the blue wires on the left/bottom are for the guitar input and circuit output to the amplifier. The two black round parts are the opto-isolators (LSR) and their control circuit is just above. On the right, the IC is a 6138 optocoupler wired in a standard Midi IN circuit. The picture below shows the whole arrangement.

I just assembled the first VC-1 using a Spikenzielabs Arduino shield and I mounted the components to reduce hum. I added a Midi IN circuit to the shield.

Basically, one PWM pin on the Arduino is controlling the volume. That Arduino pin supplies 0 to 5 Volts (max volume) to the control circuit. The circuit takes care of impedance matching.

Since the control circuit input needs to vary from 0 to 5 Volts, it could be connected directly to +5 volts through a potentiometer and would work the same. That could be used without an Arduino. Leaving the Arduino out will reduce parasitic noise. That little micro-controller can act as a formidable “hum” generator, and even a radio antenna! Component placement is the key here.

The advantage of using the Arduino is that it can process an incoming signal and translate it to the 0-5 V. For example, an analog pin could be used to read a sensor (flex sensor, temperature or whatever) or a potentiometer. This can be translated and calibrated for the output pin.

Another use of the Arduino is Midi. In my test setup, the Arduino receives a Midi signal (Control Change) from a slider on my keyboard and translates the Midi value to a voltage on the output pin.


Here’s the test code:


VC-1: Volume control 1
Copyright Robert Turenne/

This sketch will receive a midi CC to control
the volume of the VC-1 by sending 0-5 Volts to pin 5,
which in turn controls the volume circuit

This sketch is expecting an Arduino Mega 2560 board.

MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);

const int volPin = 5; //the pin that will receive the control signal
const int midiCC = 23; //Which MIDI Control Change to react to

void handleCC(byte inChannel, byte CCNumber, byte CCValue)
if (CCNumber = midiCC)
analogWrite(volPin, CCValue*2);

void setup() {

pinMode(volPin, OUTPUT); //use the PWM functionality of this pin
analogWrite(volPin, 255); //default to maximum volume

void loop() {;


I tested the volume control and it is doesn’t seem to affect tone. It’s built to respect impedance. The volume circuit would prefer a low impedance input load but it worked fine with my guitar. I also tested it with a little line buffer and it was fine.

I would recommend using just the necessary wire lengths when placing the circuit in a box to prevent interference.

This entry was posted in Arduino, Electronics, Music equipment, VC-1. Bookmark the permalink.

1 Response to VC-1: Volume control for guitar using Arduino

  1. Tyler says:

    Are you selling these, if so how much? Can there be a midi in and out?

Leave a Reply

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