Csndsugui: Difference between revisions
(New page: csndsugui is a toolkit for Csound-sugar activity development Writing activities using csndsugui 1. Import the relevant modules import csndsugui from sugar.activity import activity 2. C...) |
No edit summary |
||
Line 5: | Line 5: | ||
1. Import the relevant modules |
1. Import the relevant modules |
||
import csndsugui |
import csndsugui |
||
from sugar.activity import activity |
from sugar.activity import activity |
||
2. Create an empty activity class, such as |
2. Create an empty activity class, such as |
||
Line 49: | Line 49: | ||
of each of the controls in channels of the software bus: |
of each of the controls in channels of the software bus: |
||
kosc chnget "oscil" |
kosc chnget "oscil" |
||
kpit chnget "pitch" |
kpit chnget "pitch" |
||
Channel names will be linked to widget labels ("oscil" and |
Channel names will be linked to widget labels ("oscil" and |
||
Line 58: | Line 58: | ||
above. Important exceptions are: |
above. Important exceptions are: |
||
8.1 Message button: |
8.1 Message button: |
||
mbutton(self,box,mess,title="") |
|||
where mess is a RT score event or message to |
where mess is a RT score event or message to |
||
be sent to Csound (in most cases an i-statement, |
be sent to Csound (in most cases an i-statement, |
||
but f-statements are also possibilities). |
but f-statements are also possibilities). |
||
8.2 Callback button: |
8.2 Callback button: |
||
cbbutton(self,box,callback,title="") |
|||
where callback is a Python function that will |
where callback is a Python function that will |
||
be invoked when the button is clicked. |
be invoked when the button is clicked. |
Revision as of 20:01, 18 March 2008
csndsugui is a toolkit for Csound-sugar activity development
Writing activities using csndsugui
1. Import the relevant modules
import csndsugui from sugar.activity import activity
2. Create an empty activity class, such as
class MyCsoundActivity(activity.Activity):
def __init__(self, handle): activity.Activity.__init__(self, handle)
3. Instantiate a CsoudGUI object, passing the
activity instance as an argument:
win = csndsugui.CsoundGUI(self)
4. Set and compile Csound code:
win.CSD("mycode.csd")
It is CRUCIAL that Csound compiles successfully before the widgets below are created. Otherwise they will not be assigned channels in the software bus and thus will not communicate with Csound. This method returns 0 if successful.
5. Use boxes to format and contain widgets, child boxes can be contained within parent boxes. The top-level box does not have any parents.
box = win.box()
See the documentation on PyGTK on how boxes are used to set the formatting. CsoundGUI will take care of all the packing for you.
6. You can then add widgets to it, ie:
win.button(box,"oscil") win.slider(1.0,0.25,4.0,90,250,box,"pitch", linear=False)
7. In your Csound code, you can retrieve the value of each of the controls in channels of the software bus:
kosc chnget "oscil" kpit chnget "pitch"
Channel names will be linked to widget labels ("oscil" and "pitch" in the example above)
8. Most widgets will work within the principle outlined above. Important exceptions are:
8.1 Message button:
mbutton(self,box,mess,title="")
where mess is a RT score event or message to be sent to Csound (in most cases an i-statement, but f-statements are also possibilities).
8.2 Callback button:
cbbutton(self,box,callback,title="")
where callback is a Python function that will be invoked when the button is clicked.
8.3 Special button names: "play", "pause" and "reset". These are assigned special messages that are not captured by the software bus. Instead, they can control Csound performance, starting, pausing and reset Csound performance (they are linked to CsoundGUI.play(), CsoundGUI.pause() and CsoundGUI.reset() methods.)
On-line help can be obtained by importing the csndsugui module and involking help(csndsugui).