|The Transport Controller - this unit does the transmitting - well used already !|
A while back I made up a simple transport controller so I could remotely, well a few metres away, control my two main audio software packages, Cakewalk Sonar X3 and Sony Vegas Pro 13.
This unit is made of two parts. There is the remote battery powered transmitter and the receiver unit which has a MIDI output on it to connect to one of my MIDI interfaces. The transport controller transmitter simply has seven switches which are monitored by a Arduino Nano which when pressed transmits the a value to the receiver. The receiver gets these values and puts out an appropriate MIDI controller value to the music computer.
The radio setup in both units are nRF24L01+ 2.4Ghz ultra low powered transceiver modules which are cheap and work a treat. Several libraries exist for the Arduino making coding simple. I used mirf. The radio modules communicate with the Arduino via the SPI interface.
I wanted to also try out something different for the controller buttons. So I went with touch sensitive buttons. This uses a small module called the MPR121 capacitive touch sensitive breakout board containing a Freescale MPR121 chip that interfaces with the Arduino using the I2C interface. I became aware of them via Julian Illets youtube videos for his penny touch organ. The module has 12 touch sensitive electrodes in total. I am only using 7 for this project. The buttons themselves are drawing pins as it seemed the simplest way of getting a neat electrical connection from the front of the panel to the pins on the MPR121 board.
Another challenge was to use WS2812G RGB leds as indicators for each button. These I mounted onto the rear of some routed 6mm opal acrylic bezels to help diffuse the light. In turn these bezels where mounted through holes of the transport controllers front panel. The front of these pieces of acrylic had the basic transport control symbols routed into them and filled with acrylic paint. This has a nice effect of backlighting the symbols. When the unit is running each of the symbols are lit with a washout colour but when the button is pressed it goes to full saturation.
The power for the transport controller comes from an 18650 3.3V LiPo battery. The battery is charged via a micro USB connector which is mounted on the TP4056 based battery management board which takes care of charging the LiPo battery. From the outputs of the TP4056 there is a step up voltage board which takes the voltage of the 3.3v LiPo battery to 5v which powers the Arduino Nano. In hindsight I should ave used a 3.3v based Arduino as it would have saved using this step up board as all other parts in the transport controller can run from 3.3v.
|The receiver unit showing the USB power socket, MIDI connections and Joystick socket on the top.|
The receiver is a simple Arduino Nano with a nRF24L01+ attached. Pretty simple. One of my standard MIDI I/O boards is also mounted in the receiver case to transmit the incoming radio signals to the MIDI output and eventually controlling the software. Once again I used the Forty Seven Effects midi library.
|The joystick controller|
I have recently made an addition which is a joystick controller that sends out MIDI controller values for the X and Y positions of the joystick. This is something I wanted to control certain VST plugins within Sonar. One VST in particular which is a granular effect emulates a joystick on its own screen which I was able to attach to my new joystick controller. For this I made one of my acrylic cases to house the joystick with a 4 core cable running back to the transport controller receiver. The two signal lines from the joystick for X and Y are connected to two analogue voltage inputs on the Arduino and their values are converted into MIDI controller values. I found I needed to add a bit of smoothing via a couple of 100nF capacitors across the analogue input pins as the power coming from my USB 5v power supply which powers the receiver was a little noisy and affects the incoming joystick values.
The unit works well when doing recording mostly. I have the controller sitting on the keyboard I am using and with a simple setup with either audio package I can record and do other operations.