Show older

Ok that didn't last long!

Might just make it screw on instead in the next version because that's easy

There's something weird going on with the new sensor - when blowing gently the reading from the sensor actually goes down!

Here's a graph of the readings as I gradually increase from not blowing to full speed. It dips down at the start. That's not good!

I'm guessing it's because I added a slight "bypass" between inlet and outlet, and the flowing air has a lower pressure that actually pulls the balloon towards it.

For reference, here's the previous sensor. You can see because the air *must* move the balloon to flow from inlet to outlet, there's a significant jump when I start blowing.

I think that's the better way to go!

I spent a bunch of today trying out different combinations of software and hardware to figure out the best latency I can get.

I'm really not sure how to present the info so here's a table. It looks like I can get latency as low on Arch as I can on Ubuntu Studio (without tweaking Jack). The lowest latency synth is Yoshimi, but Qsynth is good. Pulseaudio seems to be lower latency than Pipewire.

I suspect a good chunk of the remaining latency could be on the Arduino side, so I'll have to measure that next.

New electro-sax breath sensor is attached. It looks pretty good but unfortunately it's kinda bad :(

It has the thing where if you start blowing suddenly the note is really quiet. I'm really not sure why. Got to figure out the actual cause.

The feel of the mouthpiece is good, but I need to be able to twist it to an angle for it to feel right. Aligned with the sax means I need to twist my head.

Maybe this is the cause - the response is really non-linear. It jumps very slightly above the 0 point, then sits level as I keep blowing more, then suddenly jumps up before increasing linearly.

The other graph is me playing a piece - it looks alright to be honest, so maybe it's not the non-linearity, it's something in my program?

Taking a break from breath sensing to try out the Teensy. The built in touch sensing is very neat!

I might use this with an analog multiplexer to make a touch-sensitive version of the electro-sax

A bit more playing around with touch sensing on the Teensy. It's a little stripboard keyboard which can only play a C arpeggio! It only uses one touch sensing pin along with a 4067 analog multiplexer to get 16 touch inputs.

That's enough for all the keys currently on the electro-sax, plus two more octave keys and... I dunno, two more to do something.

It didn't take long to build a touch-sensitive version of the electro-sax! This is definitely nicer to build than soldering a key matrix with diodes, but the analog sensors aren't quite as nice to deal with on the code side.

The key thing is that it works! I'm not actually sure whether I prefer the buttons or the capacitive sensors. I need to tweak the sensor calibration a bit before I'll be able to tell.

On this one I added a second octave key so there's now both "octave up" and "octave down". So it has a way of getting to the lowest notes that would typically use pinky keys. It's still missing the high end that's normally done with your left palm, so maybe it needs a third octave key.

I'm not convinced by the touch buttons on the electro-sax, and I had a few microswitches laying around, so what about using those for the keys?

I 3D printed some little button assemblies and a frame to hold 4 of them in place. I didn't try a print-in-place pivot on the buttons - instead there's a hole to insert a small bit of filament.

The action of the switches is quite smooth, and maybe low enough pressure to be usable. It's worth a try.

