Joystick Controller Build Log

i’m building a teensy based cc controller. can anyone recommend a good source?


  • hi quality, beautiful
  • analog pots, not tact switches
  • no center return
  • not playstation style

see: ems synthi

I was going to suggest the Doepfer joysticks listed on this page. Once you remove the springs they are ideal IMHO.
However, it appears they are no longer available. Maybe you will be lucky enough to find a dealer who still has stock. They are made by ALPS so you could try there too. I believe I purchased mine from Analog Haven. You can see my controller in this old post:
Good luck!

thanks for the alps tip. looking around for a US based source…

not as high quality, but i’m also considering recycling an old pc joystick.


more searching… this looks nice:

$35 + shipping

noticed that the pots used for teensy builds are usually 10k - this one is 100k. will it work?

update! changed this topic to a build log.

i purchased two of those IBM PCjr joysticks on ebay for $20. the mechanism is entirely plastic, not sure how durable they will be in the long run…

i wired up one pot to GND, 3.3v and the A0 pin on my teensy 3.1
loaded up the arduino sketch provided by @tehn on the Four-N controller topic.

const int ports[] = {A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20};
int v[2][21];
int last;

void setup() {

void loop() {
for(int i=0;i<21;i++) {
last = v[0][i];
v[0][i] = (analogRead(ports[i]) / 4 + v[1][i]) / 2;
if(v[0][i] != last)
  usbMIDI.sendControlChange(i, v[0][i] / 2, 1);
v[1][i] = v[0][i];

i’m getting jitter and constant cc values even when i don’t adjust the pot.

can anyone advise me on which values to tinker with?

ok, so i was able to reduce the noise by disabling all the analog inputs i wasn’t using. that made a big difference.

i’m still getting enough noise to register CC changes in my DAW though. this makes mapping pretty much impossible, as the teensy is constantly sending CC updates.

i’m guessing this is because the pot value in the joystick is pretty high?

very good idea to disable unused analog inputs.

how wide is the jitter range?

i think 100k should be ok?

the jitter range is very small, around 1 or 2 CC values. i could live with it if it didn’t interfere with midi mapping.

i’m wondering if there is a power or wiring issue? is your AREF pin tied to +3v3?

here’s what i did:

ohhhh. i did not know about wiring AREF & AGND. i’ll try that out.


ok. i tried wiring the AREF and AGND pins to the same GND and +3v3 pins as the pot and i’m still getting the jitter/noise. i also tried wiring to the unused +3v3 / GND pins on the teensy.

also strangely, live is now receiving a jitter in which cc channel is sending. it’s jumping all over the place. currently prototyping on A0 - all other inputs are deactivated.

when i switch to the code below, my cc jitter goes away, but the cc value jitter/noise remains.

void setup() {

void loop() {
   usbMIDI.sendControlChange(1, analogRead(0) / 8, 1);

tested on a brand new alpha 100k pot - same noise.

CC jitter:

honestly i feel like i must be missing something obvious, but can’t figure it out. maybe post to the teensy forum and you’ll get help right away. let me know what you find out.

Looks similar to my aborted build of that 4N knob board. I had floating pins that were being read as CC noise. Is your sketch reading a floating pin perhaps?

my sketch is only reading the A0 pin

@tehn would you mind linking me to the four-n schematic? tried locating it on github, but no luck.