I want to design a Virtual drum sticks. With a sensor attached to each one of the sticks. The stick

I'm moving this from the C++ section as this is more appropriate although, I'm looking, if possible, supporting this functionality using C++.
Please note that this is not an original idea, there are 2 Kickstarter projects about this but, I don't necessarily trust that they would be done to my standards as I have been a hardware/software developer my entire life. I'm just not familiar with the MetaMotionR or it's capabilities.

I want to design a Virtual drum sticks. With a sensor attached to each one of the sticks.
The stick module needs to be configured as BLE MIDI, with requires changing the UUID as well as setting of the GATT Characteristics.

Once this is accomplished, the iPad will see the device as a BT MIDI.

From there, I would need to create an application on each one of the stick modules that will detect impact and the force so that we know how hard has the stick hit the virtual drum or cymbal.

In order to determine if we have hit a virtual cymbal or a drum, we need to determine at the time of impact (using the accelerometer), the magnetic orientation of the module on the stick as well as the incline with respect to the horizontal pane.

Will all of this going on, we would also need a separate interface, SPI or I2C to receive data via a serial port in order to debug.

Does anyone know if it's possible meet all this requirements?



  • The GATT services / characteristics cannot be modified with the stock firmware.  

    MetaMotionR boards come with a 6-axis IMU and magnetometer.  You will have to analyze the data to characterize strikes and orientation.

    What exactly are you debugging?  The boards are simply sensor boards that you command when to start and stop collecting data.
  • Hi Eric,
    I wanted to build the logic and conversion to MIDI logic directly into the board. That's why the debugging need.

    From what I'm reading, I would need an intermediate device to process and convert the signals to midi and forward them to iOS. That would be a big deterrent as I would need 2 BLE devices in the intermediate board. One to stream in the data from multiple MetaMotuon and one as a BLE MIDIbtoninterface with iOS
  • You can attach a 4pin debug header to the back of the board.

    If you are writing your own firmware, you can have the board analyze and post process the data and advertise as a BLE midi device.  Alternatively, if you are writing your own companion app that pairs with the sticks (like how the FitBit pairs with a specific iOS or Android app), then you can stream the data directly to the iOS device and have the app convert the sensor data into your desired metrics.
  • Eric,

    Is there a basic guide or a basic firmware functionality available as a base that does not include whatever information that you are protecting?
  • You can reference this pdf though it is almost 3 years old.

    MbientLab does not support custom firmware however we have no issues with enthusiasts building their own.  If you need or want custom firmware support, you can contact MbientLab directly about a support contract.
  • thanks Eric,

    the main thing for me would be to have access to a boot loader. I can take it from there.
    Is it possible to have that? so that I don't have to use a programmer like a jtag?
  • Eric,

    Read the documentation from Segger.

    I'm wondering if there is a way to burn the Arduino IDE using JLink. That way I can use sensor fusion without having to do all the calculations manually.
  • edited July 2017
    No, MbientLab does not publicly distribute the bootloader.  Contact them directly regarding custom firmware support.

    What is your end goal with the sticks?  Are you intending to use them with an existing music creator app like Garage Band or are you building your own companion app a la the FitBit app + wristband?
  • Eric,

    The end goal is to have 2 drumsticks and one foot pedal. They will individually connect to an iOS device as an independent BLE MIDI. Metamotion will be capable of detecting what MIDI note is to be sent to the HOST application. I have made a prototype using an Arduino 101 and it works.

    What I have just proposed is a much cleaner approach than having an iOS app collect and analyze the data from the different MetaMotion and send the notes using MIDI Out using MIDI Core or Virtual MIDI to Garage Band.

    From my research, the MetaMotionR uses the Nordic 52XXX which is similar to the Adafruit LE. It should be fairly easy to modify their Arduino Code and Gyro/Acc libraries to work with the MetaMotion.


    J-Link is the recommended method if you want to develop your own firmware.  If you don't have one, the nRF52 DK is the development platform from Nordic that is compatible -- and has a built in J-Link debugger.

    We do not follow arduino developments but there might be something available.  We would not recommend attempting firmware development without an interactive debugger such as a J-Link.

    Nordic provides a lot of sample code for the nRF52 -- you may or may not need to purchase the nRF52 DK to access it.

    All board specific details for the MetaMotion are detailed in the datasheet.
This discussion has been closed.