A MIDI Synth that taps a mallet on a piece of wood. With some demonic flair.
Time to make some noise. This is the first module of Grumpenspiel that moves beyond lights and testing MIDI communication, and into the world of sound.
Listens to MIDI IN and reacts to Note On events by tapping a mallet against a piece of wood. Throw in some light FX, a wonderfully overdone stage set, and finally an exploration of MIDI SysEx messages for configuration and tuning.
- Adafruit 5v Pro Trinket controller
- MIDI In circuit, with Power Thru compatibility
- Servo Motor with mallet attached to the horn
- Wooden striking block
- Demonic Tapioca figurine with light-up eyes
- Decorated cave entrance
You gaze upon the entrance to a deep dark cave.
Inside a shadowy figure can be heard muttering incantations.
Her hammer moves in a sweeping arc, striking a demonic altar.
The stone walls of the cave are etched with runes, still pulsing with the aura from rituals of days gone by. Or continuing still?
The construction of Demonic Tapioca is a masterpiece. I mean, we’re talking about a single drum stick tapping a piece of wood. Rigging up an ugly looking but functional tapper could be done in minutes.
But what fun is that? We’re talking Grumpenspiel here! Panache is our wheel house.
Several parts to Demonic Tapioca’s physical construction:
- Cave mouth
- Cave body
- Cave floor
- Servo mount
- Electronics enclosure
This is an important part of the construction since it is the plainly visible portion facing the audience. Sure, there’s action going on in the cave, but the mouth brings it together.
This part of the project was so much fun. Felt like a kid playing with cardboard, paper grocery bags, white school glue. Seeing it slowly take form was a blast.
- Start by making three 12 x 9.5 inch layers of cardboard. Each layer consists of gluing three sheets thick with alternating corrugation directions. Let the glue dry overnight.
- Check the drying out in the morning, discover that its 25 degrees in the workshop and the glue is not dry yet. Weigh it down with some heavy wood blocks to keep it flat, hook up a space heater, give it another day.
- Next, cut out the shape of the cave mouth. Cut at an angle so that the design grows bigger as you move further back from the front, hinting at an expansive cave inside. Only roughly smooth the transitions. We’ll be covering it up later.
- Discover during cutting that you kinda made the cave too short. I’ll add some tiers onto the top later.
- Cut the rune pockets into the front layer and glue them into place. Guide the wires behind the layer, soon to be entombed between front and middle layer.
- Glue the three layers together.
- Add some tiers of cardboard to the top, fixing the flat “oopsie” from earlier.
- Wrap the edges with grocery bag paper and glue that down. You know how wild things get at concerts, let’s err on the side of reinforced strength.
- After the glue dries enough, paint all visible surfaces black. Let this dry overnight.
- Rip up egg carton cardboard into stone sizes and shapes. Mod Podge like crazy and cover the whole thing in stones. Dry overnight.
- Paint very dark grey to cover the stones.
- Apply some eye liner (yes, makeup) for accent in random spots.
- After this layer is set, dry brush on some lighter grey to bring out the detail. Dry overnight.
- Mod Podge sealer. Dry overnight.
DONE! The cave mouth looks sweet.
This was one of my favorite parts of the project. I had all kinds of ideas for techniques and things I wanted to try. One experiment with vcarved wooden runes looked nice but just didn’t seem right.
I did a proof of concept with edge-lit acrylic and fell in love. Basic design:
- Bottom layer is cardboard.
- Next is black card stock for background color.
- Next layer is the Lexan, with a frame of cardboard.
- Then a final layer of cardboard on top with a diamond shape cut out.
- A NeoPixel is rigged pointing in from the side.
The steps I followed for a single rune (times 4 for Demonic Tapioca’s runes):
- cut 3 blank cardboard rectangles
- glue black card stock to one
- cut diamond shape into one, roughly 34mm on each vertex
- glue grocery bag paper to interior of diamond to hide the corrugation
- walk the dog, even though its 15 degrees out
- cut lexan large enough to cover the diamond, but small enough to leave thick border
- cut third cardboard blank to form pocket to hold lexan
- glue pocket layer to baselayer/black card stock assembly
- go to bed, your hands are freezing from unheated basement
- sand lexan edges 220->800
- paint lexan edges with reflective silver
- paint diamond inner perimeter, the only spot that won’t get covered by stones later
- remove small material from middle layer to form gap for NeoPixel
- etch lexan with xacto knife to form rune figures, ensuring alignment with diamond cutout
- solder wires to the NeoPixels, rough lengths from storyboard, add extra because you can tuck it between layers
- test lexan rune carve. now is the time for easy corrections, later it’ll be rough to fix
- put lexan into pocket
- glue top layer (diamond cut) to trap lexan
- glue NeoPixel
- Wrap with grocery bag paper and glue for strength.
Bam, you’ve got a rune!
Once the whole assembly is dry, glue it into the pocket cut in the top layer of the cave mouth. Excess wire can be tucked between layers of cave mouth, hidden from view.
It does not need to be perfectly flush transition from cave mouth to rune assembly. These get covered with cardboard “stones”, so any seams will disappear.
These pixels are the end of the line of the daisy chain, only a DIN connection. Keep the supply lines short, want to have these guys as bright as possible. Feed other pixels on their own power line.
Cloth sheet. Front connects to the cave mouth. Rigid wire support holds up the back. Cloth drapes around the back and sides to cover all the guts.
Big flat panel of MDF. Painted with base coat of black acrylic paint. Nice border of stones made from egg carton.
Two NeoPixel LEDs deep in the cave for nice mysterious appearance. Diffused with cotton balls to give a really eerie feel.
Pretty simple block of wood for the hammer to tap on. This where we make our sound.
And advertise our brand. Fun demonic font.
- Designed in Inkscape
- Converted to GCode in F-Engrave
- Painted with grey “oopsie” paint
- Milled on the CNC, cutting through the paint
- Sealed with Polycrylic
- Painted details with Testors Enamel
- Sealed with Polycrylic
How to mount the block? This part impacts acoustics.
Now we’re moving out of the world of electronics, robotics, wood working, cardboard construction, and into tailoring.
- Rigid wire frame
- Stuffed with fluff from Charlie Girl’s toys she shreds to bits
How to connect arm to hammer, if at all?
Figurine head and eyes
Buried in the hood is the head. Duh?
- Black oblong spheroid
- Drilled out for LED. Used a 5mm form factor NeoPixel instead of the strip-cut variety used elsewhere
- Wires run down the back to continue the daisy chain of pixels
- Two tiny holes drilled by hand with pin vice for eyes
Finally, something simple for this project. Modular design at its best. Simple piece of scrap 1x3, pocket cut on band saw. Mounting holes done on the drill press. Painted black to disappear into the back of the cave, since it sits behind the figurine.
Two wood screws through the cave floor hold it in place
There are three pieces to this:
- Physical space to house the circuit board
- Connectors (A) - 5.5mm barrel jack, DIN-5 MIDI, and RJ45 programming connectors
- Connectors (B) - neopixels non-rune, neopixels rune, servo LEFT, servo RIGHT (future expansion)
- Control panel - power switch, power indicator, MIDI activity, test button LEFT, test button RIGHT (future expansion)
This instrument uses an Adafruit 5v Pro Trinket for control, which diverges from the Grumpenspiel Arduino Nano standard. What can I say, I have a bunch of trinkets laying around, and a shipment of Nanos that’s taking forever to deliver. They both use ATmega328P.
- MIDI In - Rx pin
- Test Buttons - pins 3 and 4
- NeoPixel output - pin 5
- Servo control - pins 9 and 10
That’s it. 6 pins on the microcontroller. The panel LEDs are controlled by discrete passive components. All the config and tuning is done via MIDI SysEx messages.
Demonic Tapioca’s hardware is pretty simple.
FAKE section, copied from Midler
Eagle .sch schematic file.
Power comes in via three paths:
- RJ-45 programming connector - while programmer is connected, we draw power from USB. Schottkey diode prevents rest of circuit from drawing power from this connection.
- DC Barrel Jack - 5.5 x 2.1 DC input jack.
- Power Thru - Grumpenspiel standard power over pins 4 and 5 on the MIDI Din 5pin connector.
DPDT switch selects between barrel jack and Power Thru (and off).
LED indicators on the control panel to indicate power and MIDI activity.
The Grumpenspiel standard for programming Arduino Nanos over 6-pin ICSP (or RJ45) will be put to the test with Pro Trinket. For programming this guy we normally use FTDI Cable. After testing that the FTDI upload worked, I needed to test out ICSP with a programmer. This baby is destined to use hardware UART for MIDI IN. I used Pro Trinkets in some project years ago, but haven’t touched them since, and never blasted the bootloader on one. The chip is ATMEGA328, so in-circuit programming is no fuss.
RJ45 is a nice clean connection to HC ISP Echo, my custom built programmer of choice.
Schottkey diode on BUS pin for power, oriented to allow the Pro Trinket to draw power from the main circuit but not provide power to the main circuit when programmer is hooked up. Although this device only has a couple of LEDs and a small servo, I wanted to test out the pattern that will be important when bigger loads will come into play.
Being the first MIDI synth for Grumpenspiel, this project was the platform for building a standard set of MIDI SysEx instructions and the C++ library to go with it. Servo Slam was coded right along side, being the main SysEx controller.
FAKE section, copied from Noisy Blinker.
184 mA typical current usage at full brightness setting. Actual usage will be even less since full brightness is bit powerful for comfortable viewing.
534 mA maximum current draw according to the datasheet. Make sure you don’t turn all 8 to full 255, 255, 255 at full brightness when only powered over USB.
|Arduino Nano||50 mA||Estimate from Nick Gammon|
|NeoPixels||130 mA||Datasheet says 60ma each * 8 pixels, so maximum is 480 at max at full white RGB, full brightness. Measured a variety of usage scenarios. Full brightness, migrating colors, constant-on (no sound reactivity), 100-125 mA. With sound reaction blinking, usage was 30-80 mA. I’ll use the fully on value with a slight padding.|
|Microphone Board||4 mA||direct measurement|