Close
0%
0%

The Airdrum - Make music while moving

Auditive and visual feedback with minimal effort in a modular package for everyone!

Public Chat
Similar projects worth following
The Airdrum is a musical instrument that can be played by moving objects above the panels. These panels contain IR-distance sensors and colored LEDs for visual feedback. Panels with speakers can be added for auditive feedback.

The Airdrum is designed by two Dutch engineering students and is originally intended to be played by people with multiple severe disabilities.
The Airdrum will improve the interactivity between musical therapists and their clients by not having to hold their hands/arms to play difficult instruments.
Let them enjoy, hear & see their own movement!

The project is ongoing for quite some time.
It has been built and redesigned many times with numerous learnings in the process.
V2.0 will be versatile, modular, affordable and upgradable.

Meet The Airdrum V2 !

The new version is fully modular, has a greater range, has faster response time and can be built into a full circel :)

Playing a MIDI file on Rpi3 with the speaker modules

This video demonstrates the speaker functionality with playing a song from a midi file on the Raspberry pi using Fluidsynth. (The hand movement is just for fun) 

The Airdrum is powered by a power supply for demonstration purposes. It shows that we are running the system at 15.5 Volt with a consumption of +-0.6 Amps

Video of V1 for reference



(Depreciated version. V2 is being engineered)


Why?

We talked with therapists and health care institutions during our research. These Health care institutions (which facilitate housing, learning opportunities and day care for severe disabled people) often encounter the difficulties of communicating with their clients. The institutions experienced that making music together is a great way of communicating and this is why many institutions offer music therapy. These music therapists say that clients are evidently learning and, more importantly, having fun while making music!
Unfortunately, clients are not always able to play traditional instruments because of their mental and physical disabilities. 


Contributions to society

According to music therapists, the main goal is having fun. It is proven that people learn more when having fun. When playing an instrument, and particularly the Airdrum, clients can share emotions, practicing their motor skills end learn to listen and watch. All of these benefits are possible by having an instrument that is able to produce auditve and visual feedback with minimal input of the user.


Goals

We have four goals concerning the development:

  • Accessible

We want everybody to play and interact with the Airdrum. Varying from people who are to experience their first musical device to the professionals, who can use the airdrum as input to their compositions.

  • Affordable

While exploring the various specialized instruments for the above mentioned audience, we found out that these are very expensive. Often even more expensive than professional electronic or acoustic instruments. We want the Airdrum to be played for a broad audience so price must be a concern.

  • Adjustable

We want the Airdrum to be as versatile as can be. It must be possible to choose (custom) sounds and lights to play.

  • Modular

Everybody can built the amount of panels they need / want.
With the minimum at 2 panels; Rpi motherboard and a batterypack panel.


Plans for further improvement

With accessibility, affordability, adjustability and modularity in mind, we want to implement the following ideas for the next build logs:

  • Create a working prototype
  • Built in synthesizer
  • Connecting the prototype with a smartphone or tablet
  • Designing an app
  • MIDI possibilities 


High-level overview of The Airdrum V2.0

We went full circle in the version2.0 
As seen in the picture below, users need a minimum of 2 panels and 2 speaker modules to get a fully functionable and portable Airdrum. (more details will be given in the logs)

All panels will include a Buck converter....

Read more »

Adobe Portable Document Format - 14.55 kB - 08/06/2019 at 18:27

Preview
Download

IR_TX_ledPositioningBlock.stl

This part is to keep the Tx IR LED's in place to make soldering easier

Standard Tesselated Geometry - 142.66 kB - 08/04/2019 at 23:55

Download

Airdrum_base_module.stl

The base module

Standard Tesselated Geometry - 237.39 kB - 08/04/2019 at 23:55

Download

Speaker_module_top_solo.stl

A single speaker top

Standard Tesselated Geometry - 43.25 kB - 08/04/2019 at 23:55

Download

IO_panel.stl

Panel for the base module for power switch, charging port and battery indicator

Standard Tesselated Geometry - 65.90 kB - 08/04/2019 at 23:55

Download

View all 9 files

  • 1 × Raspberry Pi 3 1 per build
  • 1 × Arduino pro mini 328p 3.3V 8mHz 1 per panel
  • 1 × 4S BMS 1 per battery pack panel
  • 1 × CJMCU-832 PAM8302 2.5W Single Channel Class D Audio Power Amplifier Development Board 2 per build
  • 1 × Visaton BF32 1.3 inchMini-speaker 2 W 8 Ω 2 per build

View all 16 components

  • From interpreted to compiled software

    alessandro verdiesen08/22/2019 at 15:25 0 comments

    We discovered that our software is to slow when its interpreted by the Raspberry pi in Python. We have some reasons to rewrite our program in C. 

    Request data from panels (arduino's)

    The recent version uses python scripts to get the added or removed panels (i2c adresses) in a loop by using the i2cdetect library. This library is written in C.

    Music generation

    Sonic Pi is used to create the sound currently. Sonic Pi is a very cool application but it's quite a overkill for The Airdrum. That is why we've chosen to continue with Fluidsynth. Fluidsynth has great API documentation and is able to generate sound from MIDI like objects in C.

    http://www.fluidsynth.org/api/index.html

    Fluidsynth is great to be used by The Airdrum when we are adding the synthesizer functionality. It is also written in C. 

    It will be quite some work to combine both libraries into a single project, but it seems that this will be the best choice to create The Airdrum as we have in mind. This will enable The Airdrum to reach the speed that is needed to follow the end-users movement.

    https://github.com/FluidSynth/fluidsynth

    https://github.com/mozilla-b2g/i2c-tools

  • Debugging, patching and making the dream work!

    alessandro verdiesen08/18/2019 at 16:17 0 comments

    We're working hard to build The Airdrum as we have in mind.
    The project is going in the right direction (so far..)

    We're Learning every second and continuing, even with the immense challanges combining the software with the hardware. 

    As all engineers know.. Dreams are not built in a day. 

    We simply like to challenge ourselves :)


    Testbench of the Airdrum: 

    • 4 Ardruino pro mini's as dummy panels, testing the speed of the i2c readings.
    • 2 V1.0 panels as distance sensor and visual RGB feedback
    • A simple speaker for the auditive feedback


    Things we have acomplished so far..

    • We are able to generate random adresses on the 328P MCU's so that all the panel MCU's have an unique i2c adress while the Rpi is booting up.
    • Get the analog value from the IR distance sensor of all connected panels in a loop from the Rpi (everything is rewritten in C for a massive speed improvement)
    • Generate sound from a MIDI variable array in software using Fluidsynth synthesizer with variable soundfonts


    Things to work on..

    • play a tone with the IR distance sensor as trigger
    • do something with the distance in the tone to play (synthesize the sound with manual manipulation)
    • Set the panel colors from the Rpi
    • Combining all the parts
    • Cleaning the code for faster IR distance sensor value readings
    • Start the IR transmitting LED interrupt for the blinking IR transmitter when the i2c interrupt occurs. (saving power)

  • Quick demonstration of our prototype

    Luuk van Kuijk08/06/2019 at 18:16 0 comments

    We finally can show you a short demo of our prototype. This version is fully modular, has a greater range, has faster response time and can be built into a full circle. 

  • Input and Output panel for the base module

    alessandro verdiesen08/05/2019 at 01:15 0 comments

    Powering, charging and checking the battery of The Airdrum!

    We've succesfully designed and printed a panel for powering and charging The Airdrum. 

    With the a battery voltage indicator we're also able to see the percentage of the battery module. 

  • Decrypting a thoughtful idea into tangible reality

    alessandro verdiesen08/01/2019 at 12:39 0 comments

    We have started a Github page! 

    Since this project is in high pased development at the time of writing,  the repo is constantly being changed. 

    Don't hesitate to take a look if you're interested in the software :)

    https://github.com/alehanderoo/Airdrum

    We're working hard to pull this off!

  • Melting plastic!

    alessandro verdiesen08/01/2019 at 12:27 0 comments

    We have started printing the panel modules

    With the arrival of a new rol of filament it's time to start printing.

    Drastic measures are taken to optimize the filament guidance

    Teamwork makes the dream work!

  • Sound from The Airdrum

    alessandro verdiesen07/25/2019 at 10:57 0 comments

    The tiny speakers also arrived. These Visaton BF 32 3.2 cm 2 W 8 Ω speakers are perfect for the prototype because they can be fitted nicely in the case. They have a Powerful neodym drive and so be powerful enough to be driven by a small amplifier.

    For the prototype we decided to drive the speakers with a mono amplifier. These modules are widely used and produce acceptable sound quality for this prototype. 

    Picture of the 3D printed casing with wiring and electronics. 

    The speaker module is half the size of the normal base module. The module can be powered from both sides and will pass the i2c data to the other side(connector). This enables the end user to place a speaker module in between two hand detecting modules, a couple of speaker modules in series or even a speaker module alternately to other modules. That's the beauty of a modular design :)

    The picture below shows all the needed components fitted nicely in the module.

    Some of the parts needed protection from touching other components.  The Buck converter and amplifier are therefore encased with heatshrink.

  • The Airdrum sensor panel

    alessandro verdiesen07/25/2019 at 00:59 0 comments

    The board

    After designing the schematics in LTspice we designed the pcb in Eagle. With the modular design in mind we decided to go for a PCB with it’s own processor and Buck converter.

    The Pro mini is placed to make the panels individually addressable for data transfer to the master synthesizer. It will drive the IR-Tx LEDs, drive the WS1228B digital RGB LEDs and read the analog input coming from the analog detection sensor.

    The Buck converter is placed to reduce the current through the 16V power lines of the panel.

    The PCB is 10 degrees in width to be able to fit in the casing and the RGB LEDs are placed like the previous version.

    Placing all the components and reflowing the solder paste.

    First 4 prototypes

    Decoupling capacitor

    When coupling or decoupling a panel to The Aidrum the power lines will get voltage spikes. To protect the circuits for these electrical transients we have placed a 22 µF tantalum capacitor over the RAW and GND lines of the panel. This capacitor wasn't placed on the board we ordered, but it is placed in the uploaded V2.1 schematics.

    16V power line

    Each slave panel (No Rpi3) uses 100mA when the Tx IR Leds are sending. The panel with the RPi3 included draws around 300mA. For this prototype the decision has been made to order PCB’s with a copper thickness of 1oz/ft2 to reduce the cost per panel.

    Even in a single battery, almost full circle configuration (one missing panel in the full circle, therefore making the longest battery-panel trail) the width of the RAW traces are enough to power all panels. This is excluding all the magnetic connectors and USB-C converters in between the panels. To reduce the voltage drop in the power lines we have included an extra wire beneath the PCB.

  • Creating the case

    Luuk van Kuijk07/24/2019 at 13:43 0 comments

    For the initial version, we planned to use one single case for six panels. Because we were reliant on 3D-printing for prototyping, we had to cut the case in pieces due to the dimensions of the printer bed. During this development we came up with the idea of making the Airdrum a modular concept. For the current version we opted to redraw the case from the ground up. We started using Fusion 360 instead of SolidWorks. 

    We’ve changed the angle to 12 degrees. With this angle we can use 30 (!) panels in one circle, eventually with additional speaker panels. The inner radius is 450 mm. This is about an arm length.

    The concept

    One pcb can be placed in the panel. On top of this pcb, a piece of glass can be placed. As you can possibly see, the case lacks a big part of the back. This is because we want to easily access the raspberry pi and arduino or battery pack during prototyping. 

    Holes

    On the sides there are two holes. These will contain the magnetic ports. The six square cavities are for small magnets so the two panels will easily snap together. Furthermore, on the left side are two half circles. These fit in the two gaps on the right side. This mechanism prevents the panels from sliding vertically. 

    3D-print

    Below you can see the 3D-printed version of the case:

    Here is a video of the how the panels will snap together with magnets:

    This concludes this log about the case. We’ll try to update regularly. Thank you very much for liking and following the Airdrum. We can’t wait to show you a prototype.   

  • Detection

    alessandro verdiesen07/16/2019 at 23:00 0 comments

    Hand-detection

    The sensor is realized with the reflection of infrared light photons. The sensor contains infrared transmitting and infrared receiving LEDs. These will be named as sender and receiver from now on.

    There are serval things that are being kept in mind during the development of the sensors:

    • The sensor must not interfere with other sensors. This means that the light from the adjacent sensor should not be picked up with reflection from the next plane.
    • The sensor can detect objects to approximately 30cm (≈ 11,8 inch).
    • The signal has an analogue output. The sensor will be designed so expansion in later upgrades are possible.

    The circuit is designed so it can operate at 5 Volts because the hardware (Arduino, Raspberry and amplifier) also operate at this voltage.


    Transmitter

    For the transmitting LEDs, it is important that they all have the same transmitting power. We decided that LEDs will flash with a frequency of around 7 kHz. With this frequency, other sources (e.g. sunlight, 50Hz grid lighting) will not cause any interference. The LEDs have a wavelength of 940nm. The LEDs will be controlled with an interrupt on the Arduino board. 

    Receiver

    The receiver uses a quad opamp as main part. With reflection of the infrared light on a hand or object, a photodiode will conduct. This conductance is then used to create a voltage on the output of the first opamp.

    We used LT-spice to simulate the infrared light that is reflected on a hand or object. A photocoupler is used to simulate the transmitting and receiving part of the circuit. This is a diode and a transistor that can simulate the transfer of infrared photons. The number of photons transferred from the diode to the receiver ensures that the receiver is 'opened'. The photocoupler is indicated with U2 in the circuit. 

    M0 Input: 

    This first image shows the voltage of the simulated transmitter with distortion from other sources.

    The 50Hz grid distortion begins at 10ms. This is followed by a simulated object in from of the sensor. After 50ms the simulated sunlight comes in.

    M1 and M2:

    The photodiode starts conducting with incoming IR light. This conductance then will create a voltage on the output of the opamp. (Vout = -Iph * Rf)( non-inverting amplifier)

    The photodiode draws a certain current(uA) from the opamp. Because opamps have a very high input resistance, all of the current comes from the output. The amount of current, or in this situation infrared light intensity, will create a voltage. This voltage is then filtered for measurement later in the circuit.

    In order not to let the final stage clip too fast, two diodes are placed on the output. The voltage after these two diodes will not be higher than 1.4 Volt.

    M3 and M4: 

    Two high-pass filters are placed after the second stage for filtering sunlight. The filters are connected in series to become a second order RC filter.

    M5: 

    In this part of the circuit, the filtered signal is amplified in the positive side only. Because there is a diode in the feedback, the opamp will obstruct all negative voltages from the two high-pass filters. This is an inverted amplifier.

    M6: 

    The voltage measured at the M5 point is quite low. This ensures that the ADC in the Arduino won’t reach his full range. This is why we’ve added an amplifier at the end of the circuit. There’s also a low-pass filter in this amplifier. This filter will flatten the signal so that the analog output fluctuates less.


    M7 and M8: 

    Then the signal is filtered even further. In practice the measurement at point M6 still fluctuated too much with the movement of hands playing the Airdrum. Two low-pass filters are placed in series for the filtering of this signal.

    As the last stage, an opamp is used as a buffer. This is done because there’s one left in the quad configuration of the opamp and it also ensures a stable...

    Read more »

