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.