GeoMaestro is a multiplatform environment for experimental musical composition with MIDI and Csound, based on Tim Thompson's KeyKit. It is released under the terms of the General Public License.
GeoMaestro relies on an original composition principle developped in the following.
We need to be clear on what will be called musical composition here. Let's skip any philosophical or historical perspective; as I am introducing here a system born from my very subjective and uneducated point of view, I will simply provide my own definition: musical composition is the art of merging symbolic representations of sound. While the art of merging sounds themselves is music.
Now what is a symbolic representation of sound ? A note, for example. Or a pitch associated with a timbre. Or a few lines of code for a sound synthesis software. Or a set of values for a MIDI controller used to control in real-time a hardware synthesizer. Or a sample. Or something more exotic, a la John Cage, like "wait silently for 20 seconds then pour on the floor the content of a glass of water", etc...
And what means "merging" ? Providing structural and/or temporal relationships between the symbols, so that all together they have a form, more or less stable, maybe subject to random variation, maybe open to further changes or interpretations, maybe not.
GeoMaestro is a composition system in the sense that it provides a way to define such relationships. The symbols it manipulates, called "events", are primarily MIDI messages, notes or controllers; they can also be Csound score lines. In the following, I will just keep on their abstract side: events. If you don't like abstract stuff, just imagine they are piano notes.
In a traditional score for occidental music, as in most composition software, time is represented as the horizontal dimension. If you put an event at the right of another one, it will be played afterward.
The second dimension available in a sheet of paper or a computer screen is most often used to represent the pitch (for a score or a piano roll) or the nature (for a multitrack sequencer) of the events.
In GeoMaestro, time is not represented. A score is a static set of events, each event having two coordinates, so being represented as a point on the screen. The two dimensions are used to define the event position, and there is no hint about weither an event is going to happen before or after another one.
Such a set-up is called a "scene"; here is how it shows within GeoMaestro:
Time will arise when you decide how you are going to look at (or listen to) these events. Time is linear: thus, drawing a line creates a starting time, a duration and an ending time. The events are projected onto this line (called "support" in the following), and this is how their temporal relationships arise.
There are two types of supports you can draw in GeoMaestro: linear segments, and circles. Here are two examples; at the left, a gross representation of the four corresponding temporal patterns:
Projection along [A,B]:
Projection along [B,A]:
Circular projection from C, clockwise:
Circular projection from C, counterclockwise:
As you can see, two very different types of composition lead to the final result: first, composing the scene; second, composing the projections. Very elaborated ways to combine the two basic supports are provided in the system, which will not be described here. See the examples below. Algorithmic articulations of supports are called "projectors" (more)
What kind of space is this ?
A third level of composition arise when it comes to interpreting the meaning of the relative positions of an event and its projection.
Is it the same thing if an event is projecting from far away, or if it's close ? If it is projected from the left, or the right ? If the projection is an horizontal line, or following a given angle ? The arbitrary answers to these questions make up the "distortion settings" for the scene.
For example, you can decide that an event coming from the left will have its pitch decreased in an amount depending on the distance; while if it comes from the right, the pitch will increase. Or maybe you decide to ignore everything that comes from the right. If the event is a MIDI note, its velocity, pitch and duration can be distorted according to the geometry of the projection. Even the time offset can be affected, so that the actual time pattern depends both on the basic projection as introduced in the previous chapter, and on the distortion settings.
The distortion settings can be tuned differently for each GeoMaestro "channel". There is no limit to the number of channels you can use simultaneously. This means that the building of the scene: events + distortion settings, is already a very rich field. Then come the projectors, and it happens that you can also define distortion settings associated to a projector that will locally override all other settings.
The point here is that composing a scene is neither more nor less important than composing a way to listen to it. You can obtain complex melodies or rythms from one single event listened by a complex projector in a heavily distorted space; or, at the opposite, from a single segment listening to a complex scene in a clear space with no distortion (which is closer to the usual way music is described in a traditional score).
Algorithmic composition vs human sensitivity...
... this is a false problem. In the GeoMaestro system, there is no clear limit separating hand made composition and algorithmic procedures. Both the scene and the projectors can be build mixing both approaches.
You can spend hours clicking your mouse around to move hundreds of events exactly where you want them to be, and then describe with the same accuracy what kind of projections you want. Or you can spend the same amount of time writing code and no even use once the GUI. And you can also produce music within minutes. It all depends of the way you interact with the system.
... by the way, here is a screenshot of the main GUI:
Intuition is the key here. The geometric approach, relying on simple projections, allows for an intuitive feeling about the way music will arise, and this feeling will keep growing with time, especially because you are free to experiment in directions that seem meaningful to you. This is something very hard to find in most computer composition systems. The philosophy of GeoMaestro is to keep things as open as possible, so that everyone can find its way toward a personal representation of written music.
Putting everything together
As we have seen, a GeoMaestro composition can be split in different levels:
each event is a symbolic representation of music, whatever this means. It can be a note, or a group of notes (or a whole composition in itself, by the way). It can be less than a note: just a pitch bend message, or a Csound score line defining only part of a sound. This is the root level of composition. Creating the atoms, so to say.
then any number of events can be arranged in a plane, creating a scene. Bunches of events here, isolated one there, maybe geometric patterns or random distributions, whatever. This has been described as the first composition level.
drawing lines and circles in the scene, arranging them so that they happen at the same time or according to specific offsets, or one after the other, all of this define a set of points of view on the scene by the mean of projectors. This is the second composition level.
the distortion settings define how the scene will project its events on the projectors. This is the third composition level.
Actually, all of these so-called "levels" are very much interdependant. They are simply different facets of the overall GeoMaestro composition. This will become clearer with some experience of the system.
At this point we have music, or at least musical structures, with a quality of homogeneity because of the holistic approach I just described. But music is also an affair of breaking continuities and changing climates. GeoMaestro provides a tool called the Compositor, useful to finely arrange and mix together complex structures. Within this tool it is possible to import music from different scenes, along with music from MIDI files or from arbitrary algorithmic procedures (KeyKit functions and tools), and also Csound scores and audio files. This could be called the fourth level of composition.
I will not develop this topic here, as this tool is rather conventional in its structure (see its documentation for more). Here is a screenshot:
The Helice projector has become a classic example. Consider one event and one point: we make a projection on a segment centered on this point, then another projection on the same segment after rotation around the point, then again, like this:
At each step, the resulting music (or silence) is added to the composition. If we do this for 5 complete rotations with a step angle as the one above, we end up with 60 projections that look like this:
If the event is a A note (MIDI number 69), this is the resulting score, as transcribed from MIDI by Melody Assistant (the tempo is arbitrary here since I did not specify any scale for the example):
Now with some distortion: if we decide that the pitch depends on the distance and side, decreasing at right and increasing at left, then we get this score as a result:
(both score images link to the corresponding MIDI files. I encourage you to listen to them)
Another very simple example: two events here; and about 60 points following a rose curve, like this:
We project the events on the set of segments you get when linking each point in the curve to the one two points away from it:
Here is a zoom on the upper event with its projections:
Again, each event is a A note, and the pitch dependency on side and distance is the same as previously. Again, we add each segment music to the previous result. And this is what we get:
Much more elaborated set-ups, projectors and distortion settings are possible; this opens a very broad field of research where the composer's creativity is the master of the game.
I hope this short introduction gave a idea of the system philosophy, but of course there is more, and you will have to discover it by yourself.
KeyKit, the langage/environment required by GeoMaestro