AndroidでCsoundのコードを実行してみよう

この文書はVictor Lazzariniのブログを翻訳したものです。前のブログでCsoundサウンドライブラリにして自分のAndroidアプリを作るみたいなことを紹介しましたが、今回はAndroid上でCsoundのコードをCsound Playerで実行するという話です。そう、AndroidだけでCsoundのコードを実行できます、色々注意しなければなりませんが。

>>>以下本文

原文 http://goo.gl/jaSc3

Csound on Android の決め打ちUI

皆さんによる叱咤で、私はAndroidCsoundに、演奏するためのシンプルな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