ECE497 Project Makeshift Drums
Our project will communicate with several accelerators to make music. These sensors will be attached by the user to everyday objects like books or a table top and the Beagle Bone Black will use the sensors' outputs to play sounds. In this way, a user can play the drums, bongos, maracas, et cetera without a drum kit or other bulky equipment.
So far we have the accelerometer interface and signal conditioning portions of the project completed--it can detect strikes and reports them to the console. We have the Node.js portion partially complete but we need to iron out some kinks with our code to make it interact correctly.
We still need to work on the web interface and to make it play sounds after a strike.
If you have hardware, consider Small Build, Big Execuition for ideas on the final packaging.
Give step by step instructions on how to install your project.
- Include your github path as a link like this to the read-only git site: https://github.com/MarkAYoder/gitLearn.
- Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
- Include a Makefile for you code.
- Include any additional packages installed via opkg.
- Include kernel mods.
- If there is extra hardware needed, include links to where it can be obtained.
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.
Here is where you brag about what your project can do.
Include a YouTube demo.
Theory of Operation
When the program first runs it initializes the accelerometer to sample at 100Hz with a range of +/-2g. Whenever a sample is collected, the accelerometer sends an interrupt signal to one of the BBB's GPIO pins. Our code then uses the I2C protocol to retrieve that sample and any others it has collected in the meantime. The accelerometer has a FIFO queue which will collect up to 32 samples in the even that the BBB does not service the interrupt before the next samples are collected.
The BBB then conditions the signal so it can ignore any offsets (such as those due to the force of gravity) or small changes, like noise of the device being rotated. By changing a few parameters of our conditioning algorithm we can change how strong a strike or shake must be before the device detects it. Next the sensor that reported the strike and the force of the strike itself are reported to the browser. The browser in turn plays a sound according to which sensor it was (which can be configured in the browser) and adjusts its volume with the force of the strike.
Accelerometer interface -- Will Elswick Signal conditioning -- Will Elswick Node.js addon -- James Savage Web browser interface -- James Savage Inspiration/sarcasm -- James Savage
Suggest addition things that could be done with this project.
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.