Close
0%
0%

Concertina MIDI Controller

A Bluetooth LE MIDI controller in the shape of an English concertina

Similar projects worth following
The English concertina, invented in 1829 by Sir Charles Wheatstone, is a fully chromatic free-reed instrument. This is a 56-key MIDI controller with the same arrangement of keys and bellows that outputs MIDI over Bluetooth LE.

Many years ago, I took up playing the English concertina because I wanted to be able to play sea shanties. I quickly learned that the concertina is quite a versatile instrument with a much richer history than I had imagined. First, it was invented by a hacker, Sir Charles Wheatstone, way back in 1829. (Sir Charles did a lot of interesting stuff, including telegraphy, crypto, the stereoscope and developing the Wheatstone bridge.) Second, it was originally used for playing virtuoso solos and as a chamber music instrument with an orchestra before it was widely used for popular music in the late 1800s and then again during the folk music revival in the 1960s. But, whatever. I learned to play the concertina, not the piano.

Since I can already play one, when I decided I'd like something to control a synthesizer, the obvious form factor was the concertina. Trouble is, there are none very few around. If I wanted one, I'd have to design and build it.

The result is what you see here. It has 56 buttons, 28 on each side. The buttons operate Cherry MX switches (the non-clicky kind) that I've modified by adding an internal diode to each one. They are organized as one big 4 x 14 matrix that I can scan with a microcontroller and a pair of shift registers. The microcontroller is an Adafruit Bluefeather 32u4 which comes with an on-board Bluetooth LE radio and, to make life super simple, a MIDI-over-Bluetooth-LE library. To set the MIDI "Expression" (volume), there's a differential pressure sensor that measures the pressure difference between inside and outside of the bellows.

The bulk of the physical structure is made from 3mm Baltic birch plywood. I designed the parts in Adobe Illustrator and laser cut them. The fancy wood on the outside is eighth-inch maple and maple plywood that has been engraved using the laser cutter. The buttons are made of Delrin rods, so they slip nicely when pushed. The bellows is made from pasteboard, thin type 10 Tyvek, and ripstop nylon. The three layers were laser-cut and then glued together with PVA glue.

At this point the concertina works quite well (video on Vimeo) -- it's certainly playable, and the feel of the buttons is good. The bellows is too springy, though, because the cardboard bumps into itself at the peaks and and is stretched at the valleys when the bellows is completely compressed. Also, I'm not keen on the red ripstop I used; something a bit more toned down would look better. So, my next step is redesigning the bellows.

Concertina PCB L.pdf

Schematic for left PCB

Adobe Portable Document Format - 99.63 kB - 08/14/2019 at 19:41

Preview
Download

Concertina PCB R.pdf

Schematic for right PCB

Adobe Portable Document Format - 83.81 kB - 08/14/2019 at 19:41

Preview
Download

Concertina Kbd Mux.pdf

Schematic of keyboard MUX

Adobe Portable Document Format - 68.11 kB - 08/14/2019 at 16:49

