rollback to 3428, before the mysterious removal of libs/* at 3431/3432
[ardour.git] / libs / surfaces / frontier / tests / README
1 tranzport 0.1 <tranzport.sf.net>
2 oct 18, 2005
3 arthur@artcmusic.com
4 ---
5
6 The Frontier Design Tranzport(tm) (www.frontierdesign.com) is a simple
7 wireless USB device. It is not a MIDI device. The document on their web
8 site "Tranzport(tm) Native Mode Interface Description" describes the
9 Tranzport(tm) as if it were a MIDI device, but this is implemented by their
10 Windows and Macintosh software drivers.
11
12 This code will allow you to use your Tranzport(tm) at a lower level of
13 abstraction. This code relies on libusb, which can be obtained from
14 libusb.sourceforge.net.
15
16 To compile the program, type "make". You should end up with a executable
17 called "tranzport". You'll probably have to run this program as root.
18
19 Using the program is straightforward. It will simply tell you which
20 buttons are being pressed and what not. If you press one of the buttons
21 with a light, the light will turn on. If you hold shift and press one of
22 the buttons with a light, the light will turn off. If you take out the
23 batteries to the device (or go out of range), it will tell you that the
24 device is offline. When you replace the batteries (or come back in
25 range), it should tell you it is back online.
26
27 Once you understand how everything works, you should be able to
28 incorporate it into your own setup however you wish.
29
30 This code was developed on a Linux machine, but (theoretically) it
31 should work on any system that is supported by libusb, since that is how
32 it communicates with the device.
33
34 Here are a few more details about the device:
35
36 There are two endpoints for communication with the device. All data
37 reads and writes are done in 8-byte segments.
38
39 One endpoint is for interrupt reads. This is used to read button data 
40 from the device. It also supplies status information for when the device 
41 goes out of range and comes back in range, loses power and regains 
42 power, etc. The format of the data is:
43
44     00 ss bb bb bb bb dd 00  (hexadecimal)
45
46 where:
47
48     ss - status code, 01=online ff=offline
49     bb - button bits
50     dd - data wheel, 01-3f=forward 41-7f=backward
51
52 Please refer to the source code for a list of the button bits.
53
54 The other endpoint is for interrupt writes. This is used to toggle the
55 lights on the device, and to write data to the LCD.
56
57 There are 7 lights on the device. To turn a light on, send the following 
58 sequence of bytes:
59
60     00 00 nn 01 00 00 00 00  (hexadecimal)
61
62 where nn is the light number.
63
64 To turn a light off:
65
66     00 00 nn 00 00 00 00 00  (hexadecimal)
67
68 Here is the list of lights:
69
70     00  Record
71     01  Track Rec
72     02  Track Mute
73     03  Track Solo
74     04  Any Solo
75     05  Loop
76     06  Punch
77
78 The size of the LCD is 20x2, and it is split into 10 cells, each cell
79 being 4 characters wide. The cells progress across, then down. To write
80 to the LCD, send the following sequence of bytes:
81
82     00 01 cc aa aa aa aa 00  (hexadecimal)
83
84 where:
85
86     cc - cell number
87     aa - ASCII code
88
89 Here is a list of the cells to clarify:
90
91     00  row 0, column 0-3
92     01  row 0, column 4-7
93     02  row 0, column 8-11
94     03  row 0, column 12-15
95     04  row 0, column 16-19
96     05  row 1, column 0-3
97     06  row 1, column 4-7
98     07  row 1, column 8-11
99     08  row 1, column 12-15
100     09  row 1, column 16-19
101
102 You should refer to the "Tranzport(tm) Native Mode Interface
103 Description" document for a listing of the ASCII codes the LCD uses.
104