いらないモノ、ひつようなモノ

書籍、音楽、そして若干のテクノロジー

ボタンを利用したサンプル

←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>
  • odac
</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メモ 目次へ戻る