AndroidでCsoundのコードを実行してみよう
この文書はVictor Lazzariniのブログを翻訳したものです。前のブログでCsoundをサウンドライブラリにして自分のAndroidアプリを作るみたいなことを紹介しましたが、今回はAndroid上でCsoundのコードをCsound Playerで実行するという話です。そう、AndroidだけでCsoundのコードを実行できます、色々注意しなければなりませんが。
>>>以下本文
皆さんによる叱咤で、私はAndroid版Csoundに、演奏するためのシンプルなUIを持たせることにした。基本的に、5つのスライダーと5つのボタンとトラックパッドと加速度計を配置している。このシンプルなアプリは、CSDファイルを走らせることができる、chgetオプコードと名付けたチャンネルでもって、コントローラーの値をタップで変えることができる。browseボタンで、利用者がファイルシステムからCSDファイルを読み込める。
備考は以下のように
1.コントローラは、加速度計を除いてすべて0から1のとっても狭い範囲なので、十分の範囲にするにはだいだい1000によって増幅しなければならない。
2.チャンネル名はUI(slide1のように)にあるようになる。ボタンは、余分に2つのタッチした座標である"channel_name.x"と"channel_name.y"のチャンネルを持つ。
またトラックパッドも、"trackpad.x"と"trackpad.y"。
3.ボタンはトリガーと言うよりはプレスダウンで、つまりダウンが1でそれいがいは0です。タッチしてないときは、ボタンのxとy座標も0になる(トラックパッドも同様)。
4.加速度センサーのチャンネル名は"accelerometerX"と"accelerometerY"と"accelerometerZ"だ。
5.私のタブレットで、UIは2つを同時に調整することができないようになっている(思うにAndroidの制限なのかもしれない)。ん、ボタンなんかはモノフォニックだよ。トラックパッドはモノフォニックなんだが、チャンネルの命名スキームが思いついたりしたら次のバージョンにおいて変更するかもしれない。
6.オンオフ・スイッチは演奏の終了時にオフにして。
コントローラにアクセスする基本的なCSDの書き方は以下のとおり。利用者はアプリで走らせる自身のCsoundコードを使える。
<CsoundSynthesizer> <CsOptions> -odac -+rtaudio=null -d </CsOptions> <CsInstruments> nchnls = 1 instr 1 idur = p3 iamp = p4*0dbfs icps = p5 iatt = p6 idec = p7 itab = p8 k3 init 1 k1 chnget "slider1" k1 port k1+1, 0.01, 1 a1 expseg 1,idur-idec,1,idec, 0.001 a2 linen a1, iatt, idur, 0.005 a3 oscili a2*iamp, icps*k1, itab k3 chnget "trackpad.x" k3 portk k3, 0.01 out a3*k3 chnmix a3*k3, "reverb" endin instr 100 asig chnget "reverb" a1,a2 freeverb asig,asig, 0.8, 0.7 out (a1+a2)*0.1 chnclear "reverb" endin </CsInstruments> <CsScore> ; 関数テーブルの例 f 1 0 16384 10 1 ; イベント例 ; ins st end amp cps att dec tab i 1 0 3600 0.5 440 0.01 .9 1 i 100 0 -1 </CsScore> </CsoundSynthesizer>
最後にアプリのリンクはここ。
CsoundApp.apk
ソースコードとEclipseプロジェクトはcsound5.gitで見つけることができる。
git://csound.git.sourceforge.net/gitroot/csound/csound