MultipleTransposes
(Weitergeleitet von Einen Musikausdruck automatisch in verschiedene Tonarten transponieren)
Automatisch in mehrere Tonarten transponieren
Scheme-Code
multipleTransposes =
#(define-music-function (m music)(ly:music? ly:music?)
(music-clone m
'elements
(map (lambda (pitch)
(ly:music-property #{ \transpose c $pitch $music #} 'element))
(event-chord-pitches m))))
Einfügen: {{Score:MultipleTransposes/incl}}
Anwendung
\version "2.20.0"
\language "deutsch"
\paper {
markup-markup-spacing.padding = #5
%markup-system-spacing.padding = #5
markup-markup-spacing.minimum-distance = #1
oddHeaderMarkup = ##f
evenHeaderMarkup = #oddHeaderMarkup
oddFooterMarkup = ##f %\markup \fill-line { \null "Jazz-Akkorde" \null }
evenFooterMarkup = #oddHeaderMarkup
ragged-right = ##t
ragged-last = ##t
ragged-bottom = ##t
top-margin = #20
}
\header {
title = \markup \center-column { "Sophisticated multipleTransposes" " " " " }
}
myMusik = \relative c' { e c des e }
myTrans = { c f' \clef bass a, }
multipleTransposes =
#(define-music-function (m music)(ly:music? ly:music?)
(music-clone m
'elements
(map (lambda (pitch)
(ly:music-property #{ \transpose c $pitch $music #} 'element))
(event-chord-pitches m))))
\new Staff
{
\textLengthOff
\override Score.RehearsalMark.self-alignment-X = #-1
\mark "Musik"
\myMusik
\mark "Transpositionsfolge"
\myTrans
}
\markup "Alles in einen Staff"
\new Staff
$(make-sequential-music
(map
(lambda (p)
#{ { \transpose c $p \myMusik } #})
(event-chord-pitches myTrans)))
\markup "All new Scores"
%% Jeweils neue Scores:
%% "add-score" und "scorify-music" finden sich in lily-library.scm
%% "add-score" Kommentar:
%% ;; Add a score to the current bookpart, book or toplevel
%% "scorify-music" verwendet "ly:make-score", doku dafür:
%% "Return score with music encapsulated in it."
%% Man ist jetzt natürlich komplett auf scheme-level
%% Neue Elemente müssen dann auch via scheme eingeführt werden
%% Dazu gibt es einige weitere Funktionen in lily-library.scm
#(for-each
(lambda (p)
(add-score
(scorify-music #{ { \transpose c $p \myMusik } #} )))
(music-pitches myTrans))
%% Thanks David Kastrup
%% Examples
\markup "die transponierte Musik hintereinander"
\new Staff
\multipleTransposes \myTrans \myMusik
\markup "jede Transponierung erzeugt einen neuen Staff in einem einzigen Score"
\new StaffGroup
<<
\multipleTransposes << c f a >> \relative c'' \new Staff \myMusik
>>
\markup "alle Transponierungen in einen Akkord, Musik muss aus 1 Ton bestehen"
\new Staff
\multipleTransposes < c f a > e'