Lilypond Userthread

  • Ersteller musikuss
  • Erstellt am
Ich moechte gerne diese Noten abtippen:
noten2-jpg.398749

Dazu solltest Du die zwei Stimmen separat eingeben, die Hälse und den Haltebogen ausrichten:

Code:
<score>
\new Staff <<
  \key g \major
   \new Voice = "first"
    { \voiceOne d'4 \stemDown d' e'2 \stemUp d'4 d' d'2 }
   \new Voice= "second"
    { \voiceTwo \stemUp b'4 a'2 g'4^~ g'4 fis'4 g'2 }
>>
</score>

Ergebnis:

zweistimmig.png


Der obige Score kann auf die Schnelle in die Wikipedia-Spielwiese eingegeben werden. Dort alles löschen, bis auf die erste Zeile (Begrüßungskasten):

Danach "Vorschau zeigen" drücken und die Grafik mit Rechtsklick abspeichern und z.B. hier hochladen.

Viele Grüße
Klaus
 
Vielen Dank Euch beiden!

*stirnklatsch* - das hatte ich schonmal, ist mir just aufgefallen, als ich mir die Lilypond Seite angesehen hatte.
 
Hallo,

\override VerticalAxisGroup.staff-affinity = #DOWN
funktioniert nicht.

Aus dem beispiel hier:
http://www.lilypond.org/doc/v2.17/Documentation/notation/techniques-specific-to-lyrics




Alternatively, a two-step process may be used. First the Lyrics context is declared (without any content) before the Staff and Voice contexts, then the \lyricsto command is placed after the Voice declaration it references by using \context, as follows:
\score {
<<
\new Lyrics = "lyrics" \with {
% lyrics above a staff should have this override
\override VerticalAxisGroup.staff-affinity = #DOWN
}
\new Staff {
\new Voice = "melody" {
\relative c'' { c4 c c c }
}
}
\context Lyrics = "lyrics" {
\lyricsto "melody" {
Here are the words
}
}
>>
}


(irgendwie finde ich keinen Script-Tag mehr...)

da bekomme ich diesen Fehler:


GNU LilyPond 2.14.2
Processing `foo.ly'
Parsing...
foo.ly:4:33: error: syntax error, unexpected '.', expecting SCM_IDENTIFIER or SCM_TOKEN
\override VerticalAxisGroup
.staff-affinity = #DOWN
foo.ly:5:4: error: syntax error, unexpected '}'

}
foo.ly:8:18: error: syntax error, unexpected STRING
\relative
c'' { c4 c c c }
foo.ly:6:4: error: errors found, ignoring music expression

\new Staff {
error: failed files: "foo.ly"
^C


Wenn ich \override VerticalAxisGroup.staff-affinity = #DOWN entferne, compiliert er, aber ohnte Text.

Jemand eine Idee?

Gruss,
Sylvia
 
Da ist offensichtlich mind. v2.17 erforderlich, wie angegeben.

Genau, es liegt an der LilyPond-Version (Sylvia benutzt ja noch 2.14).
Hier ist das Problem im Grunde sehr einfach gelagert: Ab Release 2.17 kann man bei Zuweisungen eine vereinfachte/einheitlichere Syntax verwenden:
Beispielsweise
\override Staff.NoteHead.color = #red
statt
\override Staff.NoteHead #'color = #red
Die alte Schreibweise ist trotzdem noch gültig.

Im vorliegenden Fall
reicht es also völlig aus,
\override VerticalAxisGroup.staff-affinity = #DOWN
durch
\override VerticalAxisGroup #'staff-affinity = #DOWN
zu ersetzen - dann funktioniert alles wie gewünscht auch in Release 2.14.

Viele Grüße
Torsten
 
ach herrjemine...

Vielen Dank!
 
ein Umstieg auf 2.18 ist trotzdem ratsam
 
ein Umstieg auf 2.18
Vor allem, weil LilyPond freie Software ist und auch mehrere Releases problemlos parallel betrieben werden können.

Dennoch benutzen viele noch veraltete Releasestände, denn in vielen Linux-Distributionen (Fedora, Ubuntu, Slackware) ist LilyPond nur in Version 2.14.2 enthalten, bei Debian und SuSe sogar nur 2.12.2.
Das ist aus heutiger Sicht relativ steinzeitlich (nicht nur wegen der erweiterten Möglichkeiten, sondern auch der stetig leicht verbesserten Ausgabequalität von Release zu Release).

Viele schrecken davor zurück, unter Verzicht auf die komfortable Paketverwaltung eine neuere LilyPond-Version manuell zu installieren.
Das wird wohl der Hauptgrund sein, warum es einen "altsprachlichen Zweig" gibt. ;)

Viele Grüße
Torsten
 
Hallo,

ich hab gleich ein paar Fragen heute:

1.)
Wenn ich mir eine Variable definere:
Am={a,4 \chordmode {a,4:m}}

und diese dann mehrfach aufrufe:

\AM \AM \AM

dann kann ich die hier an dieser Stelle nicht betexten: \AM^"Am"
ich kann dass nur hier:
Am={a,4^"Am" \chordmode {a,4:m}} - in dem Fall hab ich dann 3x "Am" dranstehen,

\AM^"Am" \AM \AM funktioniert aber nicht.

2.)
Was auch nicht funktioniert ist die Beschriftung eines Chords: \chordmode {a,4:m}^"Am"

3.)
Wie ich innerhalb eines \score { .. } eine Ueberschrift setze, habe ich auch noch nicht herausgefunden;
es klappt nur zwischen zwei Scores. Aber dem entgegen steht, dass ich gern ein midi dafon machen
moechte, was aber nur score-weise gelingt.

4.)
Und zu Lyrics wollte ich noch fragen, wie man die taktung abschalten kann. Ich habe Pausen und alles Moegliche gefunden,
aber nicht, wie man diese autotakt abschalten kann.


5.)
Zu guter Letzt noch was ganz doofes, gibt es die Moeglichkeit, automatisch an einzelne Noten den Notennamen dranzuschreiben?
Ich muss oefter mal Noten fuer Nichtnotenleser schreiben und muss dann immer muehsam a2^"a" dranschreiben.


Wuerde mich ueber Antworten, Hinweise wieder sehr freuen!


Viele Gruesse,
Sylvia
--- Beiträge wurden zusammengefasst ---
Viele schrecken davor zurück, unter Verzicht auf die komfortable Paketverwaltung eine neuere LilyPond-Version manuell zu installieren.
Das wird wohl der Hauptgrund sein, warum es einen "altsprachlichen Zweig" gibt. ;)

genau :-/ Bis zum naechsten Update dauerts noch bissl...
 
Hallo Sylvia,

dann will ich mal kurz auf die von Dir genannten Punkte eingehen.


1.)
Wenn ich mir eine Variable definere:
Am={a,4 \chordmode {a,4:m}}

und diese dann mehrfach aufrufe:

\AM \AM \AM

dann kann ich die hier an dieser Stelle nicht betexten: \AM^"Am"
ich kann dass nur hier:
Am={a,4^"Am" \chordmode {a,4:m}} - in dem Fall hab ich dann 3x "Am" dranstehen,

\AM^"Am" \AM \AM funktioniert aber nicht.

Der Text "Am" muß irgendwo "dranhängen", in Deinem Beispiel hängt er aber im luftleeren Raum (nämlich irgendwo zwischen zwei {}-Gruppen von "Musikdaten".
Es gibt keinen Syntaxfehler, wenn Du das ^"Am" an ein "nichts" hängst: <>^"Am" funktioniert ohne Syntaxfehler, aber dann hängt das "Am" auch nicht an dem Akkord, wo er hin soll.

Lösungsmöglichkeiten:
  • Separates \AM-Makro ohne Text und ein \AMt-Makro mit Text
  • Die "Am"-Beschriftung ins \AM-Makro aufnehmen und nach dem nach Bedarf den TextScript-Stencil verschwinden lassen (mit \override TextScript #'stencil = ##f). Wieder sichtbar wird er mit \revert TextScript #'stencil.
    Die beiden Befehle kann man auch in Makros packen, das erhöht den Benutzungskomfort enorm.
  • Für die Akkorde eine eine parallele Stimme mit unsichtbaren Pausen (s), an die man die Texte hängen kann.
  • sich eine vollautomatische Luxuslösung bauen ;)


2.)
Was auch nicht funktioniert ist die Beschriftung eines Chords: \chordmode {a,4:m}^"Am"

Die Möglichkeit, mit ^ oder _ oder - einer Note oder Pause oder auch "nichts" <> einen Text bzw. ein Text-Markup zuzweisen, geht nicht in allen Umgebungen.
Insbesondere nicht im \chordmode, da gilt ja auch eine ganz ander Syntax.

Abgesehen davon würde ich sowieso den \chordmode nicht für Deine Anwendung benutzen, denn die Umkehrung stimmt in der Regel nicht (immer Grundstellung) und Septim und dim7 sind viertönig. Da ist es einfacher, die Akkorde auszuschreiben. Wiederholungen können mit q abgekürzt werden.


3.)
Wie ich innerhalb eines \score { .. } eine Ueberschrift setze, habe ich auch noch nicht herausgefunden;
es klappt nur zwischen zwei Scores. Aber dem entgegen steht, dass ich gern ein midi dafon machen
moechte, was aber nur score-weise gelingt.

Das geht einfach als Markup an der entsprechenden Stelle. Vorher ein \break garantiert den Zeilenumbruch und dann stehen Dir alle Möglichkeiten offen (Auswahl):
  • \mark \markup "irgendwas"
  • <>^\markup "irgendwas"
  • Sogar die Tempo-Bezeichnung läßt sich mißbrauchen
  • was einem sonst noch so einfällt...

4.)
Und zu Lyrics wollte ich noch fragen, wie man die taktung abschalten kann. Ich habe Pausen und alles Moegliche gefunden,
aber nicht, wie man diese autotakt abschalten kann.

Wie meinst Du das? Neben dem direkten Bezug zu Noten (mit \addlyrics oder \lyricsto "...") können Liedtexte auch völlig selbständig (\new Lyrics ...) gesetzt werden. Die Silbendauern lassen sich wie bei der Noteneingabe mit Zahlen danach angeben: z. B. Hal4 - lo, Du!2 :)


5.)
Zu guter Letzt noch was ganz doofes, gibt es die Moeglichkeit, automatisch an einzelne Noten den Notennamen dranzuschreiben?
Ich muss oefter mal Noten fuer Nichtnotenleser schreiben und muss dann immer muehsam a2^"a" dranschreiben.

Neben den kindgerechten "Easy-Noteheads" mit \easyOn und \easyOff gibt es im Standard noch die NoteNames-Umgebung.
Hier werden nicht die Noten, sondern nur deren Namen ausgegeben.

Code:
ente = \relative c' {
            \key es \major
            es4 f g as bes2 bes c4 c c c bes1
}

<<
   \new Staff \ente
   \new NoteNames \ente
>>

notenames-1.png


Offensichlicher Nachteil: Die Notennamen werden (das ist fest so verdrahtet und wurde immer noch nicht verbessert) nur in niederländisch ausgegeben (LilyPonds Muttersprache). Völlig egal übrigens, in welcher Sprache die Noten eingeben wurden.

Es gibt einen Workaround, indem man den Stencil (den Druckstempel) ändert. Leider stehen an dieser Stelle keine echten Tonhöhen (pitches), sondern nur die niederländischen Namen zur Verfügung. Deshalb habe ich eine kleine Ausnahmetabelle (hoffentlich vollständig) definiert, die alle Änderungen enthält (ees wird es, aes wird as und bes wird b in diesem Beispiel).
Wenn der automatisch erzeugte niederländische Name nicht paßt, wird er durch den deutschen ersetzt.

Code:
\version "2.14.2"

dutchtogerman =
#`(("ees" . "es")
  ("eeses" . "eses")
  ("aes" . "as")
  ("aeses" . "ases")
  ("bes" . "b")
  ("beses" . "heses")
  ("b" . "h")
  ("bis" . "his")
  ("bisis" . "hisis"))

