Halilit Robot

December 25, 2017 RBD Haifa Arduino, MUSIC, Others, Projects

Our goal is to play the Halilit (Recorder) using a “Robot”, that is controlled by an Arduino.

We supply tab files via SD card

Code:

The code is in C for Arduino.

Arduino source code and midi2halilit tabs script.

Tabs for example.

Project design & summary

Goals:

    • Robot should play the Halilit without any human help.
    • Read tab files from SD card.
    • Easy to write Tab files.
    • Convert MIDI files (for a Recorder) to Arduino Tabs.
    • Prepare a cool musical platform for further projects.

Description:

To play a recorder, need to press the holes to specify a note, and blow air to make the sound.

    • Pressing holes:
    • To emulate the fingers, a Solenoid was used. Solenoids are a great way to induce linear motion for pushing and pulling.
        • 8 Solenoids are needed – one for each hole.
        • Actually, more are needed, since some holes can be half close, to create more sounds.
        • In this project, I implemented only fully closed holes
      • The Solenoid needs 12V and at least 2A to push hard. Arduino can’t supply this much of power, and an external power and electrical switch is needed (for push and pull commands).
      • I used a 3 cells LIPO battery and transisors to do the switching.
      • Next version of this robot (Due Date: Jan. 15 , 2018), will include 12V power supply instead.
    • Air flow:
      • To emulate a mouth that blows air, an Air Compressor was used.
      • The air compressor is always on, so we need another device that knows how to start and stop the air flow.
      • RBD lab supplied me an air flow valve that can be controlled by an Arduino
      • This Valve works in 24V only. so a 24V wall power supply is needed.

How to play?

To play a song, we need tabs. Tabs is a file that describes which notes are going to be played, at which sequence and period.

I designed a format that will be easy to write and understand by a human and much easier to read in realtime by the Arduino.

Each line in the tab file represents a beat, and what should be played in that beat

The user chooses which tab file to play that are available in the SD card.

The Arduino is parsing the tab file and plays it.

Another option to generate tabs file, is by converting a MIDI file using a python script I wrote.

Demo:

Future projects:

  • Hear & recognize a song using Cloud services, download the right MIDI file and play automatically.
  • Improvise music over a given key or chord progression
  • Currently there are many musical projects in RBD lab. A cool project can be running all instruments together and make a robotic band.

Contact Me:

Gil Rockah: grock8@gmail.com