Categories
Uncategorized

1/2/3 USB Controller

Here’s the story on this one. A local tradeshow company bought some of my controllers about six years ago. Since that time I’ve worked with them on other projects where I was the client, and I’ve worked for them (in various capacities) on other occasions.

Back in December the owner got in touch with me to purchase a few controllers and I got them built and programmed that night, and delivered the next day. Tradeshow exhibits can change on a dime, so he then texted a day after that with a more custom request. We texted around 5pm and by 9pm I had a device built and programmed and ready to be dropped off the next morning so they could get it installed over the weekend.

It’s not the prettiest thing I’ve built lately, but speed of delivery was the primary goal with this one. I also took some photos and wrote up a small manual to describe the operation and installation of it. Below are some of the notes from the docs.

The 1/2/3 USB Input Device consists of three buttons (with wires) and one controller box with a USB cable connected to it.

Each button connects with wires to the solderless snap connectors on the box. All of the black wires go into the large connector, and then the yellow wire(s) from buttons 1, 2, and 3 each go into the corresponding numbered connector.

The snap connectors have orange levers that open to insert the wire, and then close to lock the wire in place. Make sure the wire is inserted all the way. Once you lock the lever in place give the wire a light tug. If it comes out it was not inserted all the way. Open the lever and try again.

If longer wires are needed just strip the ends so you have bare wire, and twist them securely onto the ends of the wires connected to the buttons and wrap with tape. Then strip the other end and insert into the solderless connectors.

Note: The wires connected to the buttons do not have polarity, but one is black and one is yellow to simplify making the connections to the box. As long as one wire from a button goes to ground, and the other goes to a numbered connection, it will work. Color coding was implemented so that making the connections is easier.

If a longer (or shorter) USB cable is desired, the enclosure can be opened and a new Micro USB cable can be swapped for the existing one. Note that strain relief was added to the USB cable to prevent damage to the controller board.

A few more notes: I just happened to have this plastic enclosure in the shop which was handy. It’s been sitting on a shelf for years and it saved me the trouble of building a custom enclosure. (I often 3D print or laser cut an enclosure, but this was enough of a rush job I didn’t want to spend time doing that.)

The connectors I used are not Wago connectors but “Glutoad” connectors. They are cheaper and not as good, but I had a bunch in the shop so I used them. I know the tradeshow company has used Wago connectors before so I figured this would be familiar to them.

I tend to write documentation like this not just for the client, but for myself. Chances are they might want another one in the future and the docs help me remember exactly what I built. In a previous life I built exhibits that needed to be supported for five years or more, so some documentation was always required. Reading the docs now I realize they are not great, but again, this was a rush project so I figures something was better than nothing.

Categories
Uncategorized

Raspberry Pi as USB MIDI Host

I’ve been building USB MIDI devices for a few years now, and in the past I’ve built a MIDI controller using a Teensy that controlled an Akai MPX16, but overall I’ve not had the need to connect things up for my own needs. But now that I’ve got a few things around that have MID inputs, outputs, and throughs, I need to expand my MIDI capabilities.

