GameTrak notes

From Helpful
Revision as of 17:56, 15 June 2021 by Helpful (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Intro

Gametrak rev1 modified for MIDI (and CV)

GameTrak is a controller that was used by a few games on Playstation 2, and later also PC, and Xbox.

See images, but more interestingly, look at videos like Game Trak Theory Ge Wang: The DIY orchestra of the future, Line of voice and string -for Game-trak controller, Kyma system.

See also:



Gametrak internals

Device internals are fairly simple, two copies of:

a wire spool (middle area) that rotates a potentiometer as it is pulled out
...physically threaded through the middle of an analog joystick (on the sides) much like those in gamepads.
Which is one pot per axis

All pots are 5kOhm.


There's also a chunky weight that keeps the thing on the floor.



Board

rev2 board, with the markings of what to bridge for PC and Xbox

The IC on the board is epoxy-blob'd, so presumably custom.

While PS2, PC, and XBox variants all look the same and are all connected through USB, they are not quite interchangeable out of the box.

Some revisions can be easily tweaked, others not.


Board revisions

All boards are USB, so all are detected fine on a PC (name, HID, layout).

...but Rev 1 is PS2-only will in that it will not seem to output any values on PC. (I've always assumed such incompatibility between consoles was intentional, and at data level rather than USB level).

....while Rev 2 can be bridged for PS2, Xbox, and PC - it's even silkscreened as such.


They probably developed it for PS2 initially, then decided they wanted to release it for other platforms.


Interfacing one with software

If you have a rev2, then you take a few minutes to solder-bridge it for PC and you're ready.

...ready for for anything that takes joystick style input, that is, which e.g. most music production software allows in some way or other, be it any DAWs that can take joystick-like input, or software like ChucK or Kyma or Max.


I also have a rev1.

It's presumably possible to create a PS2-gametrak-specific driver to deal with the different format, but not really a convenient solution in that most platforms do not make custom drivers very easy to use (and it being HID doesn't make that easier).

So this became a DIY project instead:

Your own hardware

The potmeters are all 5kOhm, so putting them across Vcc and Gnd is fine (takes a few mA in total at 5V), and the middle to an ADC doesn't even need any extra components.

All you need is a board with an ADC that muxes to at least 6 pins (because six pots), and that includes most arduino-style boards, and an Arduino Nano or Micro should fit in there easily enough.


Which means the electronics work is mostly just wiring. My version is little more than a bunch of cutting, soldering, heat-shrinking, and hotsnotting down the Arduino Micro.


You can go a more custom if you want. For example, this project made a PCB you can fasten and plug everything into, like the original board.

There's a number of similar projects and plans you can find around.


The things you want to plan up front

  • how to fasten the microcontroller, and how to expose the USB
you could expose the socket, but I figure it'll break less quickly if you do the socket bit inside so you can tension-relief on the cable
  • what you want to output - serial MIDI, USB-MIDI, CV, or such.
I went for
serial MIDI because I didn't have a ATmega8U2 style board on hand
and prepared for (PWM based) CV.



Generic output towards a DAW would probably map each axis to its own CC, so that you can decide on the DAW end what to do with it.


I wanted it to be more of an instrument that doesn't need heavy DAW-internal mapping, so experimented with

  • one side controlling
    • which note is being played (remembered for next note trigger)
    • quantizing that to different scales (remembered for next note trigger)
    • pitch bending (sent as CC)
  • the other side
    • triggering notes pluck-style (sent as NteOn), or bow-style (sent as CC)
    • have otherwise unused axes send CC

It turns out that imitating motions of a real instrument makes a lot more intuitive sense when you have six degrees of freedom.


TODO: play with the code more and put it on github