I'm currently working on a school project inspired by these software and device.

Drums anywhere: https://www.youtube.com/watch?v=8PRBx5o15-A&t=0s

Mogees: https://www.youtube.com/watch?v=vUzQQUpf4C8

I found out about the input device, and kind of get the idea on how it works. I can do a little bit of coding in python, javascript and C# (limited in unity3d experience)

The way I see it is that the software should be able to capture and locate location of the vibration captured by the mics. But how would you capture the and locate the vibration, is what I don't know how.

What kind of code do I have to type?

Where would I look to come up with the algorithm?

Or how should I approach this?


Welcome to the bewildering world of signal processing and embedded systems. Enjoy your stay.

Vibration detection could be done in a variety of ways. In this particular instance, it's done with mics. Here's a rough sketch as to how:

You have an array of mics. An array in this case is an arbitrary physical arrangement. Each mic has a range of detection both in terms of distance and in terms of frequency. Frequency determines the perceived pitch of a given sound. More on this later.

You smack the mic containing surface with something like a hand or a mallet or whatever. This generates sound waves which travel through the material as well as the surrounding air. By determining the difference in pitch and loudness, an approximate location can be determined. The more finely tuned the mics are and the more of them there are, the better the approximation.

You then have a simulated instrument surface in the software. The mic(s) measures the loudness and the pitch and transmits this to the computer which then maps that input onto the virtual space of the instrument. Once it figures out where on the virtual instrument the input is registering, it will play the appropriate sound. It can also figuring out additional information for better precision, reflected waves or additional mics can be used. Specifics will vary by algorithm and in the case of DrumsAnywhere, that algorithm is proprietary.

In terms of general algorithms, you'll want to look up audio processing algorithms, such as the Fast Fourier Transform and Wavelet Transformations. There's a fair amount of math involved including differential equations and linear algebra if you really want to understand the deep guts of the math.

Python or Matlab are ideal languages for this sort of tinkering. Python with numpy and scipy will serve effectively. Matlab costs a decent amount but has all manner of signal processing toolkits.

  • Looks like they're using a single transducer for Drums Anywhere. Sep 15 '16 at 2:24
  • that sounds complicated, if I want to learn more about signal processing and embedded system, especially the algorithms that needs to be used such as the Fast Fourier Transform and Wavelet Transformations you mentioned, are there any recommendations on reading materials I can start with? Or do I just need to learn the basic functions of the numpy and scipy and work with the Fourier Transform capability of numpy? are there any tutorials I can follow to understand better the practical aspects of the algorithm and the said python package?
    – ColdDrip
    Sep 15 '16 at 4:05
  • It happens I can download a licensed matlab from the uni portal. I'll look into matlab, but I'm still curious about the depth of understanding that I needed to work on this project, recommendations would be highly appreciated. thank you
    – ColdDrip
    Sep 15 '16 at 4:14

Search for phased array acoustics... this problem occurs in sonar all the time. There is a nice book by Waite called sonar for the practicing engineer.

If this project is for one class, you will need to simplify the approach. This could be a good 2 year masters project.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.