LilyPond 소스 파일을 여러 키로 자동 전환하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/799837

문제

문제

사용 중입니다 릴리 폰드 교회 합창단이 공연 할 수있는 악보를 조립합니다. 일주일에 누가 이용할 수 있는지에 따라 노래는 다양한 키로 재생됩니다. 우리는 그녀에게 던지는 모든 것을 연주 할 수있는 놀라운 피아니스트를 가지고 있으며 기타리스트는 일반적으로 대체 코드에서 연필을 할 것이지만, 우리가 원하는 모든 열쇠에서 아름답게 조립 된 악보를 제공함으로써 물건을 더 쉽게 만들고 싶습니다.

그러니 우리가 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 편집자. 강력한 전치 도구를 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top