Giter Site home page Giter Site logo

drum_transcriber_asc's Introduction

Drum Transcriber

Drum Transcriber is an open source (with a public repository on git hub), internet-enabled musical development system which assists the user in transcribing and publishing personal drum compositions without any expensive or invasive equipment.

Detailed implementation can be accessed from Zoey Chen and William Cashman's blog posts.

Where This Came From

It was a hot summer afternoon, a girl was practicing drums in the music room all alone. The temperature kept climbing and the girl was soaking wet but she kept going. She swang slower and slower and her brain was turning off. Suddenly, a cool breeze came in. The girl woke up, she hits the drums hard and nice in an upbeat mood. “That is beautiful. Which music did you play?” A sweet voice came from her back, from the kind stranger who brought in the breeze - it was a girl her age with big eyes filled with joy. “Ugh…” she tries to remember but the feeling was gone, “it was a random sparkle and it is gone.” The end.

What if the drum girl had something that could record her performance? Would the story be totally different? Those two girls can happily share the music the drum girl played and listen to it over and over again!

This is where the idea of Drum Transcriber came from. An artefact that would save all the sparkles the music creator comes across when they are creating new music. An artefact that would connect people both friends and strangers through music. And that's why people care about this project.

New Features!

  • Drum hits detection
  • Drum notes graphical presentation
  • Interactive UI
  • Fast WiFi transmission

Example:

Here is an example of output music bar:

Render_Example

Installation

Physical requirements

  • ESP32-PICO-KIT (~$8)
  • Minisense 100 vibration sensor (horizontal) (~$5)
  • Jumper wires
  • Breadboard (optional)
  • USB-micro to x (x is the type of connector on your local machine) (optional, only if you want to see the printed results on your local machine)

Attach the sensor onto the counter hoop of the drum, then connect the sensor to ESP32-PICO-KIT's IO34 and GND pins using jumper wires.

Example set up:

Physical_Set_Up_Example

Software requirements

For Micro-controller (ESP32-PICO-KIT)

  • Download and install Arduino IDE from Arduino.cc.
  • Install the ESP32 add-on on Arduino IDE following this tutorial.
  • Upload the file in Transcriber folder to ESP32 using Arduino IDE.

With this part of code and the physcial set up, you will be able to see the hit detection on your local machine that is connected via cable to the ESP32. With the server set up we can see the generated notes on the server, which would be transmitted from the ESP32 to the server via WiFi (this step does not require the USB-micro to x cable). In the example here we used Serial_Plotter to present the hits graphically.

For Web Server

This project is intended to run on a single remote webserver, however, since the project is still in the early stages of development (when compared to a product you would actually deploy) it might be convenient to host your own version of the webserver on your device.

To allow your personal device to act as a webserver:

  1. Setup Apache2.0, MySQL and PHP on your device: MacOS, Windows, Linux. Take note of your Site directory
  2. Copy and paste all the files in the Score_Query folder in this repository into your Sites folder
  3. Restart Apache2.0. (The tutorials tell you how to do this on your native machine)
  4. Open a web browser and enter the URL: 'localhost/index.html', to see the website generated by the code.

Development

Drum Transcriber is open to push requests!

Contact us at [email protected] (Will) or [email protected] (Zoey).

Todos

  • (UI) Enable newsfeed, more interactive, more aesthetic.
  • (Raw data and analyse) Use microphone to read in sound wave and do fourior transform on it to determine if hit or not.
  • (Network/Wireless transmission) Use TCP to transmit the data directly between the micro-controller and the server instead of transmit via HTTP calls.
  • (Drum Technique Detection) Rolling can be detected by setting a limit and when the hits per unit time is faster than the limit, then all the hits would be recorded as a roll.
  • (Noise Cancellation, sensor) Apply an active low-pass filter design on the vibration sensor using operational amplifiers.
  • (Noise Cancellation, math) Decrease the strength of 4PHD, or, make the noise filter more general.
  • ......

License

MIT

Have Fun With Creating New Music!!

drum_transcriber_asc's People

Contributors

zhuozoeychen avatar wlcsm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.