germanNoteName =
#(lambda (grob)
  (let* ((name-dutch (ly:grob-property grob 'text))
  (name-german (assoc-get name-dutch dutchtogerman name-dutch)))
  (if (not (eq? name-dutch name-german))
  (ly:grob-set-property! grob 'text name-german))
  (ly:text-interface::print grob)))

\layout {
  \context {
  \NoteNames
  \override NoteName #'stencil = #germanNoteName
  }
}

ente = \relative c' {
  \key es \major
  es4 f g as bes2 bes c4 c c c bes1
}

<<
  \new Staff \ente
  \new NoteNames \ente
>>

Ergebnis dann tatsächlich auf deutsch:

notenames-2.png


Eigenes Makro,
das genau das macht, was Du auch von Hand getan hättest: mit ^"es" usw. den Notennamen an die Note hängen.
Hier haben wird direkt den neutralen pitch-Wert (mit Stammton, Vorzeichen und Oktavlage), der mit der Standard-Funktion note-name->german-markup in die deutsche Bezeichnung umgewandelt werden kann.
Außerdem habe ich einen Puffer eingebaut, der sich die Vorgängernote und den Namen nur druckt, wenn er sich geändert hat:

Code:
\version "2.18.2"


addNoteNames =
#(define-music-function (parser location music)(ly:music?)
"Add note name script text to notes"
(let* ((last-pitch #f))
(map-some-music
(lambda(m)
  (cond ((music-is-of-type? m 'note-event)
  (let* ((pitch (ly:music-property m 'pitch))
  (pitch-text (if (equal? last-pitch pitch) #f (note-name->german-markup pitch #t))))
  (set! last-pitch pitch)
  (if pitch-text
  (ly:music-set-property! m 'articulations
  (cons
  (make-music 'TextScriptEvent
  'direction UP
  'text pitch-text)
  (ly:music-property m 'articulations))))
  m))
  (else #f)))
music)))


\relative c' \addNoteNames {
  \key es \major
  es4 f g as bes2 bes c4 c c c bes1
}

Also reicht ein Aufruf wie

\relative c' \addNoteNames {
\key es \major
es4 f g as bes2 bes c4 c c c bes1
}


aus, um dies hier zu erzeugen:

notenames-3.png


Das geht nur einstimmig (schnell hingewurstelt) und noch nicht in Release 2.14.2, weil sich seit damals die interne Verarbeitung grundlegend geändert hat und man das ganz anders aufziehen müßte.

Zeit für ein Upgrade auf die akutelle LilyPond-Version! :m_vio2:


Viele Grüße
Torsten
 
  • Gefällt mir
Reaktionen: 2 Benutzer
Torsten, Du bist krass. Vielen Dank Dir!
Leider kann ich Dir *WIE IMMER* keine Kekse geben (das aergert mich sehr, weil ich hab Dir noch nie welche geben koennen, weil ich immer den Fehler bekomme und wenn ich im Adminteam nachfrage, hiesst es immer: ich muesse 5 andere Kekse vergeben :-(
 
Leider kann ich Dir *WIE IMMER* keine Kekse geben...
Ich kann und hatte das sowieso gerade vor. :)

Die Kekse funktionieren genau richtig, aber es kommt auch bei Gerne-Bekeksern wie mir schon mal vor, dass die "Du musst erst andere User bewerten"-Meldung erscheint.
Bestimmt finden sich in den verschiedenen von dir bevorzugten Board-Bereichen auch Beiträge anderer User, die gelegentliche Kese verdienen, weil sie dir gut weiterhelfen.

Gruß Claus
 
Wie kann ich bitte in Lilypond eine 16tel Sextole notieren? Aus dem Benutzerhandbuch bin ich da nicht ganz schlau geworden.
sixtuplet.jpg
 
Hallo Claus,

es gibt für n-tolen neuerdings die \tuplet-Anweisung, die etwas logischer aufgebaut ist als früher der alte \times-Befehl (der funktionier aber immer noch).

In diesem Fall sollen 6 Sechzehntel den Raum von 4 Sechzehnteln einnehmen, deshalb schreibt man einfach

\tuplet 6/4 { ... }


Viele Grüße
Torsten
 
Sorry, ich hatte nach dem Finale-Beispiel glatt den Code vergessen, ohne die letzte "tuplet"-Zeile funktioniert die PDF-Ausgabe.
Die tuplet 6/4-Variante hatte ich auch schon probiert, aber ich muss dann wohl noch einen Bock im Code haben:

Code:
\version "2.18.2"

\relative c''{
\key bes \major
| bes8 c d ees f g a bes
| \tuplet 3/2 { c4-- bes-. a8 g }   f ( ees d c
| bes f a c bes2 )
| r2 ( \tuplet 3/2 { r8 c d } \tuplet 3/2 { ees d c }
| f16 ) r16 f,8~ f8 g~ g bes~ bes ees~
| ees4 r4 r8 g-. c8. ( a16
| f16 ) r16 d8~ d a~ a f~ f g~
| g2 r8 c ( ees[ g ]
| f ) r8 d8. f16 bes8 d c bes
| a bes g ees c g a c
| f,4. d'8~ d8 bes f g~
| g4 r4 r4 a16 bes c a
| bes8 bes16 c d ees f g a bes c a bes c d ees
| f8-. f16 { ees~ ees ees8 d16~ d8 g,16 bes d c bes g }
| tuplet 6/4 { a16 bes b c b bes } a16 f d bes a bes d f a fis g a

}

Dieses Fehlerprotokoll gehört noch dazu:

Code:
# -*-compilation-*-
»C:/Users/C/Desktop/test.ly« wird verarbeitet
Analysieren...
C:/Users/C/Desktop/test.ly:20:4: Fehler: Zeichenkette nicht erkannt, weder Textbeschriftung noch \lyricmode
|
  tuplet 6/4 { a16 bes b c b bes } a16 f d bes a bes d f a fis g a

C:/Users/C/Desktop/test.ly:20:11: Fehler: syntax error, unexpected FRACTION
| tuplet
  6/4 { a16 bes b c b bes } a16 f d bes a bes d f a fis g a

C:/Users/C/Desktop/test.ly:4:1: Fehler: Fehler gefunden, musikalischer Ausdruck wird ignoriert

\relative c''{

schwerer Fehler: gescheiterte Dateien: "C:\\Users\\C\\Desktop\\test.ly"
 
Zuletzt bearbeitet:
Shoot me, I'm an idiot :igitt:

Aber ansonsten danke vielmals, jetzt kann ich beruhigt schlafen gehen.... :D

Gruß Claus
 
Ich bin kompletter Lilypond Neuling, das erste mal habe ich es mir vor ein paar Tagen angeschaut. Mein bisher einziger Anwendungsfall ist, dass ich zum Üben (Klavier) kurze Phrasen durch alle/mehrere Tonarten transponieren möchte.

\transpose habe ich natürlich schon entdeckt. Das erfordert aber immer noch einige manuelle Arbeit. Am liebsten hätte ich ein Kommandozeilenprogramm

$ lilycircle phrase.ly​

Das mir den Inhalt von phrase.ly einmal durch den Quintenzirkel setzt. Gibt's das vielleicht schon? Ansatzpunkte, um es selbst zu bauen wären auch hilfreich. Ich habe vor vielen Jahren schon mal in Scheme programmiert, das würde mich also auch hier nicht abschrecken.
 
Hallo murmichel,

da gibt es mehrere Möglichkeiten...
Die von Dir vorgeschlagene Kommandozeilenversion wäre z. B. denkbar, wenn Du im LilyPond-Code statt expliziter Tonarten (Transpositionen) entsprechende Variablen einsetzt und daraus per Script diese Platzhalter durch konkrete Werte ersetzt.
Als Anregung könnte dieses Beispiel dienen.

Ich persönlich versuche immer, möglichst viel direkt in LilyPond zu lösen, und da bietet die Scheme-Programmierung ziemlich viele Möglichkeiten.

Grundidee:

"Musikdaten" für die rechte und linke Hand sollen einer Funktion übergeben werden, die daraus Klaviernoten (d. h. Scores) in allen gewünschten Tonarten macht.
Als Besonderheit soll noch die jeweilige Tonart vor das System geschrieben werden.


a) Gegebene Daten für rechte und linke Hand als beliebig transponiertes Klaviersystem darstellen (Einzelaufruf)


Die Funktion \miniScore besteht (im unteren Teil in Block #{ ... #} aus "normalem" LilyPond-Code, der den "Instrumentennamen" des Klaviersystems (PianoStaff) auf $name setzt und dann die Zeilen für rechte und linke Hand incl. \transpose-Anweisung erzeugt.
Einrückung wird etwas vergrößert, damit die Tonarten-Bezeichnungen bequem davorpassen.

Die vielen zu übergebenden Variablen sehen vielleicht etwas unübersichtlich aus, aber sie haben alle ihren Sinn:

  • trans: Tonhöhe (pitch) der Transposition von c' aus gesehen.
  • key: Tonhöhe für die Original-Grundton (z. B. c oder auch a im Falle von a-Moll)
  • lc: Boolesche Variable ("lower case"), die bestimmt, ob der Tonarten-Name groß oder kleingeschrieben werden soll (wegen der deutschen Konvention F-Dur, aber d-Moll)
  • mode: "Name" des Modus, z. B. "-Dur", "-Moll", " mixolydisch" ...
  • RH und LH: Die "Musikdaten" der rechten bzw. linken Hand

Code:
miniScore = #(define-scheme-function (parser location trans key lc mode RH LH) (ly:pitch? ly:pitch? boolean? markup? ly:music? ly:music?)
  (let* ((diff (ly:pitch-diff trans (ly:make-pitch 1 0 0)))
         (key-name (markup->string (note-name->german-markup
                                   (ly:pitch-transpose diff key)
                                   #f)))
         (name (string-concatenate (list
           (if lc (substring key-name 0 1)
                  (string-upcase (substring key-name 0 1)))
           (substring key-name 1 (string-length key-name))
           (markup->string mode)))))
  #{
   \score {
      \new PianoStaff <<
        \set PianoStaff.instrumentName = \markup \fontsize #1 $name
        \new Staff \transpose c' $trans $RH
        \new Staff \transpose c' $trans $LH
      >>
      \layout { indent = #20 }
    }
#}))

Eigentlich böte sich eine "music-function" an, aber die kann leider keine kompletten scores zurückgeben, deshalb weichen wir auf eine allgemeinere Scheme-Funktion aus.


b) Mehrere Klavierstimmen in "allen" Tonarten auf einen Schlag erzeugen

Bei Transponieren durch den Quintenzirkel stellt sich natürlich die Frage, ob jeweils nach oben oder unten transponiert werden soll. Hier habe ich als Grundregel genommen, daß der kleinstmögliche Sprung voreingestellt ist.

Ich habe hier bewußt die eigentlich umständliche Methode gewählt, die einzelnen \miniScore-Befehle nicht per Schleife/Listenverarbeitung aufzurufen, sondern einfach explizit auszuschreiben.
Ist im Grunde aber nebensächlich...

Die "Mini-Stücke" werden als Markup mit dem Zwischenabstand vskip ausgegeben (auf 2 eingestellt) und dann wird einfach so oft wie erforderlich mit allen gewünschten Transpositionen (bezogen auf c') die Funktion \miniScore aufgerufen.

Parameter:
  • key: Tonhöhe (pitch) der Ausgangstonart (z. B. c' oder a)
  • lc: Soll der Tonarten-Name in Klein- oder Großschrift?
  • mode: "-Dur", "-Moll" usw.
  • RH und LH: Musikdaten für die rechte und linke Hand

Vollständiges Coding incl. Beispiel

Code:
\version "2.18.2"


miniScore = #(define-scheme-function (parser location trans key lc mode RH LH) (ly:pitch? ly:pitch? boolean? markup? ly:music? ly:music?)
  (let* ((diff (ly:pitch-diff trans (ly:make-pitch 1 0 0)))
         (key-name (markup->string (note-name->german-markup
                                   (ly:pitch-transpose diff key)
                                   #f)))
         (name (string-concatenate (list
           (if lc (substring key-name 0 1)
                  (string-upcase (substring key-name 0 1)))
           (substring key-name 1 (string-length key-name))
           (markup->string mode)))))
  #{
   \score {
      \new PianoStaff <<
        \set PianoStaff.instrumentName = \markup \fontsize #1 $name
        \new Staff \transpose c' $trans $RH
        \new Staff \transpose c' $trans $LH
      >>
      \layout { indent = #20 }
    }
#}))




circleScore = #(define-scheme-function (parser location key lc mode RH LH) (ly:pitch? boolean? markup? ly:music? ly:music?)
  (let ((vskip 2))
  #{ \markuplist \column-lines {
       \score { \miniScore c' $key $lc $mode $RH $LH } \vspace #vskip
       \score { \miniScore f' $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore bes $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore es' $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore as $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore des' $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore ges $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore fis' $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore b $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore e' $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore a $key $lc $mode $RH $LH } \vspace #vskip
%       \score { \miniScore d' $key $lc $mode $RH $LH } \vspace #vskip
       \score { \miniScore g $key $lc $mode $RH $LH } \vspace #vskip
    }
  #}))



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
% Beispielanwendung:

RH = \relative c'' {
  \key c \major
  \tempo "Allegro"
  c2 e4 g b,4.( c16 d c4) r
}

LH = \relative c' {
  \clef treble
  \key c \major
  c8 g' e g c, g' e g d g f g c, g' e g
}


\circleScore c ##f "-Dur" \RH \LH

Ich habe alle Tonarten außer C, F und G auskommentiert, die drei mögen als Beispiel genügen.
Die Reihenfolge kann auch nach Belieben geändert werden.


Ergebnis des kleinen Testbeispiels:

Mit diesen beiden Funktionen (die ja per Include überall eingebunden werden können, läßt sich sehr einfach folgendes Beispiel erzeugen:

RH = \relative c'' {
\key c \major
\tempo "Allegro"
c2 e4 g b,4.( c16 d c4) r
}

LH = \relative c' {
\clef treble
\key c \major
c8 g' e g c, g' e g d g f g c, g' e g
}

\circleScore c ##f "-Dur" \RH \LH


circleScore.png


Man sieht hier sehr schön, daß es keineswegs ganz so trivial ist, sich generell für "nach oben" oder "nach unten" zu entscheiden.

Viele Grüße
Torsten
 
  • Gefällt mir
Reaktionen: 1 Benutzer

Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben