![]() |
AW: erweiterte Demo für BASSMIDI.DLL
Danke, Delphi.Narium für die aufmunternden Worte.
Aber ich hab's mittlerweile aufgegeben. Leider funktioniert Dein Vorschlag bzgl. EndSync auch nicht. Ansonsten: Ja, es stimmt. Bei den Methoden, wie Texte in Midi-Dateien eingebunden sind, herrscht absolutes Chaos. Bei einigen Midi-Dateien meiner Sammlung erscheinen diese zwar innerhalb von lbLyrics ( egal ob ich es beim ursprüngichen Label belassen habe oder das Memo draus gemacht habe ) aber werden nicht übernommen. Bei Deiner Variante von ProcessMarkText wird immerhin bei einigen wenigstes etwas zurück geliefert, aber bei anderen fehlt dafür jede erste Zeile. Die Art und Weise wie ich lbLyricsChange konstruiert habe, ist einfach falsch. Korrekt wäre, jede Zeile solange aktiv zu halten, bis sich deren Inhalt nicht mehr ändert und sie dann zu übernehmen. Aber dafür fehlt mir einfach das Verständnis, wie man da vorgehen muss. Ich hatte das bisher noch nie, dass Zeilen nach und nach gefüllt werden. Im Grunde müsste man immer den Text einer Zeile einlesen, in eine andere kopieren, beide miteinander vergleichen und erst wenn es keine Unterschiede mehr gibt, in Lyrics_Memo.Lines übernehmen. Das kommt einem zwar einfach vor, aber ich kann's einfach nicht. |
AW: erweiterte Demo für BASSMIDI.DLL
Versuch es mal mit meiner MidiLyricsClass
![]() |
AW: erweiterte Demo für BASSMIDI.DLL
Habe mir mal etliche Midis im Hexeditor angeschaut. Als Zeilenumbruch kommt auch noch #10 in Frage (was eigentlich naheliegend ist - für die Unixwelt). Daher hab' ich meine Routine mal ein bisserl angepasst:
Delphi-Quellcode:
Ob's damit besser wird, weiß ich nicht, hatte noch keine Zeit im Zusammenhang mit Deinem Programm zu testen. Bei meinem scheint es das Ergebnis aber etwas zu verbessern. Blöd wird es nur, wenn in 'ner Midi nun #13#10 als Zeilenvorschub geliefert wird, dann haben wir ggfls. 'ne Leerzeile zuviel.
function ProcessMarkText(CaptionText, MarkText : string) : string;
begin if Length(MarkText) > 0 then begin case MarkText[1] of '@' : Result := CaptionText; '\' : Result := #13#10 + Copy(MarkText, 2, pred(Length(MarkText))); '/','<' : Result := CaptionText + #13#10 + Copy(MarkText, 2, Length(MarkText)); '*' : Result := CaptionText + #13#10 + MarkText + #13#10; #10 : Result := CaptionText + #13#10; #13 : Result := CaptionText + #13#10; else Result := CaptionText + MarkText; end; end else begin Result := CaptionText; end; end;
Delphi-Quellcode:
Keine Ahnung, ob's so noch besser wird (oder das Ergebnis eher kontraproduktiv ist).
function ProcessMarkText(CaptionText, MarkText : string) : string;
begin if Length(MarkText) > 0 then begin case MarkText[1] of '@' : Result := CaptionText; '\' : Result := #13#10 + Copy(MarkText, 2, pred(Length(MarkText))); '/','<' : Result := CaptionText + #13#10 + Copy(MarkText, 2, Length(MarkText)); '*' : Result := CaptionText + #13#10 + MarkText + #13#10; #10 : Result := CaptionText + #13#10; #13 : case MarkText[2] of #10 : Copy(MarkText, 3, Length(MarkText) - 2); else Result := CaptionText + #13#10; end; else Result := CaptionText + MarkText; end; end else begin Result := CaptionText; end; end; Der Quelltext von venice2 hat einen anderen (dafür aber funktionierenden) Ansatz: Die Mdiddatei wird auf Texte / Lyrics geparst und diese werden dann ausgegeben. Will man "nur" an die Texte kommen, um sie zu speichern und benötigt keine zur Wiedergabe synchrone Anzeige der Texte, erscheint mir das die bessere Lösung zu sein. |
AW: erweiterte Demo für BASSMIDI.DLL
@Venice2: Vielen Dank, aber ich habe damit grosse Probleme.
Es ist mir leider unmöglich, Deine Unit einzubinden, weil sie auf einem ganz anderen Konzept beruht, als das von un4seen.com, auf dessen Beispielen ich aufgebaut habe. Mir geht es vor allem drum, mit Soundfonts zu arbeiten. Die Lyrics sind nur ein Nebenaspekt. Eigentlich würde ich sogar gerne störende Texte (keine Lyrics) entfernen, die von diversen Konvertierungsprogrammen ungefragt in meine eigenen Kompositionen reingeknallt werden. Dein sehr aufwändiges, vollständig fertiges - aber auf einer anderen Basis aufbauendes - Programm kann ich leider mit meinem Delphi 7 nicht mal ansatzweise compilieren. Ich hab die fertige Exe-Datei paar mal ausprobiert. Es sieht zwar auf den ersten Blick optisch reizvoll aus, aber dann merkt man schnell, dass es mit für Midi völlig unerheblichen Elementen regelrecht überladen ist. Mal von der absolut unübersichtlichen Bedienbarkeit und diversen seltsamen, nicht näher beschreibbaren Fehlern abgesehen, sind die Lyrics nicht synchron zur Musik und der Aufbau von unten nach oben störend. Ausserdem werden die Texte auch nicht (wie es mein Ziel ist) letztlich als Ganzes zusammengefasst. Das ist also auch nicht besser als die ursprüngliche Darstellung von un4seen.com, bei der Textteile (wenigstens synchron zur Musik) in einem Label erscheinen. @Delphi.Narium: Wie gehabt. Wie das jeweile Zeilenende aussieht, ist anscheinend unerheblich und die Vorgabe-Prozedur EndSync ist meiner Meinung nach völlig unnötig. Ich hab das mal getestet, indem ich gleich nach dem "begin" ein "exit" gesetzt habe. Der Text wird trotzdem gelöscht, auch ohne das man dazu extra eine Anweisung gibt. Ich bleibe dabei: Mein Versuch, die einzelnen Absätze in "lbLyricsChange" zusammenzufassen, ist schon vom grundsätzlichen Denkansatz her falsch. Eigentlich würde sogar reichen, wenn man es hinbekäme, dass der Inhalt von lbLyrics nicht gelöscht wird, sondern neue Absätze angefügt werden. Aber auch dafür bin ich zu dumm. Wahrscheinlich werde ich den Lyricsteil ganz weglasse, wenn sich dafür keine überall funktionierende Lösung findet. Mir geht es vor allem um die Nutzbarkeit der Soundfonts. Wenn's nur um das Abspielen von Mididateien ginge, gibt's erhebliche einfachere Sachen - auch mit Lyrics zeilenweise gekleckert und danach verschwindend. |
AW: erweiterte Demo für BASSMIDI.DLL
Hallo zusammen
Tolle Arbeit! Aber leider konnte ich mit der Version 6 "archy-breaky-heart.mid" nicht abspielen. Fehlermeldung: "maybe damaged. Please choose another one". Kann mir jemand ein weiteres Beispiel mit "Lyrics" geben. Danke! |
AW: erweiterte Demo für BASSMIDI.DLL
Auf der oben verlinkten Seite
![]() |
AW: erweiterte Demo für BASSMIDI.DLL
Danke. Es funktioniert mit "archy-breaky-heart". Beim Debuggen stellte sich heraus, dass kein Soundfont gefunden wurde. Mit Soundfont ist alles ok.
|
AW: erweiterte Demo für BASSMIDI.DLL
Ich glaube, bei der Version 6 war noch ein Fehler bei der Erkennung von SoundFonts, sobald man entweder das Verzeichnis mit Soundfonts oder das mit Midi-Dateien gewechselt hat. Dann wurde der Pfad nicht korrigiert.
Wenn man bei meiner letzten Version 0.8b unter "Settings" die Option "save Inifile when program ends" anklickt, werden die aktuellen Einstellungen in einer INI-Datei gespeichert und solange bei jedem neuen Programmstart wieder übernommen, wie diese Option gesetzt bleibt. |
AW: erweiterte Demo für BASSMIDI.DLL
Da muss ich noch drauf antworten.
Zitat:
Zitat:
Zitat:
Dementsprechend ändert sich dann die Farbe des Textes. Zitat:
Fazit! Bitte mache es besser nur ansatzweise :) so wie ich hier lese kommst du damit aber scheinbar nicht zurecht. Habe keine Probleme mit Kritik wenn sie denn berechtigt ist. Nein ich habe dein Projekt nicht getestet möchte ich auch nicht. Zudem ReadMe gelesen? Ich denke du hast nur Frust das du meine Herangehensweise in deinem Projekt nicht umsetzen kannst. PS: Es gibt auch ein Menu wenn man oben auf das Caption klickt. but, i have remove the link.. EDIT: Um sich nicht von seiner Meinung beeinflussen zu lassen ![]() Frage? Wo sind Fehler.? Was geht nicht von Bottom to Top? Was ist nicht synchron? Was ist unnötig? |
AW: erweiterte Demo für BASSMIDI.DLL
Wenn ein Programm schlecht bedienbar ist, funktionelle Fehler aufweist, die sich nicht nachvollziehen lassen, weil man die Sourcen nicht compilieren kann und die Hauptfunktion eines Programms offensichtlich nicht darin besteht, seinen eigentlichen Zweck (das Abspielen von Mididateien) zu erfüllen, sondern viel mehr Wert auf möglichst viele grafische Effekte legt (die mir für funktionelle Fehler verantwortich scheinen) kann ich aus logischen Gründen keine Lobhudelei darüber von mir geben.
Wenn jemand zudem erst so tut, als hätte er die Lösung für eins der Probleme meines Projektes, ohne sich überhaupt mal vorher damit befasst zu haben, worum es sich dabei handelt und dass schon darum verkehrt war, sein eigenes Produkt anzupreisen, fehlt mir auch rein menschlich dafür das Verständis. Warum sollte ich versuchen, die Fehler eines Programms konkret zu suchen, das mich erstens gar nicht interessiert, weil es mit viel zu viel grafischem Schnickschnack überladen ist, den ich absolut nicht brauche, und das sich bei mir ohnehin nicht compilieren lässt, weil es offensihtlich mit einer Delphi-Version erstellt wurde, die ich nicht habe? Es ist nicht gerade freundlich, auf meine rein sachliche Kritik mit gegen mich persönlich gerichteten Frust-Angriffen zu reagieren. Ich möchte keinen Kontakt und keine weitere Auseinandersetzung mit dieser Person. Seine Produkt hat absolut nichts mit meinen Zielen zu tun und es gibt keinerlei Schnittmengen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz