Home again, Home again, jiggedy jig
Listen to music created by Zel
Learn Zel
Download Zel
Blog
Send zel files or donate
Information about Zel
Listen to music created by Zel
Download Zel
Blog
Send zel files or donate
Information about Zel
In this section we provide you with an overview of the Zel language in sufficient detail that you can begin to use it and experiment with it. We want to get you started in Zel quickly, so we don' t go into all the features in detail, but we will provide links to the other topics where you can find out more as you need to.
Basics
In this section we show how to use Zel, give you a flavor for what Zel files look like, and introduce some of the more essential keywords. The language has been defined to be simple to get started in. A file comprising only
c d e f g a b C

will play an ascending scale of C on most MIDI synthesizers. Try it. Create a new file scale.zel consisting of the above line, remembering to put whitespace (spaces, tabs or carriage returns) between each note so that each note begins when the previous one ends. If Zel is configured correctly to work with your sequencer, you can click the "play" button in order to convert the file to sequencer format, load it into the sequencer and start the sequencer playing it.

If the play button is not configured, compile the file using the
Process | Interpret menu item. All being well, you should see a new file appear in the working directory: scale.mid which can be loaded into your sequencer. Once loaded, examine the events. Notice that Zel assumed certain values for parameters. For instance, Zel used a velocity for the notes of 64, and the duration for the notes of 120 ticks. The octave the notes are in is 5 (except for the last note), the number of ticks per beat is 120, the tempo is 60, the meter is 4/4, and so on. Defaults are an important part of Zel. Having defaults means less parameters have to be specified, at least initially. As you work on a piece you can get the ' bones'  down quickly, then gradually add more and more parameters and detail until you are satisfied with the final results.

Just to give you a better taste for what Zel code can end up looking like, here is a more complex extract with many more of the features being used:

key=E   tempo=140  meter=4/4
'create a track called "sax" , set its channel
'and send a patch:

track
sax     channel 3    patch 12

'similarly for bass track:

track
bass    channelpatchoctave 3

'Music:
sax    E2F E        g     | aeg  bg
bass   d2  e        A#    | B    E


This extract demonstrates the use of notes, chords, key signatures, tempo setting, meter setting, MIDI channel setting, trackname and number setting, note duration setting, octave fixing, accidentals, patches, barlines and comments. At this stage you may not understand everything about the extract, but you can probably figure out most of what is going on.
Zel code comprises of

-- comments  --lines which begin with a single quote (
') ,
-- keywords  --like track and patch
-- names you assign --like sax and bass
-- parameters , such as 3,
-- special symbols, such as " |" , the barline symbol
-- notes  -- d2, e, A#, etc,
-- chords-groups of notes playing at the same time simultaneous notes: aeg and E2F .

There is an underlying structure to the way a musical piece can be put together with Zel, a hierarchy of objects you can use to make your creations structured. In the next section we take a closer look at this mechanism.
A Zel Primer
Learn Zel
Structure