Autor Thema: Akkordtöne in Klavierstimme auf mehrere Stimmen verteilen  (Gelesen 3370 mal)

infranator

  • Member
Akkordtöne in Klavierstimme auf mehrere Stimmen verteilen
« am: Donnerstag, 22. Januar 2009, 17:14 »
Hallo,

ich habe eine Melodie fünfstimmig gesetzt und das wegen der Übersicht in einem Klaviersystem. Jeder Akkord steht in eckigen Klammern und manchmal die tiefen Akkordtöne im Bassschlüsseel. Jetzt soll aber das ganze von Fünf saxophonen gespielt werden. Gibt es da einen eleganteren Weg als alles per hand in die einzelnen Stimmen abzuschreiben?
Gruß,
Jakob

derHindemith

  • Member
Re: Akkordtöne in Klavierstimme auf mehrere Stimmen verteilen
« Antwort #1 am: Donnerstag, 22. Januar 2009, 17:26 »
Na, es gab neulich genau diese Frage in den Englsich Forum. Ich versteh es kaum, aber hier ist es:
http://lists.gnu.org/archive/html/lilypond-user/2009-01/msg00588.html

Aber, wie gesagt, es ist vielleicht einfacher und schneller wieder einzutippen in einzeln Stimmen.
« Letzte Änderung: Donnerstag, 22. Januar 2009, 17:28 von derHindemith »

comper

  • Member

infranator

  • Member
Re: Akkordtöne in Klavierstimme auf mehrere Stimmen verteilen
« Antwort #3 am: Donnerstag, 22. Januar 2009, 22:33 »
Ach du liebe Zeit! Wer hätte gedacht, dass das so kompliziert ist? Ich habe aber in dem Threat was gefunden, was für meine Zwecke funktioniert. Ich habe das jetzt so geregelt:
\version "2.12.1"
#(define (has-duration? music)
(ly:duration? (ly:music-property music 'duration)))

#(define (not-has-duration? music)
(not (has-duration? music)))

keepsOnlyFirstNote = #(define-music-function (parser location music)
(ly:music?)
(music-map
  (lambda (evt)
   (if (eq? 'EventChord (ly:music-property evt 'name))
      (let ((elts (ly:music-property evt 'elements)))
       (if (has-duration? (car elts))
            (ly:music-set-property! evt 'elements (cons
                 (car elts)
                 (filter not-has-duration? (cdr elts)))))))
  evt)
music))

deleteFirstNote = #(define-music-function (parser location music)
(ly:music?)
(music-map
  (lambda (evt)
   (if (eq? 'EventChord (ly:music-property evt 'name))
      (let ((elts (ly:music-property evt 'elements)))
           (if (has-duration? (car elts))
                (ly:music-set-property! evt 'elements  (cdr elts)))))
  evt)
music))


musik =\relative c'' {
<bes f   d   ces bes>
<as  ges e   c   as >
<ges e   c   a   ges>
}


TempI = { \deleteFirstNote \musik }
TempII = { \deleteFirstNote \TempI }
TempIII = { \deleteFirstNote \TempII }
StimmeI = { \keepsOnlyFirstNote \musik }
StimmeII = { \keepsOnlyFirstNote \TempI }
StimmeIII = { \keepsOnlyFirstNote \TempII }
StimmeIV = { \keepsOnlyFirstNote \TempIII }
StimmeV = { \deleteFirstNote \TempIII }

\markup { Music with chords }
\new Staff \musik
\markup { Music splitted in 5 staffs }
<<

\new Staff \StimmeI
\new Staff \StimmeII
\new Staff \StimmeIII
\new Staff { \clef bass { \StimmeIV} }
\new Staff { \clef bass { \StimmeV} }

>>
Einer der am Anfang definierten Befehle löscht die oberste Stimme und der andere alle außer die oberste. Weil ich keine Ahnung habe was da in den ersten Zeilen steht, habe ich mich bis zur fünften Stimme über die Temp-Stimmen vorgemogelt.