The Tirare is a custom performance interface. In Italian, Tirare means: (to) throw, (to) to pull. The name refers to the primary performative action employed in order to generate sound. Initially, I was trying to create a form of MIDI concertina. I wanted to pull and push the interface to generate sound, similar to a concertina. I also made the intentional choice to not use a myriad of interface sensors like buttons, switches, sliders, etc. My goal was to create a simple interface that could handle all operations without the need for excessive methods of control.
I decided to use a Gametrak as the primary hardware for this interface (https://en.wikipedia.org/wiki/Gametrak). I have used the Gametrak in previous performances as a controller. This time I set out to assimilate the pieces of the Gametrak into a new interface. I used only one of the joysticks in my final design.
The Gametrak is a video game controller created by In2Games. The Gametrak controller consists of two three-dimensional (3D) joysticks. Each joystick generates X, Y, and Z data (when the string is pulled out of the interface), so each joystick control works like three faders that are interdependent of one another. Each joystick can be manipulated on its X, Y, and Z axes. Each axis outputs an integer. The uniqueness of the Gametrak lies in the three-dimensional joystick. The handle on both 3D faders is connected to a string-pot that pulls out of the box. A string-pot is simply a potentiometer that is turned by pulling a long, spring-wound spool of string. This pulling of the string-pot turns the potentiometer which outputs data. According to In2Games, the mechanisms can determine position, "to an accuracy of 1 millimeter anywhere within a 3 meter cube around the unit, with no processor overhead or time delay." This level of responsiveness and precision was essential for the controller's original purpose — to control a virtual golf swing! This level of precision and responsiveness is also well suited for use as a real-time performance interface.
I disconnected the main logic board in the Gametrak and connected one of the joysticks directly to the analog inputs on an Arduino Pro Micro. Since the Arduino's ADC is 10-bit, the values genrated by the joysticks range from 0-1023. I scaled these values in the Arduino software to a range of 0-127 to conform to MIDI 1.0. Each axis of the joystick outputs two MIDI CC values. I programmed this feature to allow the Tirare to function with MPE software.
The next step was to reassemble the pieces into a new form. I looked for an old concertina thinking I could insert the Gametrak pieces but this search was unsuccessful. After several attempts to create my own bellow for the Tirare, I realized copying the physical form of a concertina would not work because there would be no way to keep the bellow from resting on the string. I decided to find a new physical form to house the Gametrak pieces. Ultimately, I chose to use two small round pieces of wood (craft store), basic drawer handles (Home Depot), and a small strainer (dollar store). I initially intended this design to be a working prototype and not the final product. However, I have yet to find a better way to embody the joystick.
I used the flywheel from the unused joystick to reroute the string from the potentiometer. This was necessary because I wanted the joystick as close to the center of the piece of wood as possible. However, the size and shape of the wood and the parts left me few options for assembly. It was important to route the string from the bottom of the joystick becue the IC board on the joystick prevented any other way of routing the string.
Data is generated when the joystick is moved or the string is pulled. The Arduino scales the incoming data and generates MIDI CC values. The Arduino sends MIDI data over USB to MaxMSP. I use MaxMSP to receive the MIDI data from the Tirare and route that data to Kyma to generate sound.
The string-pot also generates MIDI CC values during performance. I use MaxMSP to detect the direction the string is moving at any time, and I map that data to different destinations. I basically get two unique data streams from a single movement. In MaxMSP, I set thresholds at various points along the movement of the string in order to generate events that are used to trigger notes (see photo below), CC values, and control messages for Kyma.
My software is very simple. I use the view on the left (below) to initialize the Tirare and turn on the three axes. I use the view on the right (below) during performance to monitor the values from each axis and to monitor where the string values are in relation to the triggers I set up for controlling notes, expression, and control for Kyma.
The Tirare is only a controller and does not generate sound. The combination of physical interface, software mapping layer, and sound production software make up the entire Data-driven Instrument for live performance.
The next step for this projects is to allow for MIDI over USB or Bluetooth. I am currently working on a Max patch that will allow the Tirare, when connected, to change the way it transmits MIDI -- USB or BLE. I also still have hope that I will dream up a better physical form for the Tirare.
***Video Coming Soon!