[chuck-users] Controling Chuck - building accessible GUI

Veli-Pekka Tätilä vtatila at mail.student.oulu.fi
Mon Nov 19 19:07:42 EST 2007


Hi Rich,
I'm a fellow legally blind screen reader and magnifier user interested
in ChucK running Win XP and the Dolphin Supernova reader & magnifier. I
think our goals are actually quite similar. Although I must confess I
haven't done much with ChucK lately. In addition to the cool, domain
specific programming language it has, one of the big ideas intriguing me
is the ability to use a modular synth independently. Needless to say
I've never really used hardware modulars but did use Generator and
reaktor before they went with portable and inaccessible custom controls
and forgot both the keyboard interface and the user's color scheme. In
the end, despite being a programmer, too, my goal is to do music rather
than pure sound design or DSP so I would like to keep things practical.
Nord Micro Modular is something that I'll have to look into, however I
suppose the editor just is not accessible, at least the G2 demo release
is not.

So my thought was since I cannot use Reaktor, I would like to be able to
achieve the equivalent thing somehow, at a practical level, putting
together modules, binding hardware knobs to synth parameters, saving
presets and playing the whole thing via MIDI in real time. In that
context ChucK was not LInux only, was more real time than C Sound
apparently and had a nice, easy programming language for the job.

So far I am very far from realizing this Reaktor killer for the blind
for several reasons. First of all there's no GUi really or no very easy
environment to simply load a particular synth and tweak away. If there
was an accessible GUi library for ChucK natively, and OO features like
reflectionand access to object symbol tables (read hash or dict), one
might be able to implement a facility that shows the user a list of
editable synth parameters, and let's you MIDI learn any of them, saving
the whole thing with the synth. This is very hard to do currently, you
have to hardcode controller values and right some of the MIDi handling
logic yourself, unless I'm much mistaken.

The other major point is that ChucK's orientation is still at the
Reaktor core level or lower and the focus seems to be on experimental
sound design and DSP rather than on the modular end user level like that
of Reaktor, Vaz Modular or the Nord, for that matter. With that said,
there are very few analogs of the basic Reaktor building bloks at the
module level, the idea is that you program them in on an ad hoc basis,
which is fine if you just want to program. But if I'd like to use ChucK
as a conventional modular environment, emulating existing modular
patches and doing as little programming as you do in AHDL, when you plug
logic components together, then ChucK isn't currently very well suited
to that purpose. Of course, I'd like to handle patching textually,
that's much faster than trying to achieve accessible, direct
manipulation.

Of course, since ChucK is fully programmable, nothing would stop you
from recreating say the Reaktor 3 module library from scratch,
especially given how much content there's for chucK already and how well
the individual Reaktor modules have been documented. Still, this is a
very big job and something I'm not up to yet. However, this might work
well as a
collaborative project, if the scope was narrowed to very early releases
and an essential subset of the modules. The only thing I've emulated so
far is the audio switch, with a parameterizable number of inputs, if I
recall correctly.

Your idea of using OSC and XUl is an interesting one though I know very
little about both, I know much more about MIDI. Of the languages
mentioned I only know Perl really well. One thing that worries me,
though, is the accessibility of the Mozilla components. The thing is
with Dolphin's mediocre support for FireFox, it is not quite as
accessible as IE is just yet. So I'm afraid controls derived from it
might be unusable at worst, Thunder Bird sure is not usable with Dolphin
Supernova, much as I'd liek to. Testing is the only way to tell how well
this XUL thingy works, I suppose. I suspect you're using the Jaws screen
reader.

Finally, given that ChucK doesn't currently support the kind of work I'd
liek to do with it very well, and if you don't mind me asking, are there
other environments that maybe serve me better? Reaktor is out of the
question and somehow I've never been truely thrilled by SynthEdit. One
app in addition to C Sound I always see mentioned about Linux and
modulars is something called the Super Collider. Is that closer to what
I'm looking for and what are the major differences to ChucK?  I seem to
recall Emacs being mentioned in that context, I've never gotten
EmacsSpeak to run, although have a Ubuntu VM here.

Last but not least, Rich, you might want to join the synth_programming
Yahoo group. In addition to me there's at least one blind synth knut
there, plus some mathematicians and programmers. We often talk about
exotic forms of synthesis, and in fact I learned about chucK on the
list, since my speech friendly pseudo code representations of modular
patches started to bear a resemblance to ChucK code, which someone
kindly pointedd out.

my $self = shift;
$self->Sleep(); # It is way beyond midnight localtime.

-- 
With kind regards Veli-Pekka Tätilä (vtatila at mail.student.oulu.fi)
Accessibility, game music, synthesizers and programming:
http://www.student.oulu.fi/~vtatila

Rich Caloggero wrote:

Rich Caloggero wrote:
There was a thread on this list back in January about control of chuck
via OSC, a Python package.  I have a few questions:

First, I'm blind and use a screen reader. I want to build something that
allows me to control chuck sreds via a GUI.  I don't like Python much
for programming, and am not sure if OSC would even work with my screen
reader (anyone have any quick demos I could try just to see if the
screen reader will deal with the UI toolkit at all)?  

What I was thinking of doing is building something in Mozilla's XUL
language. This does have the ability to send network packets, and also
can execute shell commands.  So, was thinking about writing code in
chuck and then pass arguments to each .ck file to change parameters. Of
course, this might not work so smoothly if we wanted to change things on
the fly.  FOr this I guess I'd  need to implement something like OSC's
message passing scheme in XUL.

Any advice, or suggestions?  Anyone interested in rewriting audical so
it works with a screen reader?  There are so many great software
synthesizers on the market now that work as both stand alone and/or
plugins to popular hosts like Cakewalk's Sonar, but none that I've ever
tried will allow the screen reader enough control to do real sound
design. With effort, one can usually figure out how to change presets,
but in a large number of cases even this is not possible. I was hoping
that chuck could be used to build a fully accessible sound designers
toolbox that could allow one to do things quickly and easily without
having to write too much code. I've obviously never used it because it
is very graphically oriented, but think of something like PD "Pure
Data". You aparently can build all sorts of neat stuff by just plugging
stuff together, without having to write a line of code.

Thanx for any thoughts/suggestions...
-- Rich


More information about the chuck-users mailing list