LilyPond 소스 파일을 여러 키로 자동 전환하는 가장 좋은 방법은 무엇입니까?
-
18-09-2019 - |
문제
문제
사용 중입니다 릴리 폰드 교회 합창단이 공연 할 수있는 악보를 조립합니다. 일주일에 누가 이용할 수 있는지에 따라 노래는 다양한 키로 재생됩니다. 우리는 그녀에게 던지는 모든 것을 연주 할 수있는 놀라운 피아니스트를 가지고 있으며 기타리스트는 일반적으로 대체 코드에서 연필을 할 것이지만, 우리가 원하는 모든 열쇠에서 아름답게 조립 된 악보를 제공함으로써 물건을 더 쉽게 만들고 싶습니다.
그러니 우리가 ABC를 노래하겠다고 말합니다. 먼저 사용 가능한 소스 전사를 가져 와서 Lilypond 스크립트에 입력하겠습니다.
melody = \relative c' {
c c g g
a a g2
f f e e
d d c2 }
나는 이것을 자동으로 전환 할 수있는 능력을 원하기 때문에 'g'의 모든 것을 원한다면 노래를 transpose call로 랩핑합니다.
melody = \transpose c g \relative c' {
c c g g
a a g2
f f e e
d d c2 }
내가 정말로 원하는 것은 'G'로 무언가를 대체하고 멜로디의 출력을 여러 번 생성하는 것입니다. 간단한 백합 변수는 여기서는 작동하지 않는 것 같습니다. 지금까지 나는이를 수행하기위한 체계 기능을 정의하는 데 실패했습니다.
내가 그 순간에 의지하는 것은 위의 파일을 가져 가서 twinkle.ly라고 부르고 그것을 twinkle.ly.m4라는 M4 스크립트로 바꾸는 것입니다. 그 내용은 다음과 같습니다.
melody = \transpose c _key \relative c' {
c c g g
a a g2
f f e e
d d c2 }
그런 다음 다음 줄을 실행하여 While을 컴파일합니다.
> m4 -D _key=g twinkle.ly.m4 > twinkle_g.ly && lilypond twinkle_g.ly
나는 내가 가진 모든 노래와 내가 관심있는 모든 열쇠에 대한 규칙을 정의하기 위해 이것을 위해 makefile을 작성했습니다.
의문이것에 대해 더 나은 방법이 있어야합니다. Lilypond가 임베디드 체계를지지한다는 점을 감안할 때, 나는 그것에 미리 처리 된 거시적 인 미리 처리 된 것을 사용하지 않는 것을 선호합니다. 다른 사람 이이 같은 문제에 대한 해결책을 제시 했습니까?
해결책
멜로디 변수를 참조하고 원하는 키로 바꿀 수 있습니다.
melody = \relative c' { c8 e c e g4 g } \score { \transpose c d \melody } \score { \transpose c e \melody } % etc.
전치를 별도의 파일로 출력하려면 book 블록에 포함 시키십시오.
다른 팁
동일한 조각의 사본 두 개를 만들려면 하나의 파트먼트와 하나는 사용하지 않으려면 사용할 수 있습니다. \displayLilyMusic
. 예를 들어,
{
\displayLilyMusic \transpose c a, { c4 e g a bes }
}
표시됩니다
{ a,4 cis e fis g }
이 출력을 복사하여 원하는 곳에 붙여 넣으십시오.
무료를 사용하십시오 Lilypond의 Frescobaldi 편집자. 강력한 전치 도구를 제공합니다.