On the MAKE:blog!
The robotcowboy button_box is a wireless play button for automatic playlist control of music software.
As a solo live performer accompanied by a computer out of necessity, I am confronted with the forced-interaction of the musical software I use. Basically, if the performer has to run to his/her laptop after every song to setup the next one, then much of the momentum and energy built by the previous songs are lost.
The button_box is a wireless hardware button to be mounted on the performers body. Custom scripting software controls the more advanced functions built into the controlled musical software. These required actions fall beyond the MIDI specification and therefore MIDI controllers do not provide the needed functionality.
I use FL Studio 6, a catch-all Windows sequencing and synthesizing platform. As the interface was designed around the common mouse/keyboard paradigm, it is assumed that users of this software will select songs to play using this interface. This is exactly what I want to avoid in a live situation. I am forced by the design to provide a workaround to control song selection and loading functions. Momentum of a live show is killed if I have to run an “Open File” dialog box.
The goal behind this device is simple: let the audience know I am in control of the computer. The computer does not control me and force me to run to it. I send a command and the audience can hear the feedback. Thus, the performer is free to perform.
(the bluetooth module is inside now and the battery is outside … not enough room )
- Arduino (Atmega8) standalone microcontroller
- BlueSmirf RS232 to Bluetooth module, following this guide.
- custom breadboard shield
- simple membrane momentary switch
- light emitting diode
- power switch
- 9V battery
- velcro to hold it to my jumpsuit
- custom scripting functions for FL Studio in Python using pywinauto and simpleOSC
- robotcowboyOSC – OSC server
- robotcowboyFruity – FL Studio specific play list control
- a PureData patch which relays comport information to Python via OSC
- simple Arduino firmware to control the button, led, and communication
Update: Jan 23rd 06
The system works quite well at distances over 100 feet. The battery lasts about 35 minutes, which is enough for a whole set. An added benefit to using the transparent red plastic case is that the red connection light on the BlueSmirf is very bright and proves good feedback on the status of the bluetooth link, whereas the green power lights are filtered. I’m very glad I set the led to blink when the song is loading, this small feedback is very important. Naturally, the radio module sucks the most current and dies before the Arduino – I’m thinking about trying rechargeables and building a small charging circuit.
I added the analog sequencer pd patch into the PureData part of the system so that tones are produced when loading the next song. That way the audience knows what is going on to a certain extent and it just sounds cool.
- Rechargeable batteries + charging circuit
- Relay control over body lights – this works and I’ve already built it … the PD patch takes midi and tells the Arduino to turn realys on and off. The only problem is that my box is too small to fit the relay module
- Replace Ardunio board with custom Arduino circuit. DONE – I made a small pcb which ends up being about half the size.
- Change python scripting for Linux – as I’ve bid farewell to Windows.
If you are in a similar situation and want to control FL Studio, or any other piece of software for that matter, try out the code and tell me what you think. You do not need the microcontroller, as all messages can be sent via the PureData patch as well. (This is a backup in case bluetooth stops working )
This is an alpha version as it was built in about 4 days. I’ll add onto it as I experiment further and add modules to the system.
What you need to run this:
The button has two modes:
- a short press: start/stop playback
- a long press (> 1sec): load the next song
This was an introduction to Python for me and, if you have done any programming before, you should be able to understand what is going on (I hope). There is documentation for pywinauto if you want to extend the scripting beyond these simple FL Studio controls.