Close
0%
0%

Digibone

A digital instrument with all the flare of a trombone, with the power and flexibility of an MIDI instrument

Similar projects worth following
This project aims to create a Digital musical Instrument with a similar feel to (and to an extent, look of) a trombone.
In essence the build will be a MIDI controller will all the computing done on-board making it a standalone instrument.

The plan for this project can be broken down into three main parts: the input controller, the midi synth and the output.

The Input Controller

The Input Controller aims to mimic the input of a trombone, reading the combination of breath input and slide position and generating a MIDI output for the synthesizer of the project.

To achieve this an ultrasonic sensor will be used to give a slide-like input, an air pressure sensor to interpret the note on/note off state, and an Arduino Pro Micro to calculate and output the MIDI output.

MIDI Synth

This part of the project will take the MIDI input and process it into an actual sound.

The plan is to use FluidSynth to handle this processing. At the moment it is running nicely on an Android phone, however this will be transferred to a headless Raspberry Pi on the near future.

Output

Nice and simple - an amplifier to make things loud!

Currently the project is running a 5v Amplifier connected to a small car Speaker.

The amp running at 5v is ideal for the project, as it allows the amp and synth unit to be powered from a 5v source; in this instance a large USB power bank with two USB ports for charging devices.

***Unfortunately due to a change in work patterns has prevented me from getting a video up of the working example, which is currently all mounted to my yellow plastic Trombone for demo purposes.

I aim to get a video up before the week is out!***

  • 1 × Raspberry Pi To run the software and output audio
  • 1 × Arduino Pro Micro To read all sensor input from the hardware and pass commands to the Pi
  • 1 × Justboom Amp/Dac To convert the output from the Pi into audio for the speaker
  • 1 × Speaker To play dem glorious tones!
  • 1 × Rotary Encoder to allow for adjusting range of notes

View all 10 components

  • Construction | Slide parts ordered

    Craig Hissett04/04/2019 at 13:47 0 comments

    I've just put an order in for the following lengths of 20x20 aluminium extrusion:

    500mm x 2

    100mm x 4

    This will give me the parts I need to:

    • Build my slide
    • Mount my Arduino Pro Micro
    • Mount my Air Pressure Sensor
    • Mount my encoder for pitch changes

    Once the slide is built I should have a fully working slide-based MIDI controller :-)

    Following that it will be the construction of the back frame.

    I am contemplating changing the frame from a simple 2D section to a 3D box section, allowing me to mount a forward facing speaker for a more trombone-like output. 

    I could always add a secondary speaker at the back of the frame behind the main speaker for some interesting chorus-like effects or stereo output (playing harmonies, stereo delay etc).

  • Dimensions

    Craig Hissett04/01/2019 at 16:33 1 comment

    I've put a bit of thought into the pieces I'll need to build a suitable frame out of aluminium extrusion.

    It'll look cool, plus give me a nice, easy to assemble/adjust frame. It'll be nice to use the channels to run cables too. I've decided to target 15mm x 15mm extrusion as it's small enough to hold comfortably without being too flimsy.

    Dimensions based on 15mm material

    Slide Section calculations
    400mm - slide space (360mm travel [60mm between positions], +40mm for tolerance? Can be adjusted with another inserted piece?
    +15mm - for the 'water key' brace
    +15mm - for handle
    +50mm - for mouthpiece area

    Top Section calculations
    200mm - to form the shoulder mount.
    +15mm - for top bar
    +15mm - for brace bar

    Parts to order
    480mm bar x 2
    230mm bar x 2
    100mm bar x 4

    All in all it'll give me an instrument length of  ~ 74cm once the two half pieces are joined together - nice and small, but enough space to mount everything and get a decent slide area.

    Now i just need to find a cheap supplier of 15x15 extrusion :)

  • Ultrasonic Slide | Test setup

    Craig Hissett03/31/2019 at 00:10 0 comments

    Tonight I've put together a little test setup on a breadboard, consisting of an Arduino Pro Micro, an ultrasonic sensor, and a button ( to act as the air pressure sensor).

    First step was to get it spitting out data to the serial window; using the NewPing library I was able to get it firing out the distance measured in cm in no time.

    Next step was to incorporate the MIDI code, and sure enough it started to fire MIDI data out.

    Next i need to tidy up the code (using an if statement for checking the button/air pressure sensor in the future, cleaning up midi sending to only send one value and to silence the previous one).

    Finally I need to write some mapping to take the slide measurements and determine what should be played.

    The note that should be played on the very centre of the slide length (4th position at the 15cm mark) will be the note, bang on in the centre. Either side of that note the slide postion will determine what level of pitchbend should be applied to achieve the note for that position. 

  • Slide Mechanism Decisions

    Craig Hissett03/26/2019 at 13:48 1 comment

    Just a quick think-out-loud about how to read the slide positions for my pitch bending shenanigans.

    I'm pretty much set on a slide frame with a freely moving handle inside. 30cm of travel would be great, as it would give me the following positions:

    1st position - 0cm

    2nd - 5cm

    3rd - 10cm

    4th - 15cm

    5th - 20cm

    6th - 25cm

    7th - 30cm

    It's just under half the size or a normal tenor trombone length, but it will be perfect for the compact build I am after :)

    So far, I have two options for tracking positions on the slide:

    1) encoder, belt & pulley

    I like this idea; encoder at one end, handle connected to the belt to rotate the encoder. Would be easily enclosed, plus end switches at position 1 & 7 would help calibrate it.

    2) Ultrasonic sensor

    Fixed at the top, offset from the handle. The handle would have a small 'paddle' opposite the sensor.

    Care would need to be taken to not have the hand on the handle affecting readings. This would make it like a shoulder mounted Theremin. I like theremins, ha ha ha.

    I'm open to more suggestions :-)

  • Pitchbending Madness

    Craig Hissett03/24/2019 at 01:37 0 comments

    Just a quick note-to-self to check out this discussion regarding pitchbending:

    https://forum.arduino.cc/index.php?topic=457971.0

    On my slide I am aiming to have 7 positions, giving me 7 definitive semitones in each range. Ideally I'd need to implement pitch bending between those semitones to give that trombone feel.

    I thought pitchbending would be limited to a semitone either side, but apparently may be possible to bend much further.

    If this is true, and it's possible to perhaps reach three semitones either side of a note, I could use one semitone per range (the one on the 4th position  middle of the slide) and then use the slide to determine the amount of bend on the note.

    Yaaay

  • Fresh Ideas for 2019

    Craig Hissett03/21/2019 at 01:01 0 comments

    I've been working on a few other Arduino/Pi/MIDI projects recently, such as my Guitar effects Pedal and a Drum Module, and it's given me a real spark to get all my music based projects finished.

    This one was really taking shape for the 2018 contest until changing jobs threw me off track a bit. I've now started to rethink this one and definitely reckon I can complete it after my other two projects are wrapped up.

    The Slide mechanism was always something I never figured out fully, but I think I have a plan for it. I want to build the frame out of aluminium extrusion (20x20 perhaps). Rather than having an extending slide I'll just have a handle on runners inside the frame, and use am encoder to track position. I'll have an endswitch at the fully open (7th position) and fully closed (1st position) for calibration,  and on powering on require the user to return the slide to the home position.

    I've done a fair bit of work using python on a Pi to simulate a midi device, so ideally I'd like to follow that pattern and connect all switches direct to the gpio of the Pi. For the analog stuff I have an analog Pi HAT which i could use to read the air pressure sensor and any pots that end up being used. 

  • Project Future

    Craig Hissett10/24/2018 at 20:23 0 comments

    The last few weeks have been a read whirlwind at work, starting a new role as a systems developer, undertaking a lot of training to support my new job plus working a silly amount of hours of overtime in order to support my old team following my move.

    This is all great news, however it culminated in me not getting this project up to standard for the Hackaday Prize round for musical instruments. I am absolutely gutted to have not been able to put something up to meet the criteria, as it's not too far away at all.

    Rather than give up on this project I'm going to keep plugging away at it, and instead of creating something to compare with a trombone I'm going to make it a more erganomc shape if that's the way the project takes me.

    Hopefully in a few weeks I'll have some time to put it all together.

    Cheers!

  • The Amp has arrived

    Craig Hissett08/16/2018 at 23:02 0 comments

    My 5v little amp was delivered today - good times!

    Tomorrow I'm going to give it a little test with a speaker and the phone to ensure it works.

    Folowing that phase I'm going to create a small shield for my Pro Micro.

    The shield will have the pressure sensor mounted directly to it, and will have headers for an ultrasonic sensor, and a few buttons. This will give me a nice tidy board to attach to my trombone and to start tweaking my code.

  • New Amp ordered

    Craig Hissett08/04/2018 at 14:26 0 comments

    While I'm toying with the idea of using the Android phone to process sounds I still want to retain output via a speaker.

    I've found a cheap one of EBay for around £7 that is powered by 5v that would be nice and easy to work with. It won't be any kind of decent audio quality, but it allows me to keep trying out my plans.

    I'm away on holiday next week so when I get back it will have arrived and I'll be able to have something assembled not long after i get back. Woop!

  • Android works!

    Craig Hissett08/03/2018 at 15:05 0 comments

    In the early hours of this morning I managed to get my hands on an old phone of mine; a Samsung Galaxy A3. It's a 2015 model, so not too dated, but the battery is pretty pants on it ha ha.

    Anyhow, I installed the FluidSynth app and found a little USB-OTG adaptor (i knew i had a bag of them somewhere!).

    I had a Pro Micro that I had stuck a 'test tone' script on (Playing a middle C for a second, every 3 seconds) and boom - it just worked.

    This is perfect for prototyping, as now i can use the phone to quickly test any progress on reading the Pro Micro scripts and interpreting the sensors.

    It would also serve as a great 'stunt double' for any Pi-based FluidSynth system while i put together any hardware.

    I'm also keeping my eyes peeled for a cheap 5v Amp for the project.

    Much cheaper than the Justboom Amp + DAC setup I have on the Pi at present, plus I'd be able to power the amp and the phone from a single 5v power source or a set of stepped up Li-Ion batteries.

    Using the phone instead of the Pi could be an absolute game-changer - a brand new handset can be bought for roughly the same price as a Pi these days, and they have all the features needed for this - touchscreen, headphone out, compatibly with software... All without needing to buy extra adaptors or HATs.

    Wowzers!

