Hi folks,
I was playing a bit with csound in the last days and - with the help of a nice italian multimedia artist Cesare Marilungo - got some first success producing some csound events from squeak using OSC (Open Sound Control). OSC is a light way protocol with which one can send messages to an ip/port combo including some strings, floats or blobs. It exists for csound, python, squeak and lots of other systems, usually works on top of udp, but can be changed to work on tcp/ip too.
http://www.cnmat.berkeley.edu/OpenSoundControl/OSC-spec.html
Until now we are using the sound bank from Tamtam, so no real soft synthesis but sampling. It's fun to create and listen to sounds via scripts a la
frequency := 200. velocity := 30000. start := 0. instrument := 12. duration := 11. (OSCMessage for: {'/squeak/osc'. frequency. velocity. start. instrument. duration}) sendTo: (NetNameResolver localHostAddress) port: 1122.
Nothing fency yet, but much more synchronized tunes are possible, as you can tell csound when to trigger the events, within Squeak I encountered some problems there... http://www.squeakland.org/project.jsp?http://www.emergent.de/pub/ smalltalk/squeak/projects/musinum.pr (first start the midi service with the button on the left top, this is _not_ using csound...yet)
The tamtam people are using csound by sending python scripts through the ether - hoping that they will do no harm. As far as I understand some sandboxing is on the way for python but I wonder when it will arrive...
I asked Bert off list how to start another app from squeak, he told me that neither FFI nor OSProcess will be included for security reasons. Makes sense. But then we need another solution to start and talk to other apps, ideally also fruitful for inter-app communication between python apps - or between Etoy Apps.
SO: I wonder what you folks think about using OSC as a general inter- application protocol for the OLPC? For starting another app I'd suggest to have a server which knows (white lists) all securely executable apps and provides an OSC interface. This server (like all OSCed Apps should) can also display all its executable services/apps.
Then apps like Etoys needing to start other apps (like Etoys needed to start csound) could ask this server to start their needed client apps. Each app can be reached via OSC on a different port, as soon as the server started the other app, it tells the starting app the port number of the started app so that they can talk directly to each other. Again no further security measures needed, as each app whitelists its available services.
If you have a hammer the whole world looks like a nail? Or could Open Sound Control fit to the "Instrument whose music is ideas"? ;-)
Very curios about your views on that.
Cheers,
Markus