It seems there are a whole bunch of devices that just do MIDI over USB and don’t have MIDI jack for “true” MIDI output. I think this is just due to it being cheaper/easier to add a USB jack to devices instead of MIDI jack. (Even though there are TRS MIDI jacks, so size/price shouldn’t be much of an issue. It may be due to demand, since most USB MIDI keyboard/devices sold are just going to be connected to a computer.

If you want to connect your USB MIDI input device to a piece of hardware that has MIDI in but is not a computer you’ll need a USB MIDI Host device. There’s the DOREMIDI USB MIDI Host Box which is about $50 and appears to be USB 1.0. There’s also the DOREMIDI High Speed USB MIDI Host Box which seems to support USB 2.0 for around $60.

As usual, I’ve got a lot of stuff laying around from past projects, so I’m recycling/pulling from existing stock here. I’ve got a Raspberry Pi 3 B (which was probably around $35 when I got it) and then you need a power supply (add $9) and a Micro SD card (add $8) so we’re up to $52 right there… and we need one more thing. I’ve had this USB MIDI Converter Cable for years, and it was about $6 when I got it. So hey, we’re under $60 but just barely.

So what do we do with this Raspberry Pi and other stuff? Well, we grab the disk image from this post titled Raspberry Pi as USB/Bluetooth MIDI host and burn it to the SD card and boot it up. Now, I was convinced I’d need to configure things but… it just worked! There’s a complete install post as well which I perused, especially when I tried to add an OLED screen. (That did not work.) To be honest I was a bit surprised it just worked out of the tin. It even worked fine with one of my 8K Controllers programmed for MIDI output.

Categories
Uncategorized

Big Button Audio Player

I was recently contacted by an artist who really liked The Big Button and wanted to use it for an art installation. After some discussion it turned out they really didn’t need a USB controller but needed something to trigger an audio player. When I asked what they were going to use for an audio player they said they didn’t know, so I suggested building the whole thing to ensure it would all work together. And it did.

The control box (which is the “audio player” in the simplest terms) allows the button to plug into it using a 3.5mm TRS cable. This allows the customer to swap out to a longer or shorter cable if needed. 3.5mm TRS stereo cables are everywhere and pretty cheap. Since we only need three wires there’s no need for a more complex connection. (Though if you need an RJ-45 solution, we’ve got that covered.)

The control box also has a 3.5mm jack for audio out. This is to connect to external powered speakers or a PA system. (Or headphones!) And in the center of the front panel is a Mini USB jack for powering the unit via a Mini USB cable and a 5 volt wall wart.

There’s a hole on the side of the unit for access to the Micro SD card in the audio player. Just in case sounds ever need to be changed, or if the card fails, etc. Without this hole it would be very difficult to get to the card. (Just like the Game Show Buzzer System I covered the hole with tape before shipping.)

Here’s a look inside the unit. There’s an Arduino Nano with the audio player, and the 3.5mm jack and… some wires! And a few wire connectors taped together just to prevent them from rattling. This was a quick build but it came together fairly easily. I did a good amount of testing with this one, and luckily it all went well. (I should really build a permanent testing station again, as it’s becoming of a need lately.)

So hey, if you need some weird electronic device that does something… let me know!

Categories
Uncategorized

Syncing a Behringer RD-6 to a Pocket Operator via a Pi Pico

Hello! Check out the post Sync a Behringer TD-3 to a Pocket Operator for additional info, including a diagram.

The full title of this should be Syncing a Behringer RD-6 Analog Drum Machine to a Pocket Operator PO-14 Sub with a Raspberry Pi Pico Microcontroller. That’s a bit long, but it’s also descriptive. The RD-6 can be synced via MIDI, but the Pocket Operators do not do MIDI. The RD-6 does have an analog sync in which will trigger at over 2.5 volts, but the Pocket Operators output about 1 volt when they sync with each other.

I’d seen a few ideas and potential solutions online. One involved a DC boost converter, so I tried one but it didn’t work. Another involved using an overdrive guitar pedal, but I don’t have one…

What I do have are a bunch of Arduino boards of various types. I originally grabbed an Arduino Nano with the idea that I could capture the PO-14 output at 1 volt with an analog pin and then output a pulse on a digital pin as a trigger. The Arduino outputs at 5 volts though, and while I don’t mind making a voltage divider, I also had a Teensy LC on my desk, so I tested with that since it runs on 3 volts. And then, since my desk is fairly large, I grabbed a Raspberry Pi Pico microcontroller which also runs on 3 volts. I used the same Arduino code on the Pico as the Teensy (thanks to the work of Earle F. Philhower, III).

This is literally all there is to the code. I added an LED which blinks when a pulse is read, and then I just connected the signal wire to the same pin as the LED (and the other to ground) and plugged those into the sync in of the RD-6.

I’m new to all this syncing of musical devices, and this may be the wrong way to do it, but it worked for me. I did try to set the RD-6 as the master device and sync the PO-14 to it, but it didn’t seem to work quite right. The voltage may be a bit too high causing erratic behavior on the Pocket Operator.

Since this works, I’ll probably stick with it unless someone tells me it’s a terrible idea or tells me a better way to do it that is cheap, easy, or involves things I already have.

Enjoy the demo video below!

Categories
Uncategorized

Game Show Buzzer System

I recently completed a build for a client that I’m calling a “Game Show Buzzer System” because, well… that’s what they asked for. The requirements were a system with two buzzers, green and red, that when pressed each played a different sound. They also wanted a light controlled, as they were going to build this all into a podium for some game show broadcast on the Internet.

At first they asked for colored light strips, so I was going to use NeoPixels, but then they switched to wanting to control a DMX light. I didn’t have a DMX light handy so I got the cheapest one on Amazon to start doing development with. Meanwhile they shipped me a very nice professional DMX light. I got the code working on my cheap light, but once moved over to the good light it didn’t work without some tweaking. Different DMX lights operate differently, duly noted.

The electronics live in a 3D printed enclosure. This probably took more time than the code. (But since code is often reused, that’s not surprising.) This project came together pretty quickly, but if it hadn’t I probably would have spent more time on the enclosure. It’s not bad, it just has a few things that annoy me about it. Everything is labeled, which is good, because it is possible to plug the 3.5mm plugs into the wrong place.

The top features a knob and small display which are used to set the reset time for the unit after a button is pressed. The client thought that 30 seconds for the reset might be good, but while discussing it there was concern that might be too long, so I suggested a way to adjust it.

The large buttons use 3.5mm jacks and cables to connect. Since TRS cables have three connections, they’re perfect for items with GND, a button, and an LED. This also allows for the client to easily swap cables if these are too long or too short.

The client provided the sounds. (Well, links to YouTube videos with the sounds.) If they ever want to replace the sounds, or the SD card fails, it can be easily accessed. I didn’t have time to make a door or panel for this, so I covered it with gaff tape before I shipped it.

A peek at the inside. It’s a little tight, but there’s a lot going on in there. I ended up making my own “shield” to connect everything because, this was a rush project, but it all works, even if it’s not the prettiest thing I’ve built. I did about 4 days of testing before shipping it out. It all works, and it was a fun and challenging build. Neat!