summaryrefslogtreecommitdiff
path: root/examples-xml/joystick.csd.xml
blob: cff74d941a3bd8af3a1ac8f567e112cd56da6ec2 (plain)
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">&lt;CsoundSynthesizer&gt;</emphasis>
<emphasis role="csdtag">&lt;CsOptions&gt;</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">&lt;/CsOptions&gt;</emphasis>
<emphasis role="csdtag">&lt;CsInstruments&gt;</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">&amp;</emphasis> (1<emphasis role="op">&lt;</emphasis><emphasis role="op">&lt;</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">&lt;</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">&amp;</emphasis> 1<emphasis role="op">&lt;</emphasis><emphasis role="op">&lt;</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">&lt;</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">&lt;/CsInstruments&gt;</emphasis>
<emphasis role="csdtag">&lt;CsScore&gt;</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">&lt;/CsScore&gt;</emphasis>
<emphasis role="csdtag">&lt;/CsoundSynthesizer&gt;</emphasis>
</programlisting>