web interfaces for audiovisual process systems
intro
I want to write here some info about the work i'm doing this year in investigation and development on FLOSS audio/visual systems on the internet. My aproximation is based in Open Sound Control like a protocol to send/receive data between diferent machines and devices in network.
You can read more about OSC in the website of the project http://www.cnmat.berkeley.edu/OpenSoundControl/, also you can find there implementations of this protocol for many programming languages and systems. In my case i use the PHP implementation and the OSC library for PureData.
metodology
My aproximation is based in client-server model and the basic idea is to use OSC like an interlocutor between a web page (the client) and a machine running PureData(the server) that is working in some audiovisual process that accepts the web visitors interaction.
In the server side i use PureData cause for me is the most powerful and flexible tool for real time audiovisual processing. Pure Data is Free Software and you can read more about it in http://www.puredata.info.
In the web page side, i use the Walter Zorn DHTML library, that also is Free Software, to add more fun to the interface with dinamic sliders, i othen resulting thinks like this: (sorry this example only works in mozilla browsers)
As you can see, when you move the sliders the bottom frame reloads a php script that is who sends the OSC data to the IP and Port where PD is listening.
If you want to use my stuff to do this download this tar file and try ... sorry, it's not fully documented, but if you read the README of the package and have some experience in PHP scripting i'm sure you can make it work in a easy way.
I'm working in a next stage where a PHP socket receive data from PD, then you can see the sliders moving when others change the values ....
applications
with this structure we can think in diferent types of applications ::
1 collaborative applications :: where all the "clients" works together in the same PD application, collaboring in the final result of that, also we can divide in two groups here ::
1.1 applications where all the "clients" has the same rol ::
examples o this could be :: a web page where the people that enter can change the color for the lights in a room/building, anotherone can be a web page where the people can send a text that is projected on a wall, etc ...
1.2 applications where a finite number of "clients" has diferent roles ::
it can be like a virtual sintethizer where each "client" controls a different track ...
2 individual applications :: the server is able to create a new aplication (like a servlet) for each connected "client", in yhis case every "client" has an independent result depending only from his own interaction.
this model can overload a lot the server, we must to establish a limit of connections. in our case there are a php script that launch a new "pd -nogui" for each "client" and edit a patch only for him changing the values of the port where that receives the OSC data.
an example of this can be a personalized playlist that each "client" can change and listen.
why?
why a web interface?
ofcourse there are other ways to work in a network, some more eficients than a web page, but in our case we think that the web is the most used of those and we want to make easy to the users.
why html+javascript?
we don't want to force our users to install plugins.