Orgelstimme in Partitur

Begonnen von chf, Sonntag, 3. Dezember 2017, 20:11

« vorheriges - nächstes »

chf

Liebe Freunde,

\version "2.18.2"

\score {
 
  \new StaffGroup <<                                                     
<<
\new Staff   { << \global \posOne     >> }
\new Staff   { << \global \posTwo     >> }
\new Staff   { << \global \posThree   >> }
  >>
>>
\new Staff   { << \global \tuba    >> }

\new StaffGroup <<                                                   
<<
\new Staff   { << \global \schlOne     >> }
\new Staff   { << \global \schlTwo     >> }
  >>
>>
\new Staff   { << \global \car    >> }

\new Staff <<

\new PianoStaff = \with {Staff.instrumentName = \markup \italic \fontsize #1 "ORGEL"}
            <<
              \new Staff = "1" <<\global \upper >>               
              \new Staff = "2" <<\global \lower >>
            >>
           \new Voice  = "ped" {\global \ped }
        >>
  >>
>>
}


hier ist ein Ausschnitt aus einer weit umfangreicheren Partitur.
Die Kompilierung scheitert an der Orgelstimme.

Die Fehlermeldung:
Zeichenkette nicht erkannt, weder Textbeschriftung noch \lyricmode
          \new PianoStaff = \with {Staff.
                                         instrumentName = \markup \italic \fontsize #1 "ORGEL"}


Was mache ich falsch?

Mit herzlichem Adventsgruß
Christa

ingmar

Hallo Christa,


wie leider oft, ist dein Beispiel nicht vollständig und kompiliert nicht. Sag - ist es denn schwer, dafür zu sorgen?

Warum schließt du die StaffGroup immer in doppelte doppelte spitze Klammern ein?

Was soll "\new Staff = "1" <<\global \upper >>" bedeuten? Du sagst, du willst einen Staff definieren und lieferst dann stattdessen einen String, "1". Der Compiler ist natürlich enttäuscht. Bitte schau in der Doku nach, wie der Befehl lauten sollte. : - )


Gruß,
--ingmar

Malte

Ich schließe mich ingmars Bitte an, ohne Minimalbeispiel ists oft wirklich nicht möglich, den Fehler schnell zu finden. Das weißt du doch inzwischen sicher, das war ja auch im alten Forum schon so ;)

Hier außerdem ein Fall, der spätestens beim Erstellen des Minimalbeispiels gelöst werden kann; alternativ lohnt es sich, Fehlermeldungen genau zu lesen.

Nach dem = fehlt der Name bzw. das = ist zu viel.

Ach ja, ingmar, tatsächlich ist \new Staff = "1" richtig und der Fehler liegt lustigerweise an einer Stelle, wo genau das falsch gemacht wurde.

ingmar

#3
Zitat von: Malte am Sonntag,  3. Dezember 2017, 20:39Ach ja, ingmar, tatsächlich ist \new Staff = "1" richtig
hihi...! --ingmar

EDIT: Stimmt. Die Staffs können einen Namen haben; ich hatte das auch schon verwendet.

chf

\version "2.18.2"

global = {}

posOne = \relative {
}

posTwo = \relative {
}

tuba = \relative {
}

car = \relative {
}

schlOne = \relative {
}

schlTwo = \relative {
}

upper = \relative {
}

lower = \relative {
}

ped = \relative {
}


\score {

  \new StaffGroup <<                                                     
<<
\new Staff   { << \global \posOne     >> }
\new Staff   { << \global \posTwo     >> }
  >>
>>

\new Staff  { << \global \tuba    >> }

\new StaffGroup <<                                                   
<<
\new Staff   { << \global \schlOne     >> }
\new Staff   { << \global \schlTwo     >> }
  >>
>>

\new Staff  { << \global \car    >> }



\new PianoStaff
{\with Staff.instrumentName = \markup \italic \fontsize #1 "ORGEL"}
            <<
              \new Staff = "1"  <<\global \upper >>               
              \new Staff = "2"  <<\global \lower >>
            >>
           \new Voice   {\global \ped }
        >>
 
>>
}


Hallo Ingmar und Malte,

mein code war mangelhaft, und das tut mir leid.
Jetzt versuche ich es mit einem  - nicht minimalen - Beispiel, weil ich nicht weiß, wie ich mein Problem sonst verdeutlichen soll.
Die doppelten Klammern sind wohl nötig, um die Instrumentengruppen zusammenzufassen.

Ihr habt euch schön unterhalten, aber ich komme damit nicht klar.
In den Vorlagen erscheint die Orgel in keiner Partitur. Die Stimme allein konnte ich richtig bezeichnen, aber die Einbindung klappt nicht.
Bitte korrigiert mein Beispiel und habt Nachsicht .

Christa



Manuela

Hallo Christa,

ohne jetzt deinen Code kompillieren zu können (mangels 2.18 und Lilypond überhaupt auf dem Tablet), hast du schon probiert vor und nach den geschweiften Klammern jeweils Leerzeichen einzufügen? Die "Sparschreibweise" hat bei mir schon zu seltsamen Fehlermeldungen geführt,
Danke für eure Hilfe
viele Grüße
-- Manuela

ingmar

#6
Hallo Christa,

nur ein paar Dinge, die mir sofort auffallen:

1. Dein neues Beispiel kompiliert auch nicht.

2. Du schreibst zu deinem ersten Beispiel:

ZitatDie Fehlermeldung:
Zeichenkette nicht erkannt, weder Textbeschriftung noch \lyricmode
          \new PianoStaff = \with {Staff.
                                         instrumentName = \markup \italic \fontsize #1 "ORGEL"}

Offenbar taucht der Fehler ja bei Staff.instrumentName auf. Da wir eh in einem Staff sind, würde ich versuchen, nur instrumentName zu verwenden, ohne Staff.

Wieder zu deinem neuen Beispiel:

3. \with gehört nicht in die Klammer, sondern davor.

4. Mehrere StaffGroups müssen unter eine gemeinsame StaffGroup gesetzt werden (http://lilypond.org/doc/v2.19/Documentation/notation/displaying-staves#nested-staff-groups)

5. Und ich hatte nicht von << ... >>, sondern von <<  << ... >>  >> gesprochen und nach dem Sinn gefragt. : - )


Das wird allerdings noch nicht reichen. - Gruß,
--ingmar

Arnold

Hallo chf,

meine Ratschläge, ohne zu versuchen Dein Beispiel zu kompilieren:

  • Du beginnst innerhalb eines Staff mit einem PianoStaff - so etwas mache ich nur, wenn ich temporär weitere Notenzeilen benötige.
    Ich würde hier eine StaffGroup nehmen, in welcher ich »zuerst« den systemStartDelimiter = #'SystemStartSquare
    setze, danach beginne ich »parallel« mit dem PianoStaff (welche dann wieder zwei Staff enthält) und dem Staff fürs Pedal.
  • Im with-Block sollten nur die Attribute gesetzt werden, welche zu seinem Kontext gehören, also ohne die »Vorwahl«
  • Da ich annehme, daß in \global { \key \time \partial } abgelegt werden, in der folgenden Variable dann die Noten, würde ich das in eine »Sequenz« packen, nicht in einen »Simultan-Block«.
  • Nur, weil ich sehr oft die Stimmen für mehrere (transponierende) Instrumente bereitstelle, die oft in unterschiedlichen Schlüsseln notiert werden, schreibe ich den \clef meistens in die Partitur-Struktur hinein statt in die Stimmen

Und, wie ja bekannt sein sollte, also nur zur Erinnerung:

  • Sequentiell = aufeinanderfolgend = in geschweifter Klammer { }
  • Parallel = simultan = nebeneinander = in Doppel-Spitz-Klammer << >>

Ein Beispiel mit with:\new StaffGroup \with {
  systemStartDelimiter = #'SystemStartSquare
} <<
  \new PianoStaff \with {
    instrumentName = "ORGEL"
  } <<
    \new Staff = "OrgelRechetHand" {
      \clef treble   \global   \upper
    }
    \new Staff = "OrgelLinkeHand" {
      \clef bass   \global   \lower
    }
  >>
  \new Staff = "OrgelPedal" {
    \clef bass   \global   \ped
  }
>>

Dies setzt den InstrumenName im PianoStaff, damit vor der geschweiften Klammer!

Schreibt man die Kontexteinstellungen als \set außerhalb der \with-Blöcke, dann sollten diese sequentiell vor den folgenden parallelen Blöcken stehen. Eventuelle Vorschläge am Anfang des Stückes lassen so die Struktur besser synchronsieren.\new StaffGroup {
  \set StaffGroup.systemStartDelimiter = #'SystemStartSquare
  <<
    \new PianoStaff {
      \set PianoStaff.instrumentName = "ORGEL"
      <<
        \new Staff = "OrgelRechetHand" {
          \clef treble   \global   \upper
        }
        \new Staff = "OrgelLinkeHand" {
          \clef bass   \global   \lower
        }
      >>
    }
    \new Staff = "OrgelPedal" {
      \clef bass   \global   \ped
    }
  >>
}


Arnold

chf

Hallo allen Beteiligten,

so sieht's jetzt aus!
Danke für eure Mühe mit mir.
@Arnold: Dank für den "Durchbruch"!

Gruß
Christa

Arnold

Ja, Christa,

und wenn ich dein Lilypond-Lehrer wäre, würde ich dich jetzt auffordern, das global als
global = { \time 3/4 }
festzulegen, und jeden Musikdefinintionsparameter (letztlich in jedes \relative) mit
\relative {
  \grace c'8 c2.
}
zu belegen  ;)

Arnold