1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<programlisting>
<emphasis role="csdtag"><CsoundSynthesizer></emphasis>
<emphasis role="csdtag"><CsOptions></emphasis>
<emphasis role="comment">; Select audio/midi flags here according to platform</emphasis>
-odac <emphasis role="comment">;;;realtime audio out</emphasis>
<emphasis role="comment">;-iadc ;;;uncomment -iadc if realtime audio input is needed too</emphasis>
<emphasis role="comment">; For Non-realtime ouput leave only the line below:</emphasis>
<emphasis role="comment">; -o joystick.wav -W ;;; for file output any platform</emphasis>
<emphasis role="csdtag"></CsOptions></emphasis>
<emphasis role="csdtag"><CsInstruments></emphasis>
<emphasis role="ohdr">sr</emphasis> <emphasis role="op">=</emphasis> 44100
<emphasis role="ohdr">ksmps</emphasis> <emphasis role="op">=</emphasis> 32
<emphasis role="ohdr">nchnls</emphasis> <emphasis role="op">=</emphasis> 2
<emphasis role="comment">;0dbfs = 1</emphasis>
<emphasis role="oblock">instr</emphasis> 1 <emphasis role="comment">; gives information about your joystick in real time</emphasis>
kmask joystick 0, 1
kidx <emphasis role="op">=</emphasis> 2
kaxes <emphasis role="opc">tab</emphasis> 0, 1 <emphasis role="comment">; number of axes has been stored in position 0</emphasis>
kbuttons <emphasis role="opc">tab</emphasis> 1, 1 <emphasis role="comment">; number of buttons has been stored in position 1</emphasis>
<emphasis role="opc">printf</emphasis> "this joystick has <emphasis role="op">%</emphasis>d axes, <emphasis role="op">%</emphasis>d buttons\n", kidx, kaxes, kbuttons
kuniq <emphasis role="opc">init</emphasis> 0
<emphasis role="olabel">reportaxis</emphasis><emphasis role="op">:</emphasis> <emphasis role="comment">; first we see if we have any x/y input</emphasis>
kcheck <emphasis role="op">=</emphasis> kmask <emphasis role="op">&</emphasis> (1<emphasis role="op"><</emphasis><emphasis role="op"><</emphasis>kidx)
<emphasis role="octrl">if</emphasis> kcheck <emphasis role="op">==</emphasis> 0 <emphasis role="octrl">kgoto</emphasis> <emphasis role="olabel">nexta</emphasis>
kres <emphasis role="opc">tab</emphasis> kidx, 1
kuniq <emphasis role="op">=</emphasis> kuniq <emphasis role="op">+</emphasis> 1 <emphasis role="comment">; to be sure to make the printf print</emphasis>
<emphasis role="opc">printf</emphasis> "axis <emphasis role="op">%</emphasis>d, value <emphasis role="op">%</emphasis>6d\n", kuniq, kidx<emphasis role="op">-</emphasis>2, kres
<emphasis role="olabel">nexta</emphasis><emphasis role="op">:</emphasis>
kidx <emphasis role="op">=</emphasis> kidx<emphasis role="op">+</emphasis>1
<emphasis role="octrl">if</emphasis> kidx <emphasis role="op"><</emphasis> (kaxes<emphasis role="op">+</emphasis>2) <emphasis role="octrl">kgoto</emphasis> <emphasis role="olabel">reportaxis</emphasis>
<emphasis role="olabel">reportbutton</emphasis><emphasis role="op">:</emphasis> <emphasis role="comment">; now we check for any buttons pressed</emphasis>
kcheck <emphasis role="op">=</emphasis> kmask <emphasis role="op">&</emphasis> 1<emphasis role="op"><</emphasis><emphasis role="op"><</emphasis>kidx
<emphasis role="octrl">if</emphasis> kcheck <emphasis role="op">==</emphasis> 0 <emphasis role="octrl">kgoto</emphasis> <emphasis role="olabel">nextb</emphasis>
kres <emphasis role="opc">tab</emphasis> kidx, 1 <emphasis role="comment">; a button has been pressed, get from table</emphasis>
<emphasis role="opc">printf</emphasis> "button <emphasis role="op">%</emphasis>d, pushed\n", kidx<emphasis role="op">*</emphasis>kres, (kidx<emphasis role="op">-</emphasis>(kaxes<emphasis role="op">+</emphasis>2))
<emphasis role="opc">printf</emphasis> "button <emphasis role="op">%</emphasis>d, released\n", kidx<emphasis role="op">*</emphasis>(1<emphasis role="op">-</emphasis>kres), (kidx<emphasis role="op">-</emphasis>(kaxes<emphasis role="op">+</emphasis>2))
<emphasis role="olabel">nextb</emphasis><emphasis role="op">:</emphasis>
kidx <emphasis role="op">=</emphasis> kidx<emphasis role="op">+</emphasis>1
<emphasis role="octrl">if</emphasis> kidx <emphasis role="op"><</emphasis> (kaxes<emphasis role="op">+</emphasis>kbuttons<emphasis role="op">+</emphasis>2) <emphasis role="octrl">kgoto</emphasis> <emphasis role="olabel">reportbutton</emphasis>
<emphasis role="oblock">endin</emphasis>
<emphasis role="csdtag"></CsInstruments></emphasis>
<emphasis role="csdtag"><CsScore></emphasis>
<emphasis role="stamnt">f</emphasis>1 0 32 7 0 7 0 <emphasis role="comment">; will hold the joystick data</emphasis>
<emphasis role="stamnt">i</emphasis>1 0 60000
<emphasis role="stamnt">e</emphasis>
<emphasis role="csdtag"></CsScore></emphasis>
<emphasis role="csdtag"></CsoundSynthesizer></emphasis>
</programlisting>
|