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