Virtual, variable resistors, with saved presets recallable by MIDI

I stuck a meter on the audio POTs and get a reading of 4.3v on one POT (each leg had the same reading) and 5.5v on the other POT (each leg had the same reading).

Rotating the POTs did not seem to change the reading value.

I tested by placing the POS lead of the meter on the POT's leg, and the NEG lead of the meter on the battery's NEG pole.

Is this what you mean by "handling DC"?

Just thinking out of the box here:

Is there such a thing as a Potentiometer which allows the shaft to be manipulated from the bottom, as well as having the standard knob on the top of the shaft? Something like the shaft extending through the bottom plate, or a hole in the bottom plate with a hollow shaft POT for a coupler to be inserted?

If something like this exists, I could swap the two POTs for this type, then use micro servos on the bottom to provide automation control over their position. and control the micro-servos with the Arduino.

I could then use an external power supply as well, because the Arduino would not need to be powered up for manual operation of the pedal.

This would certainly simply things if it's possible.

EDIT: Oh, and BTW: I read somewhere that the 'B' indicator on the POT means "linear taper", and an 'A' designation would mean "Audio taper". So I took an OHM measurement of the POT sweep, and it appears they are liner, being that the reading was 1/2 the overall value when the shaft was turned 1/2 way.


well yes , I suppose it could be done. And you can buy dual concentric pots. Plus all the servos etc.....



I'd attach all your analog pots to analog inputs on the ARDUINO, and several modes ...

1- just reproduce the analog pot values on the digipots - ie 'straight through'
2 - store settings - perhaps triggered by a push button - preset 1,2,3 etc
3 - replay settings - again triggered by another button .

A display eg a 2x16 LCD would be a help in telling you where you are.

Plus.. just for fun - a sequencer which fades between given or indeed random presets - perhaps triggered by a microphone on the bass drum..........

could be ghastly - but rather fun? Stockhausen, Boulez etc, make way!

Or , of course, you could get the MIDI master to do all this.


ps there are ways to suppress the clicks, but these add considerably to the complexity.

The thought around the servo idea was to not interrupt the audio signal. Plus, it would be rather cool to watch the knobs locate when a preset was recalled.

I did hear back from Tech21, and they confirmed the audio signal does pass through the POTs.

So using servos would negate the issue of the clicks, as well as the power isolation problem.

I can’t seem to tell which POTs could be turned from the bottom though. I found these, and they seem small enough to work, but I don’t know if that hole in the bott could be used with a shaft or coupler to turn it.

Back in the 70s I worked for a major console manufacturer - Neve in the UK, where we invented the modern automated mixdown system with 'flying faders'

They weren't cheap.


Oh ya, flying faders are great! I've used several consoles with them. Also have used Presonus, who implemented scene recall without moving faders. Talk about adding confusion! Especially when the sound engineer forgets to recall the positions.

The flying faders had 2 tracks - one linear for the position, and one audio taper . Penny and Giles made the faders, and we installed motor drives and control loops.

I often thought it might be possible with 2 LDR's, equally illuminated by a light source, to do a similar job. A crude VGA. I never followed it up. Electrically a 4-quadrant multiplier such as a MC1495, or a discrete equivalent as used by DBX achieved much the same. Or a balanced diode ring as in the Neve 2254 limiter compressor.


Belt driven, right? Pretty sure that solution is still in place today on the current consoles.

For my project, I was thinking the POTs I linked to above would be good since they are dual. 1 for the audio signal and 1 for location data back into the arduino. Basically, the same purpose you are describing with the two tracks.

I know some servos can feed back location info, but I think I'd rather get it from the POT directly. Besides, I can't seem to find single POTs that have the bottom plate open for a servo to connect.

Yes, they were belt driven. More recently some use linear motors.

I you're going gown this route I suggest you buy them in - at Neve it took a team of 3 mechanical engineers several months to get the prototypes working well.

A general note... - why not use the electronic techniques covered above? 0.01% distortion isn't going to be noticable in your device, and it's an awful lot smaller, cheaper and simpler....


I'm still considering both options, weighing the benefits and drawbacks of each as I think through them.

Things going through my mind are:

  • Ease of implementation
  • Clicking, or other generated noise, when changing preset values
  • Being able to use the pedal as normal, or if something goes wrong with the Arduino setup
  • Available space inside the pedal
  • Isolating the power between the audio circuit and the Arduino/digital POT circuitry
  • Not impacting the audio output tone of the pedal

If I use the servo method, the clicking isn't an issue, but the servo motors may cause EMI and generate noise. The servo method also does not intercept the audio signal at all, so the pedal functionality remains intact even if not using the digital piece, or if the digital piece fails. Not sure how the programming would be different between the two methods, or how preset storage and recall would be different.

I just ordered a Nano, a breadboard, and various piece/parts to start experimenting with. It seems this right thing to do is to try try a few things and see what happens.

I've been reading a bit more, and have a question related to controlling a digital POT with an analog POT through the Arduino Nano.

The existing analog POTs are 100k, and I was planning to connect then to the Arduino. H as 5v, L as ground, and W as the analog input. Then read the signal and map it over to the digital POT (I've ordered a couple MCP41100 chips).

I think from a spec POV, I'm 90% ok here. The 41100 spec sheet states the max voltage on the A, B, and W pins are Vcc +1v. I measured 5.5v on the existing POT, and I'll be feeding the digi-pot 5v, so I should be good there.

The 41100 is a 100k sweep, same as the analog ones; so I'm good there.

What I'm concerned about is the 100k analog pot hooked up to the 5v, ground, and ADC input of the Arduino. 1st concern is if the 100k load will generate too much current for the Nano to handle. 2nd concern is if the reading will be accurate since the ADC input seems to be optimized for a 10k impedance input.

I think this is leading me to the conclusion I need to replace the analog POTs with 10k ones, if I am to go the digi-pot route.

And, it would also mean I cannot use the servo solution at all, since the dual POTs have both sweeps the same at 100k. Unless there are dual rotary POTs out there with one sweep at 100k and the other at 10k.

The analog input of an atduinos is of very high impedance, so 100k pots are perfectly usable. Lower values are often recommended for very slighly better accuracy and better noise immunity.

Either 100k or 10k would be fine.

You can buy special pots with different tracks - I think bourns do them - but adding a servomotor would not be very easy.


Great, thanks. I ordered the parts today so I can begin experimenting.

On another note: is there a particular online circuit design tool which works well for Arduino layout? I want to get things "on paper" from a design POV so I can begin experimenting when the parts arrive.

There are loads of schematic capture/PCB layout packages - if you search this site you'll find lots of recommendations.


I decided to try DigiKey's online tool, and here's my 1st stab at the diagram.

I'm not sure if both DigiPOTs can share the same CS, SCK, and SI pins though. The Arduino communicates through SPI, correct? And I see in my reading that in the code, you have to define an address, or device number, for the DigiPOT, in order to send a command to it. So does this mean they can share the same communication buss/pins, and the code is written to differentiate between the two?

Or do they each need their own pins for communicating the value to be written each one?

Thanks again for the assistance.

You need a seperate cs to each controlled SPI device to select it


Ok, thanks. Are there limitations to which D pins I can use for CS, or is this configurable in the code and I can use any available D pin?

Just to confirm my understanding:

  • CS = "Chip Select". A digital signal pin, connected to a device, which is pulled high to signify to the device that the message being transmitted by the Ardunio at that time is intended for it to receive and process
  • SCK = "Signal Clock". A digital signal pin which transmits a square wave clock cycle, used to synchronize communication among the components, for signal and message timing.
  • MOSI = "Master Out Slave In". Term used for the Ardunio (as the Master) sending commands out to Slave devices.
  • MISO = "Master In, Slave Out". Term used for the Ardunio (again, the Master) receiving data from a slave device.

Am I understanding this properly? And if so, I assume I don't need MISO for this, considering the DigiPOT won't need to send any data back to the Ardunio, since the values from the analog POTs will be used to store presets.

This is how I modified the graphic, assuming what I typed above is accurate:

The protocal requires acknowledges from the slave, so you need the MOSI


Do you mean MISO? Or am I confused on the two terms (MISO and MOSI)?

Yes - sorry. But you need them both


No big deal - just another wire.....