this post was submitted on 18 Jul 2023
7 points (100.0% liked)

Libre Hardware

1514 readers
1 users here now

founded 4 years ago
MODERATORS
 

Hello all! My name's Evan, and I'm starting development on an idea I had a few years ago. The Synharmonium is a microcontroller-based synthesizer with control elements based on the accordion and the Suzuki Omnichord, and an algorithm to solve the centuries old musical problem of versatile just intonation. Best case, this could have a huge impact on how western music is written and performed. Worst case, its a fun and easy synthesizer you can build at home.

But right now its not much more than an idea and a janky keyboard prototype. I am a student of computer engineering, and I have a non-zero amount of programming skill, but I tend to make stupid mistakes that I can't easily spot. I need someone who's good at programming, has some spare time, and finds this idea interesting, to help me get the software side of the instrument going. If you can become a major contributor, I'd love to have you, but if you can just help me find one boneheaded mistake I will be extremely grateful, because I'm pretty stuck at the moment.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 1 year ago

Thats the issue, yeah. I haven't manually read the pins yet, but I just found something strange.

I connected an LED to one of the column pins to see whether the MCU was sending scanning voltage, and it was. Then I put it in parallel to a row pin to see if the switches were returning that scanning voltage when pressed, and they were. Then I noticed that whenever I added the led to a row pin, the serial monitor showed keypresses for all the keys on that row, and the inverse when I removed the LED.

So, apparently, this whole time the key matrix library has been designed to work with a pull down resistor rather than reading return voltage. My whole PCB is modeled after mechanical keyboards, so it was not designed for pull down resistors. Now I must rewrite parts of the library or find one meant for a keyboard-style circuit.