Autor Thema: \time abschneiden ("\time nicht zitierbar?") (GELÖST)  (Gelesen 4840 mal)

ingmar

  • Member
...und als Funktion?
« Antwort #15 am: Sonntag, 27. Dezember 2015, 15:10 »
ja, das letzte gefällt mir, und funktioniert. Danke! Aber doch drei Kommentare/Fragen:

  • Ich sehe, was das alles bewirkt, nur die Stelle (context-spec-music ... 'Score) erschließt sich mir nicht. Was macht das genau?
  • Wie oben schon angedeutet: Statt der if-Anfrage fände ich eleganter, etwas an die Partial-Liste anzuhängen, das im Falle des Nichtvorkommens von einer Partialangabe gefunden wird, aber keine Wirkung hat und keinen Fehler wirft. Sozusagen eine leere Partial-Angabe. Geht das auch, und was könnte das sein?
  • Wichtiger: Ich habe jetzt mal versucht, das Ganze in eine Funktion umzuwandeln, der ich nur die Variable TIME übergeben müsste. Leider will mir auch das nicht gelingen. Da fehlen halt doch noch allerhand Guile-Grundlagen.

Gruß,
--ingmar

harm6

  • Member
Re: \time nicht zitierbar?
« Antwort #16 am: Sonntag, 27. Dezember 2015, 16:12 »
Zitat
Ich sehe, was das alles bewirkt, nur die Stelle (context-spec-music ... 'Score) erschließt sich mir nicht. Was macht das genau?

\partial und \time kann man ja einmal setzen und es wirkt sich auf alle Staffs eines Scores aus.
In 2.18.2 ist es nötig diese Funktionalität nach dem Auslesen mittels (context-spec-music ... 'Score) zu restaurieren. Natürlich ist das inkonsistent mit dem Auslesen von \time, wo man das nicht braucht und es trotzdem funktioniert. Deshalb wurde es in 2.19. von David Kastrup korrigiert. Das entsprechende issue auf dem tracker hab' ich jetzt aber nicht gesucht.

Zitat
Statt der if-Anfrage [...], das im Falle [...]

Aber dann brauchst Du ja doch eine if-Anfrage...
Hier versteh ich offensichtlich nicht was Du meinst.

Zitat
Ich habe jetzt mal versucht, das Ganze in eine Funktion umzuwandeln,

Das wäre dann mein `get-initials' aus meinem früheren post als 2.18.2-Variante:

\version "2.18.2"

get-initials =
#(define-music-function (parser location music)(ly:music?)
"Read out first occurences of 'TimeSignatureMusic and 'PartialSet, if any.
Return them in sequential music"
  ;; to get mono-thematic lists we use `extract-named-music' with single
  ;; expressions, otherwise we would need to select the new list afterwards
  (let* (;; get all 'TimeSignatureMusic from `music'
         (time-elts (extract-named-music music 'TimeSignatureMusic))
         ;; get all 'PartialSet from `music'
         (partial-elts (extract-named-music music 'PartialSet))
         ;; build a new list of the first elements of those lists, if any.
         ;; otherwise proceed with the empty list
         (initials-list   
           (append
             (if (not (null? time-elts))
                 (list (car time-elts))
                 time-elts)
             (if (not (null? partial-elts))
                 (list (context-spec-music (car partial-elts) 'Score))
                 partial-elts))))
   ;; turn it into sequential music
   (make-sequential-music  initials-list)))

\version "2.19.32"

MUSIC = \relative c' { b4   c d e   f g a   g a b   c r }
TIME = { \time 3/4 \partial 4 s1*99}

staff =
\new Staff {
   \clef "violin"
   \get-initials \TIME
   \MUSIC
}

<<
  \staff
  \staff
>>

Gruß,
  Harm

ingmar

  • Member
re: \time nicht zitierbar?
« Antwort #17 am: Montag, 28. Dezember 2015, 09:42 »
Zitat
harm6:
Zitat
Statt der if-Anfrage [...], das im Falle [...]

Aber dann brauchst Du ja doch eine if-Anfrage...
Hier versteh ich offensichtlich nicht was Du meinst.
Na, ich meinte folgendes:
Ich habe ein Stück Musik, das eine \partial-Angabe enthält oder eben nicht. Statt zu prüfen, ob sie eine enthält, hänge ich einfach etwas an, was als solche erkannt würde, aber weiter keine Wirkung hat. Sozusagen - falls es das gäbe - \partial 0. Filtere ich nun meine Musik auf Partials und nehme per car die erste, so würde eine tatsächlich Vorhandene auch gefunden. War hingegen keine vorhanden, würde mein an den Schluss angehängtes Dingsbums gefunden, das aber ja per definitionem keine Wirkung hat...

Egal, war wohl ein etwas esoterischer Gedanke, denn \partial 0 oder so gibt es ja nicht.

Wie auch immer, ich hab deine Funktion noch ein wenig erweitert, und jetzt arbeitet sie genau so, wie ich es brauche. Vielen Dank!

--ingmar

fugenkomponist

  • Member
Re: re: \time nicht zitierbar?
« Antwort #18 am: Montag, 28. Dezember 2015, 11:15 »
Egal, war wohl ein etwas esoterischer Gedanke, denn \partial 0 oder so gibt es ja nicht.
\partial 0 nicht, weil 0 keine Dauer ist. Aber „oder so“ gibts:\version "2.19.33"

{
  \partial 1*0 b b b b
  \break % für Anzeige der Taktzahl
  b b b b
}
1*0 ist eine Dauer, eben eine mit dem Faktor 0 skalierte ;)

ingmar

  • Member
Re: re: \time nicht zitierbar?
« Antwort #19 am: Montag, 28. Dezember 2015, 13:14 »
Zitat
fugenkomponist: 1*0 ist eine Dauer, eben eine mit dem Faktor 0 skalierte ;)
Whow! 1:0 gegen Ende der zweiten Halbzeit! Hier bleibts doch immer spannend! : - )

---ingmar