What is Zel?
Zel is a powerful text-to-MIDI conversion tool--a language for programming music. With the addition of the Zel Drum Machine, Zel can compose original drum parts for your music.
Why use text?
Textual programming languages (such as C++, Java and Basic) have endured the test of time. Why? One important property they share is abstraction--the ability to create new words from old. These symbolic languages allow the user to define new symbols that encapsulate lower level behavior. What if we bought abstraction to a language oriented entirely to the production of MIDI data? That's what Zel is. Using Zel, symbols such as "TimpaniRoll", "crescendo", "tremolo", "marimba", "maj7", "jazzSwing" or "arpeggiate" can be defined to generate appropriate MIDI behavior. Since new symbols can be defined using the old vocabulary, the language can grow in a way tailored to the user. As the vocabulary and expressive power grows, your development time shrinks. Zel changes the way you work. And the way you think.
The Zel language augments existing MIDI sequencing tools. Zel isn't the first textual language for music, but Zel is easy to get started in while at the same time being expressive. Zel is like most other computer languages in that programs are written using the ASCII character set, so Zel files are human readable and can be created and edited using simple text file editors. When a Zel file is run through the Zel language interpreter, it produces MIDI data that can be loaded into a standard sequencer program. From there it can be played or edited using all the standard features of a MIDI sequencer. This gives you added flexibility in how you develop your music. For example, you could develop the whole work in the Zel environment, or you could develop the drum track in the Zel environment and use the sequencer environment to develop the other tracks.
We believe Zel also presents an opportunity to the world of MIDI synthesis. Just as the General MIDI standard allowed vendors to standardize synthesizer behavior in the hardware sense, Zel allows standardization in the much broader software sense. The Zel symbol MartinD28Guitar (for example) could be defined to produce a different set of MIDI events depending upon the synthesizer in use, with the end result of giving a similar sound on all systems.
Who Uses Zel?
Zel is used primarily by MIDI musicians who need a language based entry method which is:-
easy to edit,
has powerful macro capability to hide much of the underlying complexity
allows for easy reuse of code
allows for a complete representation of musical nuance
allows for frequency based algorithmic composition
Composers and arrangers who are not proficient at playing a keyboard or other MIDI instrument but who produce complex MIDI sequences and orchestrations find Zel useful. Zel provides an efficient alternative to recording notes into the sequencer from a MIDI instrument. Even if you can play the keyboard proficiently, you may be uncomfortable using it to enter certain instruments into the sequencer (drums for example). In these cases Zel provides a viable alternative.
Those not comfortable with the available sequencer input methods (event lists, piano roll, music notation, controller views, meter map, tempo map and so on) find a useful alternative in Zel. Zel files provide a complete view of a work--all the events comprising the work are presented on the same script--no need to jump around between different views to get the full picture. Zel can also provide a very compact representation of a musical work. Since they are all in plain ASCII text, Zel files can easily be modified and are readily exchanged electronically.
For those who want to push the limits of MIDI sequencing by generating very complex note and control sequences, difficult or time-consuming to record from a MIDI controller--Zel provides a rapid alternative to graphical based sequencer entry for this kind of work.
Zel's ability to abstract through the use of macros and symbols allows a means to rapid prototyping of a musical work through the use of style generation. For example you can create complex works using simple fakebook format (chords and melody only) where a small change in the input can produce large changes in the output of the work making for rapid experimentation and prototyping of a work. The macro capability can be especially useful in MIDI machine control applications.
Zel has also found a high degree of acceptance among the visually impaired-a text based note entry method is highly desirable to this type of user.
Finally, those who just like to play around with something new and different will find Zel interesting and hopefully useful.
Typefaces and Notation
We use different typefaces for different purposes in this document:
MS Ref Sans Serif is used for the body of the document
Bold Italic is used to describe elements in Zel constructs.
Courier blue is used for examples of Zel code. Zel keywords are bold
Courier bold is used for event listings.
Optional elements within a Zel construct are enclosed in angle brackets, for example:
indicates that an optional name trackName could be included in a Zel construct.