All of these capabilities sounded interesting for a beatbox-like device, and they are also very cheap ($6 new at the local Target store).
The overall idea is to use an Arduino Nano as the beatbox brains, and to use modified Yada Yada toys as the individual voice modules. This will require a fair amount of rework, since I will want to maintain most of the functionality of the recorder while completely reworking the packaging.
In a recent project, I found an interesting way to interact with beatbox-like machines. Rather than using a typical "pad" interface, I used a two-dimensional grid of "preset patterns" for voice rhythm selection. The user can select an approriate phrase and shift them to generatively create a beat. The result is a lot more dynamic than simply playing presets, and allows the player to fine tune the performance without the embarrassing stumbles that come with realtime programming.
I also want to try an idea that I've had for a long time, but was never able to implement. I want to have an "auto-record" feature that will be able to randomly record new audio into different voices, creating ghost rhythms and melodies as part of its operation. Obviously, this would get in the way of creating a standard beat, so this mode should be well-labeled and easily defeated.
Finally, in order to make it work with other equipment that I have, I want to make sure that it can be externally clocked. Using one of the interrupt-capable pins of the Arduino should make this easy, and external clocking will allow me to actually use it to create music.
Aggressive plan, but I'm up for it!
Step 1: SquawkBox - Yada Yada Disassembly
The first thing you need to do is to take the Yada Yada Yada recorder apart. It's not very tricky, but I busted up the first one I tried, so you need to be careful. First, you take it out of its over-done retail packaging. This gives you a simple little device.
Next, you have to remove the rubber/plastic bumper that surrounds the device. The easiest way to to this is to cut one side of it, then peel it off around the body. Watch out when you are removing the bumper at the top of the device; it is holding an LED that could easily tear off and mess up your circuit board.
Finally, remove the five screws on the back of the device. Don't remove the screw holding in the battery compartment - we'll leave the batteries intact for now.
Once the five screws are removed, you should be able to open the device and remove the pointless plastic components. Be careful when moving the battery compartment so that you don't rip it off the board, and use a small jeweler's screwdriver to pry the speaker and microphone from the front panel (where it may be glued to the frame). Once this is complete, you should have a minimalist voice recording device.
Step 2: Getting It Ready for Experiments
Step 3: Wiring Up the Power Connection
Step 4: Removing the Pot
Once you've removed the metal pieces and cleaned up the pads, solder on wires to the three middle posts. The center will be your signal, while the one to the right will be the voltage connected to the pot.
Step 5: Wire Up Other Connections
When it is done, you have a standalone device with all the wires necessary for adding to a larger system. You will need to create four of these "voice boards" for a complete SquawkBox system.
Step 6: Hooking Up the Arduino
First, I had to decide on the connection between SquawkBox controls and Arduino I/O pins. I ended up with the following map:
A0: unused (useful as a random number seed)
A1: Tempo Setting
A2: Record Select
A3: Pattern Selection, channel 1
A4: Pattern Selection, channel 2
A5: Pattern Selection, channel 3
A6: Pattern Selection, channel 4
D2: External Clock input
D3: "Rock-it" Mode input
D4: "Ghost" Mode input
D5: Voice record output, channel 1
D6: Voice record output, channel 2
D7: Voice record output, channel 3
D8: Voice record output, channel 4
D9: Voice playback output, channel 1
D10: Voice playback output, channel 2
D11: Voice playback output, channel 3
D12: Voice playback output, channel 4
D13: Tempo LED display output
All of these are pretty straight-forward hookups except for the record mode input selection (on analog input 2), which will be discussed in the next step. Other than that, I was able to use standard stable input setups as found on the arduino.cc site for the ins, diode protection for the clock input and current limiting resistors on the tempo LED. The Voice record and playback outputs were going to go to another chip, so I waited on those for the moment.
I mounted the pots and switches onto a panel and wired them to standard edge connections on the protoboard, then ran wires from the edge connections to the actual pins, inserting resistors and diode as needed. Once everything was wired, I created a basic test program (available here ) to display the settings as produced by the various inputs.
Once it was all working, I proceeded to put in the switching chips. But before we get to that, I will explain how I set up four recording switches to a single analog input - in the next step!
Step 7: Implementing the Record Switches
No switch on: value = 0-100
Switch 4 on: value = 250-400
Switch 3 on: value = 500-650
Switch 2 on: value = 750-900
Switch 1 on: value = 1023
This was easy to decode, and I was able to implement channel switching without having to use all the rest of the pins.
Step 8: Using Switching Chips
Step 9: Hooking Up the Yada's
For each board, I had to:
- Hook up the + and - power to the main circuit power rails.
- Hook up the potentiometer connections to the 25K pots on the front panel.
- Hook up the record button connections to the record switching chip.
- Hook up the play button connections to the playback switching chip.
- Hook up the mic inputs in parallel (all boards would be using a single mic input).
- Create speaker output connections for eventual connection into a mixer.
With each board in, I used the test program to turn on record and playback functions, and tested them using temporary connections on the protoboard. I ended up losing one Yada in this process, but I had several more, so I was in OK shape. When complete, I bundled the Yada boards together as a "pack" - the stiff solid-core wire that I'm using for patching was strong enough to keep them nested and safe.
Step 10: Create a Mixed Output
I started off with 100K pots, 10K resistors and what I mostly got was a bunch of noise - hum and buzzing. After trying any number of options (without going to an op-amp buffer), I found that dropping a 1K resistor between the output of the potentiometer and ground cleaned everything up. The result is the circuit shown in the attached diagram.
I put the mixer on a seperate circuit board - a longish protoboard I got at Radio Shack. There is lots of spare room in case I later decide to add any other circuitry (like, perhaps, a buffer amp or some simple effects).
You'll notice that I'm now using 10K pots instead of the original 100K. The 100K pot gave about 10% useful range - everything else was silence. Dropping to 10K means that I have about 40% useful travel, but it doesn't get down to silence. Since there are muting switches in place, I felt OK about it. Also, given my expected use, I didn't really need a perfect mixer.
The output is to a standard unbalanced 1/4" jack. It needs to be amplified, but it is fairly clean (given the source...) and integrates well with the rest of my home studio.
Step 11: Package It Up
You'll notice on the interior picture that I place some non-conductive foam on the bottom of the metal box. This is because it is impossible to actually attach the stack of Yada Yada Yada boards to anything without causing major malfunctions. So, instead, I bound the four units together with a tie strap and allow them to "float" within the cabinet. There's enough wire so that they will never hit the top of the box, but making contact with the bottom could potentially cause a short. So the foam is there to prevent the Yada boards from ever hitting the bottom of the box.
For front panel labeling, I used an old Dymo labeler that my wife has been hauling around for the last 20 years. Retro punk/handmade music sort of look, but somehow it speaks to me.
Step 12: Afterword: What Not to Do...
Yes, indeed, I did exactly that. In order to finalize the project, I rebuilt it on a protoboard and some breadboards - allowing you to see and hear the end result:
Jobs for the future? I'd like to be able to have the system mute the output when recording starts and stops (to eliminate the beeping sound), and I'd like even more control of the mix. I would also like to build in effects and a speaker so that it could be a standalone device. But the results are compelling, and I'm probably going to use it for a generative music piece in the near future.
I hope you enjoyed the journey!