Responsive LED Drumkit - Hardware Help

Hello Arduino Forumers,

I have read all over the internet and am not satisfied with the current tutorials and videos of people creating reaponsive LED drum kits (links below). I am looking for some suggestions and guidance on the specific direction I am looking to go. I am a first yer electrical engineering student and also a touring musician and want to make something cool that works for music and could satisy an extra credit project, however currently my experience is in coding not circuits so any guidance, tricks or wisdom is appreciated.

First, why I am not satisfied and what I want to be different

All responsive LED implementations are currently using individual circuits and/or microcontrollers per drum making each individual drum only responsive to itself, unless vibration or sound is leaked to a pickup/mic on a different drum. This also leaves you with many individually working parts.

My band is not acoustic we only play where there is power so I do not want/need batteries. I want relaible, never need a recharge in a show, wall power.

I want to wire all pickups/mics and LEDs to the same controller (Arduino/Mega) which is bluetooth synced to my android app so i can change colors, or logic based on what I code up. (slow songs light up longer blah blah)

A global controller is necessary as I will have situations when ( for instance a cymbol is hit or bass is kicked extra hard) I want the entire kit to light up rather than 1 drum.

Questions

  1. Any advantages to piezo vs mic impact sensor?
  2. Do I have to worry about any lag.
  3. Do I need to worry about wire length (max needed about 4ft)
  4. Can I get some solid advice on driving about 6 feet of RGB LED. I am pretty sure for power sake I can cut 1 6ft. LED strip into all needed lengths for each drum.

Links instructables led kit

adafruit led kit

  1. Any advantages to piezo vs mic impact sensor? (myself, I am not sure to be honest on the pros vs cons on each)

  2. Do I have to worry about any lag. I would say only in your code. the processor will cycle through the code MUCH faster than any drum beat/hitting

You might want to look into NeoPixel RGB leds... much less overhead as far as wires and led count (especially if you want RGB coloring)

Or better yet, maybe the DOTStar leds (which are similar but require less timing requirements, which allows you to do other things in your code (like check sensors....button presses..etc)

My suggestion would be to start very small with the idea of scalability in mind.

Maybe 2-3 sensors/drums at first.. get a solid platform going and expand from there.

Stay away from anything dealing with DELAYS().. this will kill your code.

Myself,, I'd start with asking some questions and sketching down my ideas.

  • what takes precedence? (to me.. this is a drum hit above all else)
  • If each 'led' is unique to its own drum & sensor... maybe a drum isnt the most important behavior to watch out for? (no clue, up to you to decide)

Let take a 1 drum example.

Drum A: sensor A LED A

I hit the drum...... and....?? (what happens?)

  • the led lights up:
  • (for how long?)
  • (does it stay lit for a pre-determined length of time? or stay lit until another 'hit' is detected?)

  • the led turns off:

  • fades off?

  • instant off? (no fade?)

Maybe once a drum hit is detected that matching LED is lit up, full brightness.. and immediately starts to fade back down (to off) and regardless of where is in the fade off process.. when this drum/matching led detects another hit it goes back to full brightness and starts the 'fade out' process again...

you could set several parameters then: * how long to stay on at full brightness when a hit is detected before starting the 'fade out' process * how fast/slow the fade out process takes. (could be unique to each drum/symbol..etc) (symbols take long to audibly fade out.. maybe the leds follows suit).. a snare seems to fade out quickly/instantly.. so maybe the led fades out super quick for this piece?

really.. its up to you to decide on a base platform on how you want it to work..

get that going, then work on tweaking and re-implementing other features after the fact.

good luck