Jump to content

MIDI concertina version 2.0 video


Recommended Posts

Sorry for the delay, I was consumed by another musical instrument project and end-of-semester workload.  

Here is a quick recording of my current MIDI construction, using a hall-effect sensor for bellows, and custom boards for the key switches.

 

 

 

  • Like 3
Link to comment
Share on other sites

That's looking good.

 

I see you wrote elsewhere: "Right now, my 2.0 bellows sensor has a problem where it doesn't register a change in bellows direction quickly enough, causing extra false notes when I hit a button while changing direction. "

 

I assume (correct me if I'm wrong!) that's because:

1. You're calculating bellows "pressure" as proportional to the displacement, X

2. You've got a spring restores the bellows with a force that's proportional to X

3. That means you can only start a note when reversing the bellows direction by actually moving the bellows a few cm - changing the sign of X.

 

I can see that allowing some actual movement is desirable, but I think the mapping above will not feel right either, because in reality you don't actually need to move the bellows to start a note - you just need to apply pressure. In a real concertina, movement of the bellows is a secondary effect - force is the thing which is primarily manipulated.

 

As a small tweak, you could try including the velocity as well - so your "pressure" is

 

P = a * (X + b * dX/dt) = a * (X + b * V)

 

You've already got a value for a - you might want to try a value of b something like 0.1. This is using the velocity to "predict" the displacement at time b in the future.

 

If b is zero, you'll have what you've got at the moment.

 

As you increase b, then notes will start to "reverse" earlier, and the instrument should start to feel more responsive.

 

If b is too big, then you'll be over-predicting, and it will get twitchy!

 

I'd be interested to hear if this works (should be easy to try!)

 

 

 

 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

Hello,

 

You are absolutely correct that the estimate of the player's force could (should!) include a velocity term like you've described.  In general, we can write the player's instantaneous input force as...

 

(force) =  K*position + S*velocity + M*acceleration

 

...where K is due to the stiffness constant from the springs, S is due to friction, and M is due to the mass being shoved around.  Unfortunately, I have already tried various weighted combinations of these variables, and it doesn't remove this problem entirely.   I think it's due to several unavoidable real-world limitations of the sensor.

 

Fortunately, this bug has little effect when playing with a concertina voice, because it just results in super-short spurious notes that shut off before the synth can do anything with them; however, some instruments like harp or piano will sound those spurious notes no matter how brief they are.  Thus this sensor does not produce an instrument that is suitable for playing in different voices.

 

One solution is to use a force sensor with very little travel, for example the load cell you've used in your bandoneon.  This makes the higher order terms more negligible.  I've designed a few bidirectional force sensors that only have 1-2mm of travel and might try them next.   Another option is to build a position sensor with a long stroke and no springs, and use it to measure the actual bellows extension instead of the player's hand force.

Link to comment
Share on other sites

In a real concertina the loudness, and with an Anglo the note, depend on the air pressure difference. The pulling or pushing force you exert on the ends is mainly proportional to that pressure. There is also a component of the force proportional to the masses of the ends and their acceleration when you change direction, but I would expect that to be small.

In a MIDI concertina, if you have a transducer of some sort to sense the force between the ends (as I do in mine) that should very closely mimic the pressure in the real concertina. Such additional force as is needed to accelerate the ends exists in both cases, but I would expect it to be lower in the MIDI one because of the missing mass of reeds and reed frames.

Link to comment
Share on other sites

That looks great and sounds great as well! I've built several split mechanical keyboards for computer entry from kits so it is fun to see essentially the same thing being used for creating music that's more than the clicking of the keys. As I was listening to your playing I was pondering what switches you are using.

Link to comment
Share on other sites

22 hours ago, digver said:

That looks great and sounds great as well! I've built several split mechanical keyboards for computer entry from kits so it is fun to see essentially the same thing being used for creating music that's more than the clicking of the keys. As I was listening to your playing I was pondering what switches you are using.

 

The switches are linear cherry red (https://www.adafruit.com/product/5122) that I have soldered directly to the board.  The previous version used a commercially available keypad PCB with sockets, but I've found that sockets are a huge pain in the butt with key switches coming loose as I play.

Link to comment
Share on other sites

I can see how soldering directly is better for your use case! I prefer low profile choc switches. But they have a rectangular stem, as opposed the square stem on the MX switches that are closer to a concertina's buttons.

Link to comment
Share on other sites

I also used linear keyswitches - gateron reds. I made keycaps with a little flange, which then presses up against a 2mm thick plate containing the key holes (with felt on the bottom). This keeps the switches in place, and it also allows me to reduce the initial travel by adjusting the height of that plate.image.thumb.jpeg.6a1c1b8e9164c434c0ad92ab49b6349d.jpeg

  • Like 2
Link to comment
Share on other sites

2 hours ago, RatFace said:

I also used linear keyswitches - gateron reds. I made keycaps with a little flange, which then presses up against a 2mm thick plate containing the key holes (with felt on the bottom). This keeps the switches in place, and it also allows me to reduce the initial travel by adjusting the height of that plate.

 

That looks really sharp.   What do you use to read the matrix of buttons?

 

In our capstone lab, the kids have frequently gravitated to 16-to-1 analog mux chips because they're cheap, you can get them in handy dev board format, they can read analog or digital, and they're super-reliable.  They also eliminate the need for diodes in a button grid, and reduce the number of microcontroller pins needed to read them:  I need four selector pins for the mux, and one more for output to read 16 buttons, and to read for example 64 buttons I need 4+1+4 pins to enable each of four mux boards.

 

For a kit, it would be ideal because a hobbyist can just buy one on amazon, solder the thing to a pin header and solder that to the button circuit board and go.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...