diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd58c0e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +gmon.out diff --git a/index.html b/index.html index 8c3459c..e46275c 100644 --- a/index.html +++ b/index.html @@ -1,21 +1,213 @@ tmpad + + -

tmpad (rev. 4)

+
+ +
+

tmpad

+ +

This all started when I realized my 25$ korg nanopad was busted. I started looking around at getting something a bit more robust and noticed very quickly that this type of equipment is really expensive. So before diving in and paying for something I decided to try my hand at creating one myself.

+ +

Goals:

+ +
    +
  • pressure sensitivity
  • +
  • keep it simple
  • +
  • low price
  • +
  • use materials on hand
  • +
+ +

Breaking ground

+

+ How does one make a low cost velocity sensitive button? I struggled with this one for a while. My brother and I spent an hour or so whiteboarding ideas and iterating through them to their ends. In one such iteration we realized that blocking the path of light would be perfect. Not only would it provide a ramp in voltage, but would also eliminate any complicated machinery. +

+ +

+ Thankfully due to some previous experimentation with infrared (IR) touchscreens (and the bad decision to buy parts at RadioShack) I had some IR emitters/detectors laying around. + touchscreen experiement leftover leds +

+ + +

+ Now came the real problem. How do you block the path of light in a consistant manner without setting up guides, pivots, or etc... We went through nearly every possibility we could think of. +

+ +

Put the detector in the button

+

+ This method required a flap cut in paper that allowed the detector to pass through and complete the circut. This caused an argument about the durability of the paper and the precision required to keep the button in line. +

+ +

Have 2 digital bumper switches that detect on and off

+

+ A decent solution, but this still required an actual button with the physical constraits of following a path without pitching. +

+ +

Use a spring and some rubber

+

+ The idea here is simple: +

    +
  • tape/screw a spring to a thin block of wood
  • +
  • mount rubber bumpers on edges
  • +
  • create side walls to mimimize horizontal travel
  • +
  • mount the emitter/detector to the floor of the rig
  • +
+ + This idea was so simple that it just had to work. +

+ +

First prototype

+

+ first revision + first revision + So we built it, and what do you know.. it works! I hooked it up to an arduino uno that was laying around and in a few minutes we were reading the voltage off of the IR detector. +

+

+ So you may be asking, "how does this even work?". Well, basically the spring keeps the wood button elevated away from the floor by ~1/4 of an inch. In that gap, the infrared is able to pass cleanly under the button and be detected on the other side. When pressing the button the gap is closed and the circuit is broken. +

+

Problems

+

+ While this solution worked rather well, it was prone to bouncing around (it was attached to a spring after all!). Also, pressing the button off center caused the button to tilt and while it worked it felt really flimsy. +

+ +

Second prototype

+

+ We decided to iterate. Based on the problems we noticed in the first prototype, we set forth to conquer the button once and for all. Unfortunately this was harder than it seemed. There was some head banging and then we once again, did the simplest thing imaginable. -

This all started when I realized my 25$ korg nanopad was busted. I started looking around at getting something a bit more robust and noticed very quickly that this type of equipment is really expensive. So before diving in and paying for something I decided to try my hand at creating one myself.

+

+

+ first revision +

+

+ As you can see this looks nothing like a real mpc/drumpad. It does however, function as expected.. for the most part. + one of the first things we noticed is that the wood on wood action actually caused pinching if you didn't press directly in the center. That pinching caused the button not to return to its natural position. We continued on... +

-

Goals:

+

Third prototype (aka fingertrap)

+

+ Using the foam from the inside of a macbook box we stumbled upon a discovery. Apparently, this foam (probably because it is black) absorbs all of the IR and can actually cause the circut to be broken! After testing this on on my desk we made a prototype. +

+

+ revision 3 exposed + revision 3 +

+

+ So this works really well, infact it works so well we kept stabbing ourselves with the poorly located screws. At this stage we hooked this thing up with node-midi and were actually playing a note in ableton! Very exciting, but we were not quite there. +

-
    -
  • pressure sensitivity
  • -
  • keep it simple
  • -
  • low price
  • -
  • use materials on hand
  • -
+

Fourth prototype

+

+ It was time to get serious. We sketched out a plan on the whiteboard and got to work! + revision 4 whiteboarding +

+

+ Top and middle plates + top and middle +

+

+ Stacked to give an idea as to what we are going for.. + top and middle stack +

+

+ Added slots in the middle plate to hold the leds and drill some holes through the bottom plate for the led leads + led slots and holes for pins +

+

+ Push the leads of the leds through the holes and bend the leds into position + leds in place +

+

+ Add the foam layer + +

+

