%% ein Score wird anhand einer Liste in verschiedenen Tempi abgespielt
%% das Prefix kann angegeben werden
make-midi-list =
#(define-void-function (name score tempolist)
((string? #f) ly:score? list?)
(for-each
(lambda (tempo)
(ly:book-process
(apply
ly:make-book
$defaultpaper
$defaultheader
(list score))
$defaultpaper
#{
\midi {
\tempo 4 = $tempo
\context {
\Staff
\name ConcertinaStaff
\alias Staff
midiInstrument = #"concertina"
%midiMaximumVolume = #0.99
}
\context {
\Staff
\name FluteStaff
\alias Staff
midiInstrument = #"pan flute"
%midiMaximumVolume = #0.7
}
\context {
\Staff
\name BassStaff
\alias Staff
midiInstrument = #"acoustic bass"
%midiMaximumVolume = #0.7
}
\context {
\Staff
\name VibraStaff
\alias Staff
midiInstrument = #"vibraphone"
}
\context {
\Staff
\name HarmonicaStaff
\alias Staff
midiInstrument = #"harmonica"
}
\context {
\Staff
\name AccordionStaff
\alias Staff
midiInstrument = #"accordion"
}
\context {
\Staff
\name FiddleStaff
\alias Staff
midiInstrument = #"fiddle"
}
\context {
\Score
\accepts ConcertinaStaff
\accepts FluteStaff
\accepts BassStaff
\accepts VibraStaff
\accepts FiddleStaff
\accepts HarmonicaStaff
\accepts AccordionStaff
}
}
#}
(format #f "~a_~a"
(or name "midi")
tempo)))
tempolist))
\layout {
\context {
\Staff
\name ConcertinaStaff
\alias Staff
}
\context {
\Staff
\name FluteStaff
\alias Staff
}
\context {
\Staff
\name BassStaff
\alias Staff
}
\context {
\Staff
\name VibraStaff
\alias Staff
}
\context {
\Staff
\name FiddleStaff
\alias Staff
}
\context {
\Staff
\name HarmonicaStaff
\alias Staff
}
\context {
\Staff
\name AccordionStaff
\alias Staff
}
\context {
\Score
\accepts ConcertinaStaff
\accepts FluteStaff
\accepts BassStaff
\accepts VibraStaff
\accepts FiddleStaff
\accepts HarmonicaStaff
\accepts AccordionStaff
}
}
Midi Dateien mit mehreren Tempi erzeugen
Zur Navigation springen
Zur Suche springen
Dieser Code erzeugt aus einem Score Midi-Dateien in unterschiedlichen Tempovariationen. Die gewünschten Tempi werden als Liste übergeben.
Über die benannten Contexte kann das Instrument gesteuert werden.
Code
%% ein Score wird anhand einer Liste in verschiedenen Tempi abgespielt
%% das Prefix kann angegeben werden
make-midi-list =
#(define-void-function (name score tempolist)
((string? #f) ly:score? list?)
(for-each
(lambda (tempo)
(ly:book-process
(apply
ly:make-book
$defaultpaper
$defaultheader
(list score))
$defaultpaper
#{
\midi {
\tempo 4 = $tempo
\context {
\Staff
\name ConcertinaStaff
\alias Staff
midiInstrument = #"concertina"
%midiMaximumVolume = #0.99
}
\context {
\Staff
\name FluteStaff
\alias Staff
midiInstrument = #"pan flute"
%midiMaximumVolume = #0.7
}
\context {
\Staff
\name BassStaff
\alias Staff
midiInstrument = #"acoustic bass"
%midiMaximumVolume = #0.7
}
\context {
\Staff
\name VibraStaff
\alias Staff
midiInstrument = #"vibraphone"
}
\context {
\Staff
\name HarmonicaStaff
\alias Staff
midiInstrument = #"harmonica"
}
\context {
\Staff
\name AccordionStaff
\alias Staff
midiInstrument = #"accordion"
}
\context {
\Staff
\name FiddleStaff
\alias Staff
midiInstrument = #"fiddle"
}
\context {
\Score
\accepts ConcertinaStaff
\accepts FluteStaff
\accepts BassStaff
\accepts VibraStaff
\accepts FiddleStaff
\accepts HarmonicaStaff
\accepts AccordionStaff
}
}
#}
(format #f "~a_~a"
(or name "midi")
tempo)))
tempolist))
\layout {
\context {
\Staff
\name ConcertinaStaff
\alias Staff
}
\context {
\Staff
\name FluteStaff
\alias Staff
}
\context {
\Staff
\name BassStaff
\alias Staff
}
\context {
\Staff
\name VibraStaff
\alias Staff
}
\context {
\Staff
\name FiddleStaff
\alias Staff
}
\context {
\Staff
\name HarmonicaStaff
\alias Staff
}
\context {
\Staff
\name AccordionStaff
\alias Staff
}
\context {
\Score
\accepts ConcertinaStaff
\accepts FluteStaff
\accepts BassStaff
\accepts VibraStaff
\accepts FiddleStaff
\accepts HarmonicaStaff
\accepts AccordionStaff
}
}
Anwendung
\version "2.20.0"
\language "deutsch"
myscore = \score { \new FluteStaff \relative c'' { c4 c c c c } }
\make-midi-list "miki" \myscore #'(180 120)
\version "2.20.0"
\language "deutsch"
myscore = \score { \new FluteStaff \relative c'' { c4 c c c c } }
\make-midi-list "miki" \myscore #'(180 120)
Erzeugte Midi-Dateien: miki_120.mid · miki_180.mid