←csoundメモ 目次へ戻る
android上で動作する、ボタンを利用したcsoundのサンプルを以下に示す。
各ボタンに個別の波形を割り当てて、各ボタンが一度押されると、
発音される音にその波形を加えたものを利用して1秒間音を出す。
もう一度押されると状態が反転してその波形を加えずに発音する。
;
; AndroidButton.csd
; -use 5 buttons
;
; description:
; assume that the buttons as 'on/off' button. A touch changes
; its status from BUTTON to ~BUTTON.
; assume that the different waveforms is assigned on each
; buttons, like
; button1 ->SIN
; button2 ->complex SIN
; button3 ->Chebyshev
; button4 ->SQUARE
; button5 ->SAW2
;
; summasion of waveforms which is flagged and weighted is sent to
; outputs
<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsScore>
f1 0 65536 10 1 ;SIN
f2 0 65536 10 1 0.5 0.1 ;SIN+0.5*octave+0.1*octave2
f3 0 65536 13 1 1 0 0 0 0 0 0 0 -1 0 1 0 0 -.1 0 .1 0 -.2 .3 0 -.7 0 .2 0 -.1; Chebyshev
f4 0 65536 7 1 512 1 0 -1 512 -1 ;SQUARE
f5 0 65536 10 0 1 0 .5 0 .25 0 .125 0 .0625 0 .03125 0 .015625 ; SAW2
t 0 180
i1 0 36000
e
</CsScore>
<CsInstruments>
sr = 44100
ksmps = 10
nchnls = 2 ; 2 channnel
;
; sense the button
;
instr 1, GetButtonState
kbst fillarray 0,0,0,0,0
kb fillarray 0,0,0,0,0
kbtrg[] fillarray 0,0,0,0,0
kb[0] chnget "butt1"
kb[1] chnget "butt2"
kb[2] chnget "butt3"
kb[3] chnget "butt4"
kb[4] chnget "butt5"
kIndx = 0
;
; trigger opcode does not work with until
;
kbtrg[0] trigger kb[0], 0.5, 0
kbtrg[1] trigger kb[1], 0.5, 0
kbtrg[2] trigger kb[2], 0.5, 0
kbtrg[3] trigger kb[3], 0.5, 0
kbtrg[4] trigger kb[4], 0.5, 0
until kIndx == lenarray(kbtrg) do
; kbtrg[kIndx] trigger kb[kIndx],0.5,0
kbst[kIndx] = (kbtrg[kIndx]==1 ) ? ~ kbst[kIndx] : kbst[kIndx]
kIndx +=1
od
kamp=0.7
kdur=1.0
ksum sumarray kbtrg
if ksum>0 then
event "i",2,0,kdur,kamp,kbst[0],kbst[1],kbst[2],kbst[3],kbst[4]
endif
endin
;
; sends the signal to outputs
;
instr 2, SendSignal
printf_i "on/off=%d/%d/%d/%d/%d\n",1,p5,p6,p7,p8,p9
asig1 oscil p4*0dbfs, 440, 1
asig2 oscil p4*0dbfs, 440, 2
asig3 oscil p4*0dbfs, 440, 3
asig4 oscil p4*0dbfs, 440, 4
asig5 oscil p4*0dbfs, 440, 5
asig=(asig1*p5+asig2*p6+asig3*p7+asig4*p8+asig5*p9)/(p5+p6+p7+p8+p9)
outs asig, asig
endin
</CsInstruments>
</CsoundSynthesizer>
←csoundメモ 目次へ戻る