View all 26 project logs

  • 1
    Assemble Frame

    Coming Soon

  • 2
    Install slide sensors

    Coming Soon

  • 3
    Install buttons

    Coming Soon

View all 9 instructions

Enjoy this project?

Share

Discussions

uri.shani wrote 04/09/2018 at 04:11 point

Hey, looks exciting! You might wanna check https://learn.sparkfun.com/tutorials/hackers-in-residence---the-electricbone, they use a sound sensor and PD to get the base note.

  Are you sure? yes | no

Craig Hissett wrote 04/09/2018 at 08:51 point

Thank you so much for this - you've saved me weeks of head scratching there :-)

The sound sensor module looks great. I'll have to pick one up on pay day.

  Are you sure? yes | no

uri.shani wrote 04/09/2018 at 10:38 point

Sure, looks just the right fit for your project. I actually thought of going further with their design, but never really got to it.

  Are you sure? yes | no

Craig Hissett wrote 04/09/2018 at 15:23 point

Yeah the design is great. When i thought my project out in my head it was very similar to what they've done; arduino reading the sensor input, and the Pi pricessing the MIDI. I'm hoping to have mine look more trombone-like, so i can stash an amp, DAC and speaker over the shoulder.

If you ever fancy working on it feel free to jump on board with my project :-)

  Are you sure? yes | no

Blecky wrote 03/29/2018 at 04:51 point

Woo, we are Diva Plavalaguna Achievement buddies!

  Are you sure? yes | no

Craig Hissett wrote 03/29/2018 at 05:22 point

Yay! thanks for following my DigiBone project. The Litar is looking awesome!

  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