A Teensy 3.x - so a 3.2, 3.5 or 3.6 - is easily powerful enough to do the things you want. If you know it and like it, that’s good. They’re not too expensive, nice and small, and easy to integrate into other circuit boards.
With your button board, you might want to look into 4067 multiplexers (eg the 74HC4067), or traditional keypad multiplexing routines (where you use one digital output per row and one digital input per column). Basically, anything you can to reduce inputs.
Mechaduinos: these seem pretty heavyweight, in that it’s a nice servo motor, plus motor controller (which are always a faff)… but they’ve each got a Cortex M0 on as well? Something in me wants to run everything from the same microcontroller - but it might make things simpler to use what you know. Those servos also look quite… hefty (both in terms of weight, and thus power requirements).
Encoders are not a problem, they need two data lines per encoder, there are librariers for them.
Touch inputs might need some more detail, especially if they’re capacitive.
It’s nice to hear I might be in the right direction with the teensy.
Thanks for the input on the components. I need all the help I can get in that department as circuit design is not a strong skill of mine.
The mechaduinos are heavy. But I think the instrument might be played on my lap so it might not be a big deal. I did however purchase a pancake version of their motors to see if I can make due with something less beefy. I don’t think I’ll need much force to “feel” the virtual frets and strings.
You are right about the mechaduinos having their own processors. I have seen people link multiple for use in 3d printers using a central Arduino. I think they use quite a bit of their resources just with the pid logic maybe? Do you think I might have latency issues?
The touch input is a bit of a concern of mine. I’m afraid I will botch it. Im really inspired by the touch knobs on the Ableton push. I love you can write logic that knows which knob you are touching.
I don’t think you’ll have latency issues at all, I2C is fast! And it might be simpler to offload the logic to other known things. I just sometimes see multiple small computers in a thing and think one might be better!
Yeah if this were a product I think I would look into reducing those components. I don’t think it will be anything other than a one-off. Hopefully just using full mechaduinos will be easier for me.
Below is the touch ic I think I want to use. I would use up all i2c jumper addresses just for the 6x8 button input. I actually have one of these already so maybe I test it out and buy more if it goes well.
Other than making the pads, you won’t mess anything up there - that’s a pretty sensible chip to use and Adafruit have good libraries.
If you want more than 48 points, note that you can get an I2C multiplexer chip - Adafruit sell it on a small devboard - and they work great. It’s designed to let you have multiple I2C thingies which are on the same address; you’d simply read the first four, then the next four, and so on.
I think the hard bit with the ‘touch and press’ keys is just going to be the mechanical parts - building the key units, if you want to do both yourself. The touch-sensitive encoders on an Ableton push, for instance, are just standard mechanical encoders with a conductive cap; the mechanics of the encoder are like any encoder - but there’s also the ability to detect the capacitive change in the body of the pot, through the conductive knob.
A better model for the capacitive sensing might not be “touch sensitive buttons” but something more like a Madrona Soundplane - a capacitive grid, effectively.
I forgot about the sound plane, is it piezo based or something?
You are correct about the capacitance being an issue. I was thinking about using those metal tactile buttons like the ones used on the Nintendo switch (see below). Then I would need a keycap that conducts.
I need to really double think the ux of the touch & press keys… Maybe I can reduce the number of keys that need both.
My idea is to have a “fret-shuttle” for the left hand that lets you pick guitar chords patterns. And then you slide the whole thing to pick the root note kinda like the bar on a slide lap guitar. The slide position will be handled by one of the mechaduinos which will also let you virtually feel your location.
A whole other system will be used by the right hand for strum patterning, like the omnichord.
As a designer, I would say the thing to do is to get prototyping. Some kind of prototype in your hands will beat theorycraft any day. Even if it’s just a jury-rigged single button on your desk with a touch sensitive surface. You might genuinely find that a capacitive surface just detecting light touch / denser push may be easier than trying to add capacitive surfaces to buttons. Lots of ‘mights’, which means it’s time to start bench-prototyping.
You also might want to start prototyping each part in isolation. For instance, just look into the motors, or the buttons, or the strum. There’s a lot of different parts here, and by starting to sketch with your hands you’ll have new ideas.
Regarding struming: Le Strum does a clever thing with a flying banana lead being scraped across PCB contacts. That might be an interesting point of reference, especially given the “Omnichord” type strumming.
That’s really good input. I’m going to take my time with it and work out each mechanism separately.
I might be able to mock up the touch input using my mac’s magic touchpad.
Let strum looks interesting, too bad what I enjoy most about my omnichord is being able to touch all the buttons at once.
I’m probably going to order several components this weekend after I come up with a game plan. Thanks for the advice!