Next: , Previous: Top, Up: Top


Surmulot is an integrated environment for music composition. It has many entry points, making it the liking of a large toolbox, or a laboratory.

You can use it to produce melodies, and possibly sound. Which, together, may be music. You can also create graphical user interfaces for interactive compositions.

How Surmulot came to existence is related in this page:

Music-wise, the scope of Surmulot is quite broad. Very elementary musical structures are implemented at the bottom, then used to create more and more abstract high-level structures. The bottom level is simply about mixing and sounds. High levels includes workable music theory concepts such as modes, chord progressions, indian taals and ragas, and also more or less experimental computer music metaphors such as projection fields, tendency masks or Xenakis sieves.

Surmulot understands several common music representation formats, such as MIDI, ABC, Keykit phrases, Scala scales, Csound scores and tabla bols.

Interface with other software happens either via OSC or MIDI (for csound, Supercollider), via local network connection (Keykit), or Emacs subprocesses (Csound, Java, Python, Lisp).

Practically speaking, Surmulot can be divided in two big parts: the textual front-end, which is Emacs, and the interactive graphical environment, which is MuO.

Both parts are actually full-featured programming environments, with their own langages: Emacs Lisp, and Squeak Smalltalk.

They have complementary world views: Emacs works with files, which it can edit in very powerful ways, and processes (it can monitor the execution of Csound, for example). On the other hand, Squeak works with objects living all together in a big image, which is the MuO world. When you quit Surmulot, all data pertaining to Emacs will be saved on files or be forgotten, while the image where live all MuO objects will simply be frozen, ready to get back to life exactly as it was when you left it. Multiple versions of this image can be stored, parallel worlds so to say.

MuO objects can be highly interactive. Squeak graphical user interface, called Morphic, is very dynamic. Complex data structures can be edited and explored in quite original ways. This complements Emacs ability to see meaningful structures in text and code; in Emacs text itself is very dynamic.

The overall system is thus very rich. You can easily be overwhelmed by the possibilities it opens. So it is important to understand that there is not one single way to achieve something with Surmulot; you can start with a simple usage and give yourself time to discover what is available and which parts of it may be interesting to you.

At first you may simply play tabla via Eshell, edit Csound files in Emacs, or design an envelope graphically in Squeak. Then you may see how an envelope can be designed via Squeak from within Emacs and the envelope editor actually be embedded in a Csound document.

Eventually you may want to learn Emacs Lisp or Smalltalk, or both, and have the whole system gradually become a library for your own programs.

Everything is open and can be modified on the fly; all code is right there, easy to browse and change. But you do not have to write a single line of code to use Surmulot. It's all up to you, and I believe how you will discover the system to be a very personal matter. Please do not try to get it all at once immediately. Take time, find your own way. Surmulot is intended to be a place where you can wander. It does not have a definite purpose or usage. It is a toolbox for working with musical ideas, a laboratory for setting-up musical experiments.

Documentation is scattered in several places, and several levels.

On the Emacs side we have high-level Info documentation. See see (Csound-x)Top., see (muO)Top and see (Surmulot)Top.

Low-level documentation is provided by the self-documentating features of Emacs, namely the documentation strings of functions and variables. Please see see (emacs)Lisp Doc.

On the Squeak side, high-level documentation is available in the muO image as a set of BookMorphs. Low-level documentation is in class and methods comments, and SUnit test cases.

On the web, see


Surmulot is also the french name for the common rat, Ratus Norvegicus.