Preview
Download

  • New Bellows, New Seals

    Dave Ehnebuske08/28/2019 at 04:43 0 comments

    I slightly redesigned the bellows to eliminate most of the pasteboard at the hinge points -- both mountains and valleys -- to decrease the overall springiness. I also reworked the way the bellows attaches to the two keyboard assemblies and added a beeswax-filled gasket to cut down on air leaks.

    The result is a big improvement. The whole concertina now rests comfortably in a more-or-less closed position. It's still a bit springier than a traditional bellows, but not horribly so. Although there are clearly some I missed, going after leaks really helped with two things: 1) how responsive the MIDI "expression" is to bellows pressure and 2) how long I can sustain a note (or chord). More work in that area would be good, for sure.

    I'm still fiddling with the parameters for the Bézier curve that maps pressure to MIDI expression. It's surprising how much it changes how the concertina feels when playing it.

    A really good set of improvements overall.

  • Cubic Bézier​ Curves

    Dave Ehnebuske08/19/2019 at 18:54 0 comments

    Before embarking on a redesign of the bellows to make it less springy, I decided to fiddle with the function that translates bellows pressure into MIDI expression. I'd been using a function of the form expression = a*ln(pressure) + b* pressure + c for no good reason other than that for suitable values of a and b it rises quickly and then flattens out which more or less is what I think a traditional concertina feels like it does. But after playing it for a while, I decided I didn't like how it jumped in volume at low bellows pressures. A traditional concertina requires a minimum pressure to do anything at all and then rises slowly for a bit and then quickly until finally flattening out again.

    In casting about for a a curve that looks like that, I sketched it out in Adobe Illustrator. Which got me to thinking, why not use the same kind of curve used in vector graphics programs and standards: cubic Bézier curves. A cubic Bézier curve is a continuous vector-valued function of t where t is a real number in the range 0 to 1. The function's values sweep out a curve between two points called "anchor points" as t goes from 0 to 1. The shape of the curve between the anchor points is controlled by two other points called "control points." Because of this, not all Bézier curves are functions where y = f(x) -- which is what I need -- but many are, and it's easy and natural to control the the shape of the curve if you've ever used a vector graphics program like Illustrator or Inkscape.


    So, I implemented a change that calculates a pressure-to-expression lookup table using a cubic Bézier curve. The table is calculated during initialization and used at runtime. The feel is much improved and it's easy to fine tune how it behaves. Plus designing and implementing this change gave me a really good reason to look into the nuts and bolts of Bézier curves, which I've used in Illustrator and SVGs for years but never really studied.

View all 2 project logs

Enjoy this project?

Share

Discussions

Aeva Palecek wrote 08/19/2019 at 17:29 point

what is the software you're using for sound synthesis in the video?

  Are you sure? yes | no

Dave Ehnebuske wrote 08/20/2019 at 16:13 point

For testing purposes I'm using the Android app Fluidsynth running on my phone. My plan is to build a Pi-based dedicated box, probably also using Fluidsynth, which, in addition to being a good synth, has a nice API so I can control it with a custom script.

  Are you sure? yes | no

Adam Quantrill wrote 08/19/2019 at 15:36 point

Not wishing to be too pedantic, but isn't this a Melodion? 

Looks good, though! 

  Are you sure? yes | no

Dave Ehnebuske wrote 08/20/2019 at 16:10 point

No, it's an English concertina pattern. A melodeon (see: https://en.wikipedia.org/wiki/Diatonic_button_accordion) is yet another of the huge family of free-reed squeezeboxes. It's diatonic and its two keyboards are arranged quite differently, both from each other and from a concertina.

  Are you sure? yes | no

Joseph Kesselman wrote 08/16/2019 at 02:23 point

I've had a sketch for a midi Anglo hanging fire for years, mostly because I set myself the goal of measuring press/draw directly for an "infinitely efficient bellows". Full props to you for actually building something, and making it quite pretty while you were at it. (I love the mock scrimshaw.)

  Are you sure? yes | no

Dave Ehnebuske wrote 08/16/2019 at 03:38 point

Glad you liked it. As usual with a complicated build, overcoming the myriad design issues -- including making it pretty -- was a great deal of fun.

As for measuring the press/draw, as I rework the bellows I'm going to focus on increasing the range of possible pressures and bellows efficiency by making sure there are as few leaks as possible. Since it doesn't need moving air to play and the differential pressure sensor doesn't pass air between its ports, I hope the system ends up pretty close to "infinitely efficient"  -- that it amounts to squeezing or stretching an all-but-fixed volume of air. We'll see.

  Are you sure? yes | no

Dave Ehnebuske wrote 08/15/2019 at 23:01 point

Just added a short, low-res video on Vimeo.

  Are you sure? yes | no

Dan Maloney wrote 08/15/2019 at 20:28 point

This looks fantastic! I'd love to write this up for the blog. Any chance you have a video of you playing it? That would be a great addition.

  Are you sure? yes | no

Dave Ehnebuske wrote 08/16/2019 at 15:24 point

Just added a short, low-res video on Vimeo.

  Are you sure? yes | no

Dan Maloney wrote 08/17/2019 at 21:16 point

Nicely done, just wrote this up and it should post soon. Thanks!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates