Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / PhidKey.schelp
blob9d121f5e4ea5d630803a89334aed751c7c797882
1 class:: PhidKey
2 summary:: pattern that polls values from a human device interface, based on a named slot
3 related:: Classes/Phid, Classes/PhidSlot, Classes/GeneralHID
4 categories:: Streams-Patterns-Events>Patterns>User Input
6 ClassMethods::
8 method::new
10 argument::key
11 key defined in the link::Classes/Spec:: of the device, pointing to a slot like a button or an axis.
13 argument::device
14 a link::Classes/GeneralHIDDevice::, or an element from the code::GeneralHID.deviceList::, which will then be opened by the pattern.
16 argument::repeats
17 number of values to return.
19 Examples::
21 code::
22 // build the device list and start the event loop:
23 GeneralHID.buildDeviceList;
24 GeneralHID.startEventLoop;
26 // find an Impact game device and open it:
27 a = GeneralHID.open( GeneralHID.findBy( 1973 ) );
29 // define a spec:
31 a.add( \lx, [3,0]);     // left x
32 a.add( \ly, [3,1]);     // left y
33 a.add( \rx, [3,2]);     // right x
34 a.add( \ry, [3,5]);     // right y
36 // or find a spec defined previously for this device:
37 c = a.findSpec;
38 // set it:
39 a.setSpec( c[0] );
40 // inspect the spec
41 a.spec.map
42 a.caps;
44 // boot the server
45 s.boot;
46 // simple example:
48 p = Pbind(
49         \degree, ( PhidKey( \lx, a, inf )*12 ).round(1),
50         \dur, 0.25
51 ).play;
53 p.stop;
55 // more complex example, showing multichannel expansion and sequences of slots:
57 p = Pbind(
58         \degree, ( PhidKey( Pseq([[\lx,\ly],\rx,\ry],inf), a, inf )*12 ).round(1),
59         \dur, 0.25
60 ).play;
62 p.stop;
63 // clean up: close the device and stop the eventloop
64 a.close;
65 GeneralHID.stopEventLoop;