+ Screw it all together with drywall screws.. it's a prototype! + screwed +

+

+ Solder it all together. Sorry to make any EE's out there cry, but since we're only powering 4 leds I figured it would be safe to have them on all of the time. Anyhow, color codes here are: +

    +
  • red - 3.0v
  • +
  • black - ground
  • +
  • green - signal (these go to the arduino analog inputs A0-A3)
  • +
+ soldering +

+

+ Test each connection, fortunately there were no problems (barring underpowered the leds) the first time around! + testing +

+

+ And connect it to the arduino! + arduino side view + arduino straight on +

+

+ Modify the code to support 4 buttons instead of 1 and begin composing some hardcore brostep! + usage +

-

Keeping it real simple

+

Code

+

+ This page and source code can be found on github +

+

Contact

+

+ follow my brother (@R_H_2) and I (@tmpvar) on twitter. +

+

Custom builds

+

+ If you think you just can't live without one of these and want us to build you one, send me an email (tmpvar@gmail.com) and we'll work something out. +

+
+
+ \ No newline at end of file diff --git a/static/img/leds-500.jpg b/static/img/leds-500.jpg new file mode 100644 index 0000000..cc14e70 Binary files /dev/null and b/static/img/leds-500.jpg differ diff --git a/static/img/leds.jpg b/static/img/leds.jpg new file mode 100755 index 0000000..e99d2f3 Binary files /dev/null and b/static/img/leds.jpg differ diff --git a/static/img/revision1-250.jpg b/static/img/revision1-250.jpg new file mode 100755 index 0000000..b9bce5a Binary files /dev/null and b/static/img/revision1-250.jpg differ diff --git a/static/img/revision1-exposed-250.jpg b/static/img/revision1-exposed-250.jpg new file mode 100755 index 0000000..b1cf1f8 Binary files /dev/null and b/static/img/revision1-exposed-250.jpg differ diff --git a/static/img/revision2-500.jpg b/static/img/revision2-500.jpg new file mode 100644 index 0000000..a9f97dc Binary files /dev/null and b/static/img/revision2-500.jpg differ diff --git a/static/img/revision2.jpg b/static/img/revision2.jpg new file mode 100755 index 0000000..ea04043 Binary files /dev/null and b/static/img/revision2.jpg differ diff --git a/static/img/revision3-500.jpg b/static/img/revision3-500.jpg new file mode 100644 index 0000000..eea735a Binary files /dev/null and b/static/img/revision3-500.jpg differ diff --git a/static/img/revision3-exposed-500.jpg b/static/img/revision3-exposed-500.jpg new file mode 100644 index 0000000..07f04e9 Binary files /dev/null and b/static/img/revision3-exposed-500.jpg differ diff --git a/static/img/revision3-exposed.jpg b/static/img/revision3-exposed.jpg new file mode 100755 index 0000000..20a643f Binary files /dev/null and b/static/img/revision3-exposed.jpg differ diff --git a/static/img/revision3.jpg b/static/img/revision3.jpg new file mode 100755 index 0000000..292767a Binary files /dev/null and b/static/img/revision3.jpg differ diff --git a/static/img/revision4-500.jpg b/static/img/revision4-500.jpg new file mode 100644 index 0000000..b6832cc Binary files /dev/null and b/static/img/revision4-500.jpg differ diff --git a/static/img/revision4-arduino-side-500.jpg b/static/img/revision4-arduino-side-500.jpg new file mode 100644 index 0000000..ec0018e Binary files /dev/null and b/static/img/revision4-arduino-side-500.jpg differ diff --git a/static/img/revision4-arduino-side.jpg b/static/img/revision4-arduino-side.jpg new file mode 100755 index 0000000..5d08e00 Binary files /dev/null and b/static/img/revision4-arduino-side.jpg differ diff --git a/static/img/revision4-arduino-straight-500.jpg b/static/img/revision4-arduino-straight-500.jpg new file mode 100644 index 0000000..5702d02 Binary files /dev/null and b/static/img/revision4-arduino-straight-500.jpg differ diff --git a/static/img/revision4-arduino-straight.jpg b/static/img/revision4-arduino-straight.jpg new file mode 100755 index 0000000..712145c Binary files /dev/null and b/static/img/revision4-arduino-straight.jpg differ diff --git a/static/img/revision4-foam-layer-500.jpg b/static/img/revision4-foam-layer-500.jpg new file mode 100644 index 0000000..87cfec1 Binary files /dev/null and b/static/img/revision4-foam-layer-500.jpg differ diff --git a/static/img/revision4-foam-layer.jpg b/static/img/revision4-foam-layer.jpg new file mode 100755 index 0000000..1665bb4 Binary files /dev/null and b/static/img/revision4-foam-layer.jpg differ diff --git a/static/img/revision4-led-slots-500.jpg b/static/img/revision4-led-slots-500.jpg new file mode 100644 index 0000000..83882ca Binary files /dev/null and b/static/img/revision4-led-slots-500.jpg differ diff --git a/static/img/revision4-led-slots.jpg b/static/img/revision4-led-slots.jpg new file mode 100755 index 0000000..2fed64c Binary files /dev/null and b/static/img/revision4-led-slots.jpg differ diff --git a/static/img/revision4-leds-500.jpg b/static/img/revision4-leds-500.jpg new file mode 100644 index 0000000..91cb531 Binary files /dev/null and b/static/img/revision4-leds-500.jpg differ diff --git a/static/img/revision4-leds.jpg b/static/img/revision4-leds.jpg new file mode 100755 index 0000000..0eca30f Binary files /dev/null and b/static/img/revision4-leds.jpg differ diff --git a/static/img/revision4-screwed-500.jpg b/static/img/revision4-screwed-500.jpg new file mode 100644 index 0000000..5e2a9be Binary files /dev/null and b/static/img/revision4-screwed-500.jpg differ diff --git a/static/img/revision4-screwed.jpg b/static/img/revision4-screwed.jpg new file mode 100755 index 0000000..dbcc3f3 Binary files /dev/null and b/static/img/revision4-screwed.jpg differ diff --git a/static/img/revision4-solder-500.jpg b/static/img/revision4-solder-500.jpg new file mode 100644 index 0000000..778fc24 Binary files /dev/null and b/static/img/revision4-solder-500.jpg differ diff --git a/static/img/revision4-solder.jpg b/static/img/revision4-solder.jpg new file mode 100755 index 0000000..60a9b9a Binary files /dev/null and b/static/img/revision4-solder.jpg differ diff --git a/static/img/revision4-testing-500.jpg b/static/img/revision4-testing-500.jpg new file mode 100644 index 0000000..1ab94e6 Binary files /dev/null and b/static/img/revision4-testing-500.jpg differ diff --git a/static/img/revision4-testing.jpg b/static/img/revision4-testing.jpg new file mode 100755 index 0000000..a0ca085 Binary files /dev/null and b/static/img/revision4-testing.jpg differ diff --git a/static/img/revision4-top-middle-500.jpg b/static/img/revision4-top-middle-500.jpg new file mode 100644 index 0000000..16a6f90 Binary files /dev/null and b/static/img/revision4-top-middle-500.jpg differ diff --git a/static/img/revision4-top-middle.jpg b/static/img/revision4-top-middle.jpg new file mode 100755 index 0000000..c901b34 Binary files /dev/null and b/static/img/revision4-top-middle.jpg differ diff --git a/static/img/revision4-top-middle2-500.jpg b/static/img/revision4-top-middle2-500.jpg new file mode 100644 index 0000000..0d962a7 Binary files /dev/null and b/static/img/revision4-top-middle2-500.jpg differ diff --git a/static/img/revision4-top-middle2.jpg b/static/img/revision4-top-middle2.jpg new file mode 100755 index 0000000..2b069fd Binary files /dev/null and b/static/img/revision4-top-middle2.jpg differ diff --git a/static/img/revision4-usage-500.jpg b/static/img/revision4-usage-500.jpg new file mode 100644 index 0000000..fc4179c Binary files /dev/null and b/static/img/revision4-usage-500.jpg differ diff --git a/static/img/revision4-usage.jpg b/static/img/revision4-usage.jpg new file mode 100755 index 0000000..a0f0668 Binary files /dev/null and b/static/img/revision4-usage.jpg differ diff --git a/static/img/revision4-whiteboard-500.jpg b/static/img/revision4-whiteboard-500.jpg new file mode 100644 index 0000000..9332f40 Binary files /dev/null and b/static/img/revision4-whiteboard-500.jpg differ diff --git a/static/img/revision4-whiteboard.jpg b/static/img/revision4-whiteboard.jpg new file mode 100755 index 0000000..99cd732 Binary files /dev/null and b/static/img/revision4-whiteboard.jpg differ diff --git a/static/img/revision4.jpg b/static/img/revision4.jpg new file mode 100755 index 0000000..d759571 Binary files /dev/null and b/static/img/revision4.jpg differ diff --git a/static/img/touchscreen-experiment.jpg b/static/img/touchscreen-experiment.jpg new file mode 100755 index 0000000..ca587e2 Binary files /dev/null and b/static/img/touchscreen-experiment.jpg differ