An environment for experimental musical composition
with MIDI and Csound,
based on Tim Thompson's KeyKit


GeoMaestro is very personal project. It started from a feeling of total frustation when trying to use usual MIDI composition softwares, which are made for musicians that would like to play a computer the way you play a piano (I know it's a very inaccurate statement, but that's the feeling). The point is: I am not a musician. I just wanted to be able to organize sounds with an overall intuition of what is going to happen, which is not the case with most algorithmic composition systems, where you're stuck with mathematical behaviours and more or less automatic melodies with a very few ways (if any) to express a feeling or an atmosphere, or whatever mystery music is about (and I certainly don't know what it is !)

So here's the system I feel comfortable with, and I hope some people will find it interesting for them, too. It was born thanks to the great work of Tim Thompson on KeyKit. It is not an algorithmic system in the usual way, because nothing automatic happens here. Instead, algorithms (mathematically very simple ones, actually) are used to create another way to look at composed music.

GeoMaestro is mainly devoted to experiment a new style of MIDI composition where musical events (notes) are no longer considered as parts of a temporal sequence: no more piano rolls or cakewalk-like stuff. Instead, they're distributed in a two-dimensionnal space and music is generated by projecting them onto segments or circles, which themselves (from now on I will call them "supports") can be freely organised so that rythms, melodies or other kinds of musical structures arise from more or less continuous changes of point of view, supports motions and/or events motions.

(see this paper for a general overview: Composing with GeoMaestro
see also this page for a concise presentation of the basic principles )

Practically, there are many ways to use GeoMaestro:

At the lowest level (that is, the most powerful one), it's simply an extension of KeyKit: a bunch of new functions that allows you to develop a program based on this two-dimensional point of view, while mixing every other technique you may want in it (and KeyKit is full of interesting things). At this level, no framework is provided, you simply have to understand and accept the data structures that are provided here.

At the other extremity, there's a GUI that you can use as a toy. A few clicks will produce sounds, and it is visually very easy to see how projections give rise to organised sounds. The GUI can be used standalone and is suitable both to produce a short sequence of notes or to set up very complex compositions.

In between, you can use the GUI as a powerful tool that will help you go deeper into the programming, test ideas and keep or develop the feeling of what's happening. The GUI itself is customizable and can be extended in many ways, so that programming and clicking around are not at all opposed attitudes, but complementary ones, hopefully allowing a great freedom of composition associated with a simple and powerful interface.

As a system, GeoMaestro is quite the opposite of an all-in-one package. It is very open and don't do much by itself. Most of its power lies in its ability to interface with great softs, all of them freely available from the Internet. Its editing facilities are performed by a text editor such as Metapad or the mighty Emacs; it can output audio files thanks to TiMidity++ and Csound; it can handle alternate tuning thanks to Scala. It can make use of stochastic generative processes thanks to CMask... all of this without leaving KeyKit, the most powerful available MIDI platform. We owe many thanks to all the people who made this possible.

You will find here a documentation that is intended to be useful for many different approaches of GeoMaestro. We could simplify by saying:
- here are the basics: how to simply use the GUI and have a detailed look at the projection mechanism
- here, a bit further on: how to add to the GUI one's own contribution, customize the system and program scripts for events
- and eventually: look at the reference for all GeoMaestro functions and understand the data structures

... but things are not that simple, so I think a better attitude is to encourage you to look around at everything, whatever use of the system you intend to have. If something seems too technical, just skip it: it's there for someone else, or for you once you've got the basics ! I have tried to use a human langage all along here, so you won't find something as ugly as a mere technical reference, but at the same time the technical references are there ! I also made a large use of internal links so that you can jump around looking for what you're interested into (but I would recommend that you first read completely the documents, especially the tool one, because they were written as a gradual presentation of the system). If you feel lost in a big mess, have a look at the tutorials. And, one last thing: I'm french... sorry for the horrible mistakes you're going to discover in the text ! Feel free to send me any comment at


an inverted rose curve and a sinusoïdal distortion map...
... it makes a nice picture !
what do you say ? sounds ? hmm...

-- Back --