View all 11 project logs

  • 1
    Magnetic connectors

    1. Saw open the casing

    2. Break them open with a pair of pliers

    3. Remove the internal LED's in the data connector 

    4. Remove the LED on the power supply connector with a soldering iron

  • 2
    The PCB

    1. Append solder paste

    2. Place components, reflow the PCB and check connections with a multimeter (time consuming process)

    3. Solder Buck converter, the arduino and the IR LED's in place. (3Dprint the LED holder STL file and use that to get the LED's in the right position) 

    4. Solder 8 WS2812b RGB LED's in place 

  • 3
    Add power supply wire for voltage drop reduction

    To reduce the voltage drop we advice to add power supply wires on the bottom part of the panels. 

View all 6 instructions

Enjoy this project?

Share

Discussions

James Fowkes wrote 03/04/2020 at 09:30 point

Hi, I'm wondering how your IR sensing circuit compares to the distance sensors like the ones that Sharp make (e.g. the GP2Y0A41SK0F). Do you have an idea of the min/max distances you can measure?

  Are you sure? yes | no

alessandro verdiesen wrote 03/04/2020 at 10:56 point

The sensor circuit can measure my hand up to +- 50cm. It depends on the size and the material of the object (a black piece of paper reflects much less photons than a white piece of paper). 

The biggest advantage is the price difference. This sensors BOM is under 1  Euro. 

  Are you sure? yes | no

James Fowkes wrote 03/08/2020 at 21:10 point

Thank you, that's very helpful!

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

alessandro verdiesen wrote 05/14/2019 at 22:40 point

Thanks Kristin!
I appreciate your comment  :)
Updates on the final version will follow in the coming weeks (parts have to arrive)

  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