ZEL - ein interessanter Midi-Compiler

Begonnen von Lilysetter, Samstag, 13. Juni 2026, 12:53

Vorheriges Thema - Nächstes Thema

Lilysetter

Ich wollte nochmal an das kostenlose Programm ZEL erinnern, ein sehr ausgefuchster Compiler für Midi-Files.
Natürlich kann man nahezu alles mit Lilypond erzeugen, aber die Kompaktheit und Konsequentheit des Quellcodes ist schon erstaunlich:
Midi-Files sind ja bekanntlich schon sehr kompakt, aber ZEL-Files können nochmal um den Faktor 2-5 kürzer sein, weil man viel mit Makros abdecken kann. Für Byte-Fuchser wie mich genau das Richtige.
Ein Schwerpunkt ist das Schlagzeug.
www.zelsoftware.org/index.html

Zum Reinschnuppern das welcome.zel: (Sourcecode hat 1888 Bytes, das Midi 7422)'Go to the Zel home page: http://www.zelsoftware.com
'J.S.Bach       2 Part Invention # 14
'
'IN THIS PIECE WE USE THE MODE CONSTRUCT AS A LABOR SAVING DEVICE.

tempo=100
'DEFINE A SET OF NOTES AS THE MODE:
'NOTICE THAT MODES ARE ALWAYS DEFINED IN THE KEY OF C major
mode [
     maj    [   C D E F G A B  ]
     revmaj [ & C b a g f e d  ]
     ]
track  top  @@6 $$1  patch 0
track  bass @@4 $$2  patch 1

duration = /8  tempo=60 key=E&
'TRANSPOSE THE MODE TO THE KEY OF E&: '  ^E
'OCCASIONALLY WE NEED TO TRANSPOSE INTO B&
list
'DEFINE TWO SIMPLE MACROS TO WALK THE MODE:
set [ j {M1+M1+M1-M1-2 } k {M1-M1-M1+M1+2 } ]
set piece {
top      break on 'BREAK ALL CHORDS
| 2 b       j  F2DBFD F k  b2Dfa
|   g2 e j  b2gEbg b k  e2gce
|   a^2@ key=B& ^B& c j  a2fCaE f j  C2aFC
|   D4 10 G k C4 10 F k 
|   b4 10 E k a2 C k f4
|   F4faCF8
| 4 f4bDF8
| 4 g4bCE^8 
| 2 f j C2aFCA E& k a2Cf#D
|  b4Dbga&F^af
|  ^B g2   c j g2eCgD ^E& a& k d2fb^@g ^B&
|  e4 10  c j C6b2a  f j
|  F6E2D b j B6A&2G ^E B k
|  E2 G k C2 E k a^2 C j F2 ^E& a& k ^B&
|  g2 b j E2 g k f2 a j D2 f k
|  e2 g j C2 e k d8 10 b j
|  F2DBFD F k b2EbEg e j
|  b2gEbg ^E& b k e4 E6 E k ^B&
|  f4E6 C k F2 D j !!8+20 f2bCa
|  b16
bass ^B
|   B4bDFB8
| 4 b4EGB
| 4 b4CEA
| 2 B j E4@ 10 A j D4@
| 2 G j C2@ C j F4 f4 6 C2@AF
| 2 F j @+1 C2aFCa C@ k F2ACE
|   D2 b j F2DBFD F k b2Dgb
|   e^2 g j E^2CGEB C j G2EC@G
|   A4C@AFF#AFD
|  G2 g j D2bGDB  ^E& A& k D2FbD 
|  E4GECb^Dbg
|  C2 c j C6b2a ^E& f j F6E2
|  D2 b j B6A&2G E j E6@D2@
|  C2@ E@ k ^B A^2 C@ k F2 A j D2@ F k
|  E2 G j C2@ E k D2 F j B2 D k
|  C2 E j A2 C k b2 B j @+1F2DBF
|  D2@ F@ k B2D@FA&G E j B2GE@B
|  G2 ^E& B k E2GbDC ^B& f j C2aEC 24-10
|  a2 C k f2aced b j  F4  f4 -10
|  b16 +20
}
'play the piece twice, but change the mode between plays:
maj piece revmaj piece