kar-Format möglichst beim Import erhalten.
"/" und "\" werden in der Datei "importmidi_lyrics.cpp" in den Methoden "removeSlashes" entfernt. Ich kenne dafür den Grund nicht, aber beim Midi-Export fehlen diese Angaben. Ich würde vorschlagen, diese Methoden ersatzlos zu streichen.
Comments
Der Code, auf den du dich beziehst ist in importexport/midiimport/importmidi_lyrics.cpp, Zeile 162-179 und stammt aus 535b593 und 9df4ae7
MIDI Export exportiert Liedtext ganz und gar nicht, siehe #6639: Export lyrics in .kar MIDI format
In reply to MIDI Export exportiert… by Jojo-Schmitz
Ja, alles, was du geschrieben hast, stimmt. Aber mit meinem Workaround (siehe #6639) füge ich die Liedtexte nach dem Midi-Export ins Midi ein. Und es wäre schön, wenn die "Slashes" mit reinkommen würden. Gibt es Gründe, die dagegen sprechen würden?
Mit der geänderten importmidi_lyrics.cpp Datei (im Anhang) erhielt ich nach dem Import von michael_0_orig.mid die MS-Datei michael_0.mscz.
In reply to Ja, alles, was du… by jmueller5524
Ich habe keine Ahnung warum @trig-ger es seinerzeit für nötig befand diese Slashes zu entfernen, daher kann ich nicht beurteilen was möglicherweise kaputt geht, wenn man das rausnimmt.
In reply to Ja, alles, was du… by jmueller5524
Ist es 'normal', dass etliche Silben mehrfach an der gleichen Stelle vorkommen? Eigentlich immer dort, wo es eigentlich nur eine Silbe, aber über mehrere Noten sein sollten, also mit Melsima - oder _?
In reply to Ist es 'normal', dass… by Jojo-Schmitz
Nein, das ist ein Fehler, den MS beim Import produziert. Im binären Midi-Auszug sind die Silben nur einmal vorhanden.
Nach meinem Verständnis sollten die Silben auch mehrfach angezeigt werden. Das wären dann weitere Strophen.
In reply to Nein, das ist ein Fehler,… by jmueller5524
Nein, nicht mehrere Strophen, dann stände das in MuseScore etwa anders, das sind alles Strophe 1 Texte.
Und nur dort wo eigentlich Melismas stehen sollten, also sollten da wohl eher diese auch erzeugt werden.
Etwa ähnliches scheint schon in #305730: Lyrics lines in imported MIDI files are duplicated several times and stacked on top of each other berichtet worden zu sein?
Die (führenden) Leerzeichen sollten beim Import wohl auch entfernt werden (mit
text.trimmed()
oder gartext.simplified()
)In reply to Ja, alles, was du… by jmueller5524
Packe das am Besten mal (in Englisch) in den Issue Tracker,
zusammen mit deinem Änderungsvorschlag.
In reply to Packe das am Besten mal (in… by Jojo-Schmitz
Danke!
In reply to Packe das am Besten mal (in… by Jojo-Schmitz
Ich verstehe auch nicht so ganz warum da 2 mal
replace() verwendet wird statt einmal
remove()` mit regulärem Ausdruck:newText = newText.remove(QRegExp("[/\\]."));
In reply to Ich verstehe auch nicht su… by Jojo-Schmitz
Im ersten Fall ist es die QString-Methode replace. Im zweiten Fall ist es eine C++-Methode der Standard-Library. Man sollte sich der Wartung wegen für ein klares Design entscheiden und damit nur eine einzige Library einbinden: Und das ist in diesem Projekt klar die Qt-Library.
Im Übrigen entfernen diese Methoden sämtliche Slashes im String, also auch solche, die Teil des Textes sein könnten.
In reply to Im ersten Fall ist es die… by jmueller5524
Nur kann man die std::string Methoden nicht auf einen QString anwenden und umgekehrt. Es scheint, dass die beiden unterschiedlichen Methoden für unterschiedliche Zwecke benötigt werden, welcher genau erschließt sich mir auf die Schnelle nicht...
Edit: die std::string Methode wird anscheinen im MIDI Import Dialog benutzt, die andere für den eigentlichen Liedtext in der MuseScore Datei.
Und wie gesagt: keine Ahnung warum der Autor meinte Slashes entfernen zu müssen.
Edit: sind die evtl. (nur) für Karaoke wichtig, um dort die vorige Zeile aus der Anzeige zu löschen und die nächste Zeile anzuzeigen?
Diese angehängten Leerzeichen scheinen zu bedeuten, das das Wort zu Ende ist (und es sollte dann beim MIDI Import entfernt werden), ohne ein solches müssten beim MIDI Import dann ein - generiert werden. Die Doppelungen könnten bedeuten, dass ein _ generiert werden müsste.
Die erste Theorie wird gestützt von https://www.mixagesoftware.com/en/midikit/help/HTML/karaoke_formats.html
In reply to Diese angehängten… by Jojo-Schmitz
Nein, die Doppelungen deuten darauf hin, dass in Notenzeilen mit Violinschlüssel mehre Noten mit denselben Positionen und Dauer wie der Text stehen. Es sieht so aus, als dass die Leerschläge bestimmen, wo die '-' zu stehen kommen.
criminal verwendet ' ' vor dem Text;
michael verwenden ' ' nach dem Text.
Vielleicht ist es das Beste, man übernimmt es, so wie es ist, dann stimmt es nach dem Exportieren für den Player.
Ich habe jetzt kein Beispiel, aber kann man Midis mit mehrstrophigem Text korrekt einlesen?
In reply to Nein, die Doppelungen deuten… by jmueller5524
Ohne die Bindestriche stimmt es aber nicht in MuseScore, und das sollte es aber, in erster Linie.
Auch die Dopplungen sollten unbedingt vermieden werden
Der Export, bzw. dein Programm müsste dann aus den Bindestrichen wieder Leerzeichen machen, die Doppelungen werden dort wohl eh nicht gebraucht, oder?
In reply to Ohne die Bindestriche stimmt… by Jojo-Schmitz
Die Doppelungen werden von MS generiert. Ich versuche einmal etwas tiefer in die MS-Source einzudringen.
In reply to Die Doppelungen werden von… by jmueller5524
Das ist mir klar. MuseScore müsste auch die Bindestriche generieren und die Leerzeichen entfernen
In reply to Nein, die Doppelungen deuten… by jmueller5524
Mehrstrophige MIDIs müssten wohl 'unrolled' sein.