Skip to content

A General-Purpose UI for Csound on Android

March 16, 2012

Spurred on by some friends, I went on to put together a simple UI for playing with Csound on Android. Basically, I put together five sliders, five press buttons and a trackpad, plus accelerometer. This simple app can run CSD files that can tap the values in the controls, via the chnget opcode and named channels. It has a browse button that lets users load in a CSD from the filesystem.

the csdplayer UI

A few user instructions are in order:

1. controls are all 0-1 except accelerometer that has much narrower range and has to be amplified by around 1000 to give significant range.

2. channel names are as in the UI (slider1 etc.). Buttons have 2 extra channels “channel_name.x” and “channel_name.y” with the touch coordinates;

trackpad has 2 also: trackpad.x and trackpad.y

3. buttons are press-down rather than trigger: 1 down 0 otherwise. Their x and y will also be 0 when there is no touch (idem with trackpad)

4. accelerometer channel names are: “accelerometerX”, “accelerometerY” and “accelerometerZ”

5. On my tab the UI does not allow 2 controls to be adjusted simultaneously (I think this might be an Android limitation), so buttons etc

are “monophonic”. Trackpad is monophonic, but this might change in the next version, once I work out a channel naming scheme.

6. The on/off switch will go off at the end of the performance, if you reach it.

A very basic CSD showing an example of how to access controls is shown below. Users can supply their own Csound code to run with the app.

<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>

; example function table
f 1 0 16384 10 1

; example event
; 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>

Finally, here is the link to the app:


CsoundApp.apk

The source code and Eclipse project can be found in csound5 git:

git://csound.git.sourceforge.net/gitroot/csound/csound

About these ads

From → Android, Csound

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 30 other followers

%d bloggers like this: