Meine Fragen beziehen sich auf eine - aus Zeitgründen längerfristig angelegte – Bastelarbeit; im Prinzip geht es dabei letzten Endes um die Darstellung von Partituren und das interaktive Abspielen von Stellen/Stimmen im Browser.
Dazu brauche ich als Basis eine aus einer Partitur automatisch erzeugte Tabelle mit den folgenden Informationen zu jeder Note:
1. x/y-Koordinate
2. Index der Stimme bzw. des Notensystems
3. Zeitpunkt note-on
4. Zeitpunkt note-off
5. Note angebunden oder Ton neu beginnend?
Eigentlich kann ich alle Daten problemlos und in einem Rutsch mithilfe eines selbst zusammengeklimperten Parsers aus dem MusicXML-Output eines Notenprogramms gewinnen.
Da sich der MusicXML-Output von Lilypond (das ich eigentlich den anderen Notensatzprogrammen gegenüber vorziehen würde) aber offenbar noch im Experimentalstadium befindet, war mein Gedanke, alternativ mal zu versuchen, diejenigen Informationen (2.-5.), die nicht sowieso direkt im SVG-Output enthalten sind, ähnlich wie in der Lilypond-Datei event-listener.ly zu gewinnen.
Prinzipiell mache ich bei meinen bisherigen Tests nichts anderes, als was dort auch gemacht wird, insofern lohnt es sich nicht, hier etwas eigenes zu posten. Was mich noch stört, weil es mir ziemlich unelegant vorkommt, ist die Tatsache, dass in event-listener.ly die Daten nicht erst gesammelt und dann - passend strukturiert - gemeinsam in eine Datei ausgegeben werden, sondern dass dort für jedes registrierte Event immer eine Datei aufgeklappt, einzeilig beschrieben und wieder zugeklappt wird.
Ich vermute aber, das geht nicht anders, weil man mit Scheme offenbar auf kein Event reagieren kann, das das Partiturende signalisiert? Das wäre ja Voraussetzung dafür, dass man ganz am Schluss, bevor das Programm terminiert, noch die gesammelten Informationen in eine Datei schreiben könnte.
Herzliche Grüße
Jost
P.S.: Die MIDI-Daten helfen mir übrigens nicht direkt weiter, weil dort hinterlegt ist, wann Töne an und ausgehen, und nicht, wann ein neues Notenzeichen kommt (was ja wegen Überbindungen nicht immer identisch ist).