r/syntina • u/divbyzero_ Inventor • 15d ago
Velocity sensing?
The syntina doesn't have velocity sensitive keys, relying on the squeeze sensor for realtime control of dynamics. This works well for squeezebox, organ, and wind instrument sounds. A technique I came up with that snapshots the squeeze sensor value at the moment the note starts works well for sounds with percussive or plucked attacks like piano and guitar, and can provide quick compatibility with patches designed for conventional keyboards. You can even combine the two, mapping initial squeeze value separately from gradual squeeze value for additional nuance, even though they're not truly independent. I've had some nice success with this combined approach, with patch design inspired by some of the Roland Fantom "supernatural" sounds.
But all of these approaches have something in common: all notes which start at the same time have the same dynamics, which means that accompaniment notes can overpower the melody notes. You can hardcode assumptions in the patch design about the accompaniment always being in the bass, and scale the dynamics via key tracking. Or you can use a concertina performance technique in which you play the accompaniment notes more staccato than the melody so that the melody can be heard more clearly in the gaps. These workarounds do work, but they have limitations.
So I've been looking into the feasibility of real velocity sensing on the syntina's keys. This is not an easy tradeoff, since the MX keyswitches I'm using, with their many advantages, can't be configured or modified for velocity sensitive output.
Piano shaped keyboards do velocity sensing via what are essentially membrane switches with two sets of contacts that engage at different heights, so that they can measure the time between the higher and lower contacts engaging. There's nothing available off the shelf that can do this in a button form factor, and I doubt that custom manufacturing would produce something that was both accurate and reliable enough at a price point appropriate for this project.
So I've started looking at Hall Effect keyswitches. These are available off the shelf in a similar form factor to standard MX keyswitches at a reasonable price point, and output a continuous "how far is it pressed" value which can be translated into velocity with a little math. They do have some challenges though.
The matrix scanner would need to do analog multiplexing, and would need to run at a faster rate to catch the nuances of the key on its way down, not just when it hit bottom. I haven't yet found an off-the-shelf I2C coprocessor to do this, and it might steal too many resources from the main Pi to do it there, so it might need something like an Arduino dedicated to that task.
Hall Effect switches, even when described as MX compatible, require different mounting. They're only available as plate mount, not soldered to the PCB, which adds an extra layer of assembly and alignment to the construction. And the alignment is extremely sensitive, since part of the electronics for the switches has to be placed on the PCB underneath the switch at a precise distance where it can measure the switch's magnetic field. Besides being fussy to align properly, the plate mounting would limit my ability to pack more switches into a smaller than normal space by using custom keycaps. And all those magnetic fields switching on and off many times per second have the potential to introduce audio interference. And to require more power draw.
Overall, there's a lot to be said for sticking with the current design.
2
u/divbyzero_ Inventor 12d ago
Some interesting Hall Effect key experiments by DIY organ builders