Previous: sfplugin, Up: Marsystem Interaction


4.7.2 msl

One of the most useful and powerful characteristics of Marsyas is the ability to create and combine MarSystems at run time. msl (marsyas scripting language) is a simple interpreter that can be used to create dataflow networks, adjust controls, and run sound through the network. It's used as a backend for user interfaces therefore it has limited (or more accurately non-existent) editing functionality. The current syntax is being revised so currently it's more a proof-of-concept. Msl has been inactive for a while as the SWIG bindings to scripting language seem to be the way to go.

Here is an example of creating a simple network in msl and playing a sound file:

     msl
     [ msl ] create Series playbacknet
     [ msl ] create SoundFileSource src
     [ msl ] create Gain g
     [ msl ] create AudioSink dest
     [ msl ] add src  > playbacknet
     [ msl ] add g    > playbacknet
     [ msl ] add dest > playbacknet
     [ msl ] updctrl playbacknet SoundFileSource/src/string/filename technomusic.au
     [ msl ] run playbacknet

The important thing to notice is that both the creation of MarSystems and their assembly into networks can be done at run-time without having to recompile any code. It also possible to use the GNU readline utility to provide more friendly user editing and command completion in Msl.