Autor Thema: Ganze Notenabschnitte vollständig unsichtbar machen  (Gelesen 5877 mal)

Radler

  • Member
Ganze Notenabschnitte vollständig unsichtbar machen
« am: Dienstag, 2. März 2010, 15:13 »
Hallo zusammen!

Weiß jemand, wie ich auf einen Schlag von einer bestimmten Stelle im Notentext an alle Ausgaben unterdrücken kann? \hideNotes versteckt nur die Noten; die Notenlinien, Pausenzeichen, Bindebögen und wasNichtAlles werden gedruckt, als wären die Noten vorhanden.
Das mit ...stencil = #f habe ich nicht so recht verstanden, und ich muss wohl auch alles einzeln ausschalten.

Zur Erklärung dieser vielleicht sinnlos erscheinenden Anfrage:
Ich setzte Kanons gerne in mehreren Stimmen, so dass zusammen klingende Noten auch schön untereinander stehen. Das hat aber den Nachteil, dass der Ambitus-Engraver nur den Ambitus eines einzigen Kanonteils berücksichtigt. Deshalb schreibe ich hinter den \bar ":|" des ersten Kanonteils einfach ein \pagebreak und dann die anderen Kanonteile noch einmal. Bisher habe ich die letzte Seite manuell weggeworfen. Das macht jetzt Schwierigkeiten, weil ich die Weiterverarbeitung der Noten automatisieren möchte.
Deshalb also sollen \pagebreak und die anderen Kanonteile vollkommen unsichtbar sein.
Wie kann ich das erreichen?

Jeder Hinweis wird hochgeschätzt!!!

Grüße und vielen Dank!

Radler

PS: Zur Illustration ein Kanon in meiner Notation. Alles ab einschließlich Seite 3 soll vollkommen entfallen, es sollen nur die Seiten 1 und 2 generiert werden.

derHindemith

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #1 am: Dienstag, 2. März 2010, 18:25 »
Vielleicht \stopStaff?

kilgore

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #2 am: Dienstag, 2. März 2010, 20:03 »
Das Problem ist mir eigentlich nicht klar.... Radler, kannst du ein bisschen genauer erklären was du willst?

derHindemith

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #3 am: Dienstag, 2. März 2010, 20:41 »
vielleicht
\include "deutsch.ly"
\version "2.12.3"

erster = \relative c'' { \repeat volta 4 { c d e f g2 g c,1 } }

zweiter = \relative c'' { \repeat volta 4 { c2 a h4 a g f g1 } }

dritter = \relative g' { \repeat volta 4 { g4 f2 d4 d1 e } }

vierter = \relative c' { \repeat volta 4 { c1 g2 h c1 } }

\new Score \with { \consists Ambitus_engraver } {
   \new ChoirStaff <<
      \new Staff \erster
      \new Staff \zweiter
      \new Staff \dritter
      \new Staff \vierter
   >>
}
Leider ist der Ambitus in der letzten Zeile und nicht der erste, aber es ist ein Anfang.
« Letzte Änderung: Dienstag, 2. März 2010, 20:59 von derHindemith »

Radler

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #4 am: Mittwoch, 3. März 2010, 13:21 »
Hallo Hindemith,
bei Version 2.13.14 (die habe ich installiert und brauche sie auch) hängt der Ambitus völlig aussagefrei auf weißem Papier (siehe Anhang). Mache ich da was falsch?
Grüße und Dank
von Radler

\header
{
tagline = ##f
}
\include "deutsch.ly"
erster = \relative c'' { \repeat volta 4 { c d e f g2 g c,1 } }

zweiter = \relative c'' { \repeat volta 4 { c2 a h4 a g f g1 } }

dritter = \relative g' { \repeat volta 4 { g4 f2 d4 d1 e } }

vierter = \relative c' { \repeat volta 4 { c1 g2 h c1 } }

\new Score \with { \consists Ambitus_engraver } {
   \new ChoirStaff <<
      \new Staff \erster
      \new Staff \zweiter
      \new Staff \dritter
      \new Staff \vierter
   >>
}
\version "2.13.14"

Radler

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #5 am: Mittwoch, 3. März 2010, 13:23 »
Hallo Kilgore,
hattest Du den Anhang und das PS bemerkt?
R.

PS: Zur Illustration ein Kanon in meiner Notation. Alles ab einschließlich Seite 3 soll vollkommen entfallen, es sollen nur die Seiten 1 und 2 generiert werden.