Deleting and redrafting lost the images the first time >:(

I'd post the switch assembly design from FreeCAD, but it won't start properly since the last update.

Recompiling FreeCAD got it working again. Here's a cross-section of the button holder design. The pink and green parts are printed in one go, the grey part is the microswitch.

There are a few issues with this design. It's a little scratchy where the layer lines of the two parts rub together, and it varies from print to print.

The microswitch is mounted to stripboard glued to the bottom, which is not great because the glue is all that stops it falling off. Ideally it would be held by some plastic.

Another problem is that the prints are failing a lot, because the on the right, the pink part only has a tiny surface touching the build plate. Looking at it, it doesn't need that much of a fillet, so I'll reduce that and hopefully it'll work.

It was hard to tell from small test sections whether the microswitch-based buttons actually felt good for the electro-sax. So I put together another cardboard prototype!

The verdict: Once they're mounted on an echoey box, these keys are way too clicky. Like distractingly clicky. It's also not nice having the activation at the start of the stroke. On a real sax it's mostly at the end.

Also black was not a good filament colour choice for parts I actually want to take photos of.

I'm not gonna wire these keys up into a proper matrix to try them out. They already feel worse than the touch buttons or original Gateron switches.

I liked the convenience of wiring the touch buttons - just a single wire to each key, and I could have up to 16 wired to the multiplexer. No need for a matrix or diodes.

I think it would be good to try hybrid buttons - moving mechanism but capacitively sensed. It sounds like it'd have the nice feel of proper keys but the ease of wiring for cap sense.

First attempt at a hybrid button for the electro-sax: It feels pretty nice! It'll be closer to a real sax in that the activation is at the end, when the valve finally closes.

This is a mod of the microswitch design to add nice surfaces for copper tape. The Teensy capacitively senses on the bottom part, and your finger makes contact with the top part.

It can actually sense whether you're touching as well as whether you've pressed, which might be handy!

I improved the hybrid button design a little. The return stop now doesn't push into the case, which should remove the rubbing against layer lines that I was feeling.

It's also got a longer travel, which should be closer to a real sax (that may or may not be a good thing).

Time to print it and find out what's wrong with it!

The new button design works just as well! The feel is definitely better, although I still need to make some adjustments as my tolerances were too loose.

I might also tweak it so that it's angled slightly upward by default instead of being flat. The 6mm travel is maaaybe a little more than is needed to feel right, too. I might bring it down to 5mm just to reduce the height.

It's been a while since I attempted digital sketch rendering, so I drew up some form ideas for the electro-sax on paper, then took a photo and added colours in Krita.

It took a very long time - I need lots of practice!

I'm getting the hang of FreeCAD's Link functionality - here's the finger buttons mount with the new hybrid buttons linked in. It's not yet set up as a proper assembly with mates - they're just positioned by coordinates.

Here's a few generations of the hybrid switch design. The latest design adds a slope, so that the capacitive sensing copper tape is parallel to the tape you touch, when the switch is closed. I haven't tested it yet, but it should make it more sensitive.

These new thinner silicone o-rings are much better for the return spring. It's enough to pull the button back up, but provides a lot less resistance to pushing the button down.

A new full electro-sax prototype in progress. This has the new hybrid capacitive/mechanical switches. Just pressing these, it feels like some (like the side buttons) might need stronger elastic to feel right.

The hybrid switch prototype is ready to play! And as expected, it still needs some tweaks.

Firstly, the button travel is too long. I made it match my real sax, but it doesn't feel right. I think something shorter would feel nice and responsive. The side buttons in particular need a MUCH shorter travel.

Secondly, the cop-out octave button I put on the back really isn't working for me. It needs to be squeezed in towards the sax body, instead of pushing upwards.

Other than the long travel and bad octave button, it feels really nice! The keys feel nice and tactile, although they could do with a more solid end position. Currently the "bottoming out" is kind of mushy.

They're definitely less pleasant for other people to hear than the touch-only prototype, though!

Fixed my two biggest problems with the electro-sax. The side buttons now have a shorter travel and stronger O-rings so they feel great. The octave keys are back to being parallel with the back of the sax, and the shape works pretty nicely.

I also added some buttons on the back for triggering calibration and for transposing.

It still needs some work to save the calibration to the EEPROM. I think the keys are definitely too noisy too - could do with a bit of cork or something.

The new electro-sax hybrid touch buttons vary too much to use a single value for the threshold for each. That meant that I needed (wanted anyway) to implement saving the calibration to EEPROM.

Turns out that was pretty simple, and now I don't need to recalibrate all the buttons and the breath sensor every time it's plugged in.

I've noticed a problem with changing octave in the electro-sax. Because the buttons and notes are just on/off, you have to perfectly time your octave key press/release with your note key changes.

If you don't you get a little "blp" as it briefly plays a note of the wrong octave.

I think the non-mechanical octave buttons make it harder to time it perfectly, because they're different to the finger buttons.

It's something that an acoustic sax just automatically deals with, because you have to change your mouth shape as you change notes. You can't (easily) accidentally play the wrong octave, the sound just gets strangled. So it's easier to make octave changes smoother.

I finally made a new breath sensor that's *better* than the first one! It feels nicer and the modulation is even a little better.

Also the wiring comes out the bottom which is a lot neater. No more wires getting in the way of seeing the music!

I'm not sure this is the final shape I'll go with but I *do* think it looks pretty cool!

Here's a rough schematic of the electro-sax's internal wiring:

I think it'd be a good idea to add some feedback LEDs for the three calibration buttons, so you at least know whether the press was registered. Maybe also a "cancel" button in case you only accidentally hit them.

It's been a while since I worked on the electro-sax, but I'm back at it. I wasn't happy with the octave buttons, which were just capacitive buttons and hard to time right. They needed a mechanical element like the finger buttons.

Some quick sketching helped me figure out how I wanted to do this. It could also be 2 of the finger buttons facing each other, but that just didn't seem very nice to me.

The prototype feels good on its own, I'll have to get it mounted to the sax to figure out if it's right.

Update on the hybrid thumb buttons for the electro-sax: They feel good! The way they pivot is very similar to the one on an actual alto sax, so it feels right.

The only problem is that the activation point is too late - on a real sax it's near the start of the press, here it's near the end. I can either make the travel shorter or make it more sensitive to presses in software. The latter approach is easy but has the risk of making it too sensitive and registering phantom presses.

I'm still working on the electro-sax project, just very slowly. I settled on using mechanical buttons with capacitive sensing because they feel like a real sax. Now I'm opening back up to other options that would be less susceptible to interference.

I've bought some conductive silicone to try something like a membrane keyboard. Got some small magnets and Hall effect sensors on the way. I could make contact between two battery springs, but I'm not super keen on it and they're kind of expensive.

Hall effect sensors seem quite neat for electro-sax keys. I bought some unbranded 49E ones and they seem very low noise compared to my previous capacitive sensing. Right now it does mean that I have to use analog pins on the Arduino, so I'd still need a multiplexer to have enough for a full sax.

I like the idea of adding a per-key threshold with a comparator and a potentiometer. That way it's just on/off signals going between keys and microcontroller.

There are 13 keys (currently) and 16 IOs available on a Pro Micro. That leaves me enough free to use one analog pin for the breath sensor and there are still a couple free for buttons. Maybe I should make those the i2c pins just in case I need an IO expander.

Alternatively, maybe I could get the comparators to trigger transistors, and scan them as a matrix? That would get me down to 8 IOs used for keys. It's more comfortable but adds extra parts to each key (and I'd need to figure out how to do that!)

This is the kind of thing I'm thinking of. The green trace is the hall effect sensor output, going from 4.5V when the magnet is far away to 2.6 when it's close.

There's a threshold set with a potentiometer (represented by R1+R2) and the two are compared by a comparator. It goes high when the button is pressed down.

Now I think I just need to get the comparator to switch a MOSFET which would be part of a matrix.

I'm not entirely sure about the multiplexing for the last bit. Any thoughts?

I tried out the conductive silicone. Cut some interlaced fingers in a piece of copper-clad board and laid the silicone on top. Even just the weight of the silicone is enough to make good enough contact to overcome the Arduino's internal pullups.

I'd be a little bit concerned about debouncing (without introducing too much latency) but this seems like a nice simple solution for the main finger keys on the electro-sax!

The electro-sax needs two types of buttons to mimic a real sax. The finger buttons activate at the bottom of the stroke, when you fully close a hole on the sax. The palm and thumb buttons activate at or near the top, when you open a hole on the sax.

That difference seems to be quite important when trying to recreate the feel of the sax. Some types of sensing will be better for one button type or the other.

· · Web · 1 · 0 · 2

Testing two different types of button for the electro-sax. The conductive silicone one works really well! The only downside is it actuates too late for the palm+thumb switches.

The hall effect sensor one works but I'll have to do something to deal with oscillations. With actuation based on a simple threshold it's easy to get it to fluctuate between on and off. The silicone one doesn't seem to have that problem.

I think what I'll do is use the silicone switches for the finger buttons, and Hall effect or something else for the palm and thumb keys.

I made this little circuit based around an LM311 comparator to turn the analog voltage from the hall effect sensor (V_HALL) into a digital input. It actually works!

I'm not familiar with TTL - I'm thinking I can common up the outputs on multiple of these, and use the LM311's STROBE pin to enable the output of one at a time. That way I can build a matrix. Does that sound right?

The matrix of comparators seems plausible! I wired this up on a breadboard - two LM311s with separate enable pins attached to their "strobe" inputs.

They both have the same two input voltages (but wouldn't in actual usage). I enabled one then the other and got the same reading from both! I think that's enough to indicate that this works - now I can make some little stripboard versions and build them into some test keys.

Added some hysteresis to the comparators by swapping them round to an inverting arrangement and added positive feedback on the reference side.

That means that noise and small movements don't make the button state oscillate between on and off. Could have done with this on my capacitive version!

Since I'm only using this for 5 of the buttons I think it's OK to use the more expensive analog Hall effect sensors. The rest of the buttons will be conductive silicone.

Thinking about the shape and workings of the electro-sax keys

I've made the "lever" part of the electro-sax key into an L-shape, so that the return spring will sit inside the body of the sax. I think this will work!

The important difference here is that once I add a widened top part onto the lever, the rubber band and the base of the key are hidden. That means I can make this whole thing look much slicker (while actually making it easier to replace the rubber bands because they'll be accessible on the inside).

Printed a couple of the new button design and it feels promising! These could either each have their own PCB or all mount to one shared PCB. They clip neatly onto a PCB edge.

I think they could do with a slightly longer lever so they don't twist so much under your finger. They also needed a slight bit of filing due to sagging while printing. I think I can just rotate the print orientation and that won't be a problem, but the curved top will be less smooth.

Adjusted the angle of the electro-sax button lever, so that it's more compact underneath. Now when it's fully pressed, the lever doesn't swing out past the length of the button. That'll make fitting it into a sax easier.

I had some fun trying to remember how to do nice surface modelling too! There was an attempt.

Also they won't be in this horrendous colour scheme, of course.

They look cool and feel great! Now I just need to design the rest of the saxophone...

I'm almost out of this grey resin so soon it'll be time to figure out settings for a new resin. Then I can print these buttons in black!

Some new keys for the electro-sax - these are the keys on the sides that you hit with your palm.

These are a bit tricky because they basically need to be "normally closed" and actuate as soon as you start pressing the button.

Luckily there's plenty of space to make them longer, and I think I can use the same PCB as the finger buttons.

I still haven't figured out "the right amount" of supports on my resin printer and every time I try I just end up with a blob on the bottom. So I err on the side of "a fucktonne of supports"

Does this RC filter make sense? S1 is just some contacts that form a switch when the conductive silicone presses on them.

Am I right in thinking that when this is wired in a matrix I can't use an RC filter without having either GND or VCC for a reference voltage?

Electro-sax button PCBs have arrived! I snapped off a couple and they fit, but I won't be able to add the diodes and connect them up until tomorrow.

Still haven't soldered any diodes, but I glued some switches to a cardboard box! They feel pretty similar to my alto sax, although the springs on this are slightly lighter. This is less "clunky" too - when you press a key on the real sax you hear it close an opening. So that's not really something I can replicate.

So far this feels pretty close to a real sax - hopefully that's still true when wired up!

I hooked up the prototype electro-sax buttons to an Arduino and had it send some MIDI to my computer. The buttons feel really nice! (see previous toot in thread for photo)

With only 5 keys it's hard to tell how it really feels to play but initial indications are good. I think it's worth printing a whole set.

I'm still putting off the challenge of redesigning the breath sensor. That one will be tricky.

Electro-sax update: I said "screw it" to designing a new breath sensor and just bought an off-the-shelf pressure sensor. It'll be a lot more reliable than my dodgy homemade one. I just need to orient it to keep most of the breath moisture out.

I've also been playing with the Raspberry Pi Pico, and ordered some RP2040s and supporting components to make my own board.

Show newer
Show newer
@gbrnt thats a neat comparator!

im looking at the schematic, probably add 1k to the strobe pin, otherwise looks good.

each key will have its own tuning pot, right?

@piggo Ooh thanks for the resistor tip! Yeah that's the plan for the tuning pots - and I'll have a neat little PCB mounted to each key.

@gbrnt Almost a 'window' detector if the ref voltages were spaced.

@AskChip in actual use they won't be wired to the same sensor

@gbrnt nice. Are you using a bit of steel wire in the hinge? That's what it looks like.

@normandc It's a bit of PLA filament but steel wire/rod would be a great idea - lower friction and could be smaller.

@normandc Thanks for the steel wire hinge suggestion btw. I just tried it out on one switch and while it doesn't feel much different, I bet it will degrade much slower than the PLA!

@gbrnt That's a limit sensor. Useful for analog hall effect devices. However, there is an easier way, use the cheaper digital hall effect devices which do the same thing.

@AskChip Yeah I noticed they were a thing, but didn't immediately see any with an adjustable actuation point. I bet there are some though!

@gbrnt They are usually used for close cover sensors so setting sensitivity is superfluous. However a bias magnet could adjust it.

@AskChip I guess I can just have a screw that adjusts the distance to the sensor to change the activation point too.

Sign in to participate in the conversation
Mastodon for Tech Folks is shutting down by the end of 2022. Please migrate your data immediately. This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!