AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte erweiterte Demo für BASSMIDI.DLL

erweiterte Demo für BASSMIDI.DLL

Ein Thema von Delfiano · begonnen am 9. Nov 2020 · letzter Beitrag vom 22. Feb 2021
Antwort Antwort
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#1

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 00:31
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.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 00:35
Versuch es mal mit meiner MidiLyricsClass
Oder versuch mal das hier weil in der Pas noch Abhängigkeiten fehlen.

Geändert von venice2 ( 1. Dez 2020 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 09:41
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:
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;
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.
Delphi-Quellcode:
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;
Keine Ahnung, ob's so noch besser wird (oder das Ergebnis eher kontraproduktiv ist).

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.
  Mit Zitat antworten Zitat
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#4

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 09:54
@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.

Geändert von Delfiano (23. Nov 2020 um 11:50 Uhr)
  Mit Zitat antworten Zitat
juerg5524

Registriert seit: 23. Nov 2020
Ort: 15 km westlich von Zürich
8 Beiträge
 
#5

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 13:55
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!
Jürg Müller
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#6

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 14:07
Auf der oben verlinkten Seite http://www.karaokeden.com/karaoke gibt es ca. 16500 Stück in unterschiedlichen Sprachen davon ca. 90 deutschsprachig. Englischsprachig sind es ein paar tausend.
  Mit Zitat antworten Zitat
juerg5524

Registriert seit: 23. Nov 2020
Ort: 15 km westlich von Zürich
8 Beiträge
 
#7

AW: erweiterte Demo für BASSMIDI.DLL

  Alt 23. Nov 2020, 14:28
Danke. Es funktioniert mit "archy-breaky-heart". Beim Debuggen stellte sich heraus, dass kein Soundfont gefunden wurde. Mit Soundfont ist alles ok.
Jürg Müller
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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