RobUr

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #6 am: Mittwoch, 3. März 2010, 14:12 »
Der Ambitus_engraver für einen Staff schaut natürlich nach der höchsten und tiefsten Note aller Stimmen. Ergo könnte man die Kanonabschnitte splitten und gleichzeitig in einer Zeile in der Partitur notieren, wobei nur der jeweilige Abschnitt sichtbar bleibt. Die erste Überlegung wäre, den Note_heads_engraver für die unsichtbar zu machenden Stimmen zu entfernen, aber dies unterdrückt die Notenausgabe gänzlich, wodurch der Ambitus_engraver keine Information über die Existenz der zusätzlichen Stimmen erhält. Deshalb muss man sie per \hideNotes unsichtbar machen und alle anderen relevanten Engraver entfernen. Das könnte dann etwa so aussehen:
\version "2.13.14"

\include "deutsch.ly"

\header {
title = "Singen macht Spaß"
subtitle = "Kanon"
}

\paper {
left-margin = 1.5\cm
line-width = 18\cm

ragged-bottom = ##t
print-page-number = ##f
%tagline = ##f
}

globalScore = {
\key d \major
\time 12/8
\tempo 4. = 116
\skip 1.*2 \break
\skip 1.*2 \bar ":|"
}

globalVoice = {
\key d \major
\time 12/8
\tempo 4. = 116
\skip 1.*4 \bar "||" \break
\skip 1.*4 \bar "||" \break
\skip 1.*4 \bar "||" \break
\skip 1.*4 \bar ":|"
}

notenI = \relative c' {
fis4\fermata fis8 fis4 a8 ~ a4 r8 r4. d,4 d8 d4 fis8 ~ fis4 r8 r4
d8 g4 g8 fis4. e4 e8 d4. e4 e8 fis4 e8 ~ e4. r4.
}

notenII = \relative c' {
a'4\fermata a8 a4 a8 ~ a4. h4( cis8) d4 d8 d4 a8 ~ a4. r4
a8 h4. a4. g4 g8 fis4. a4. h4 a8 ~ a4. r4.
}

notenIII = \relative c' {
d'4.\fermata ~ d4 cis8 ~ cis4. d4( cis8) h4. ~ h4 a8 ~ a4. r4
d,8 d4 d8 d4 d8 d4 d8 d4 d8 a4. d4 cis8 ~ cis4. r4.
}

notenIV = \relative c' {
d4\fermata d8 d4 cis8 ~ cis4. a4. h4 a8 h4 d8 ~ d4. r4.
g4 g8 fis4. e4 e8 d4. a'4 a8 a4 a,8 ~ a4. a4.
}

akkorde = \chordmode {
\germanChords
d2. a h:m d g e:m7 a:sus4 a
}

textI = \lyricmode {
Sin -- gen macht Spaß, Sin -- gen tut gut, __
ja, Sin -- gen macht mun -- ter, und Sin -- gen macht Mut! __
}

textII = \lyricmode {
Sin -- gen macht froh, und __ Sin -- gen hat Charme,
die Tö -- ne neh -- men uns in den Arm. __
}

textIII = \lyricmode {
All __ un -- s’re __ Stim -- men,
sie klin -- gen mit im gro -- ßen Chor, im Klang der Welt. __
}

textIV = \lyricmode {
Sin -- gen macht Spaß, und Sin -- gen tut gut, __
Sin -- gen macht mun -- ter, und Sin -- gen macht Mut! __ Ja,
}

\score {
<<
\new ChordNames { \akkorde }
\new ChoirStaff
<<
\new Staff \with {
instrumentName = "I"
\consists Ambitus_engraver
}{
<<
\new Voice = "partI" { << \globalScore \notenI >> }
\new Voice \with {
\remove Dots_engraver
\remove Dot_column_engraver
\remove Rest_engraver
\remove Rest_collision_engraver
\remove Stem_engraver
\remove Slur_engraver
\remove Tie_engraver
\remove Rhythmic_column_engraver
\remove Axis_group_engraver
\remove Script_engraver
}{ \hideNotes << \notenII \notenIII \notenIV >> }
>>
}
\new Lyrics \lyricsto "partI" { \textI }

\new Staff \with {
instrumentName = "II"
}{ << \globalScore \notenII >> }
\addlyrics { \textII }

\new Staff \with {
instrumentName = "III"
}{ << \globalScore \clef "treble_8" \transpose c c, \notenIII >> }
\addlyrics { \textIII }

\new Staff \with {
instrumentName = "IV"
}{ << \globalScore \clef "bass" \transpose c c, \notenIV >> }
\addlyrics { \textIV }
>>
>>

\layout {
indent = #10
\context {
\Staff
\override InstrumentName #'font-series = #'bold
}
\context {
\Score
\remove Bar_number_engraver
}
\context {
\Lyrics
\override LyricHyphen #'minimum-distance = #1.0
}
}

%\midi {}
}

\pageBreak

\score {
<<
\new ChordNames { \repeat unfold 4 \akkorde }
\new Staff \with {
\consists Ambitus_engraver
}{
<< \globalVoice { \notenI \notenII \notenIII \notenIV } >>
\addlyrics { \textI \textII \textIII \textIV }
}
>>

\layout {
indent = 0
system-count = #8
\context {
\Lyrics
\override LyricHyphen #'minimum-distance = #1.0
}
\context {
\Score
\remove Bar_number_engraver
}
}
}
Es produziert zwar etliche Warnungen, aber die Ausgabe ist in Ordnung.

Vielleicht hilft dir dieses Konzept für die „Weiterverarbeitung“.

Grüße, Robert

Radler

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #7 am: Mittwoch, 3. März 2010, 14:25 »
Ui - da muss ich mich erstmal 'ne Weile reindenken - danke Robert!!!
Grüße
von Radler

Radler

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #8 am: Mittwoch, 3. März 2010, 14:29 »
Hallo Hindemith, mit \stopStaff sieht das ganz schrill aus - siehe Anhang!
Grüße und Dank
von Radler

trulli

  • Member
Re:Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #9 am: Mittwoch, 3. März 2010, 21:33 »
lol

\stopStaff scheint mir pädagogisch sehr nützlich zu sein...

Arbeitsaufgabe:
Hier hat der Notensetzer etwas vergessen.
Zeiche alle Notenlinien und Taktstriche ein.

 :)

Grüße

himatt

  • Member
Re: Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #10 am: Mittwoch, 15. Februar 2012, 12:25 »
\hideNotes
Zitat
Notationsobjekte, die an die unsichtbaren Noten angefügt sind, sind weiterhin sichtbar.
(NR 1.7.1)
Schön wäre schon ein einfacher Befehl, der tatsächlich alles unsichtbar macht. Und am besten gleich den Text, der eventuell dran hängt, ebenfalls.
Oder gibt es da doch eine Lösung (inzwischen)?
Bisher einfachste Lösung für mich: Notentext ausklammern und mit unsichtbaren Pausen an die richtige Stelle springen.
Matthias
@Matthias: danke für die Aufgabenidee! Werd ich in meiner nächsten Musikstunde testen :D

harm6

  • Member
Re: Ganze Notenabschnitte vollständig unsichtbar machen
« Antwort #11 am: Mittwoch, 15. Februar 2012, 21:16 »
Hallo Matthias,

schau mal, ob Du hiermit was anfangen kannst.

Die Funktion \stopMusic ersetzt die Noten (und was dranhängt) jeden Taktes durch spacer-rests deren Wert vorher anzugeben ist.
Bsp: \stopMusic s2. { ... } (bei einem 3/4-Takt)

\version "2.14.2"

stopMusic =
#(define-music-function (parser location time music)(ly:music? ly:music?)
   (let* ((factor (ly:moment-main-numerator
                      (ly:moment-div (ly:music-length music)
                                     (ly:music-length time)))))
#{
        \repeat unfold $factor $time
#}))
     
\score {
        <<
        \new Staff \relative c' {
        \time 3/4
        \stopMusic s2.
        { c2.-. d (e) \repeat unfold 12 { f16 }
                     e2. d c d-"XYZ"
                     e\startTrillSpan f e \stopTrillSpan d } 
                     cis dis e f
        }
        \new Staff \relative c' {
                   { c2. d e f
                     e d c d
                     e f e d } 
                     cis dis e f
        }
        >>
}

\score {
        <<
        \new Staff \relative c' {
        \time 5/8
        \repeat unfold 2 { c2 d8 }
        \bar "|"
        \stopMusic { s2 s8 }
        \repeat unfold 2 { c2 d8 }
        \repeat unfold 2 { c2 d8 }
                   
        }
        \new Staff \relative c' {
       
        \repeat unfold 2 { c2 d8 }
        \repeat unfold 2 { c2 d8 }
        \repeat unfold 2 { c2 d8 }
        }
        >>
}

HTH,
  Harm