Autor |
Beitrag |
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: So 02.10.22 23:58
Ich fände es ja schön, würde NEMP beim allerersten Start in der Mitte und nicht oben links geöffnet werden, sonst kollidiert es mit Toolbars am oberen Bildschirmrand (hier im Beispiel Cairo Shell):
Verschieben und dergleichen ist so natürlich nicht sehr leicht.
Weiter: Ich hätte gern direkt im Wizard eine Möglichkeit, den Windows-Standard-Skin einzustellen. "Dunkle" Modi in Programmen sind nie schön und tun mir immer im Kopf weh. (Warum gibt es keine Skins für den Webserver?)
Einloggen, um Attachments anzusehen!
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 03.10.22 07:34
Das mit der Position kann ich gerne ändern - das würde ich auch nicht als "nicht schön" bezeichnen, sondern eher als Bug. Aber eigentlich sollten solche Toolbars doch auch die Workarea ändern, so dass 0/0 dann unter der Toolbar anfängt, oder? Was passiert denn beim Maximieren eines Fensters? Egal - ich ändere die Default-Position, die aus der Ini ausgelesen wird, auf -1 und starte in dem Fall dann die Berechnung für "MainScreen-Center". Die Property der Form im ObjectInspector kann ich nicht ohne weiteres nutzen, da ich beim Startvorgang das Fenster erstmal in den nicht-sichtbaren Bereich verschiebe. Edit: fixed.
Den Wizard möchte ich so kurz wie möglich gestalten. Den habe ich auch nur für die Eigenschaften erstellt, die ich für sinnvoll halte, und die im Hintergrund Änderungen an den Dateien vornehmen oder Anfragen ins Netz starten. Daher möchte ich da weder den Skin einstellen lassen, noch das Musik-Verzeichnis abfragen, damit die Medienbibliothek direkt beim ersten Start aufgebaut wird.
Zum Webserver: Im Ordner HTML gibt es mehrere Unterordner für die wählbaren "Themes". Dort könnte man einen kopieren und darin das Stylesheet main.css (und ggf. auch jquery-ui.css) modifizieren. D.h. theoretisch gibt es Skins für den Webserver, aber ich liefere nur ein Dark-Theme aus.
An den Webserver muss ich eh noch mal wieder ran. Da gibt es nämlich noch ein viertes Datenmodell mit all den verschiedenen Nachteilen. Wenn man dort z.B. ein Album "Best of" anklickt, dann ist die Chance hoch, dass man darin den Inhalt mehrerer Best-of-Alben findet. Das habe ich aber auf 5.1 verschoben. Dann schau ich mal, ob ich auch ein helles Theme für den Webserver mit ausliefere.
_________________ We are, we were and will not be.
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Mo 03.10.22 15:54
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 04.12.22 16:31
Neue Version mit einigen Bugfixes und einer Erweiterung des Export-Systems.
Hier ein paar Worte zum Export-System (ist auch in der Hilfe erläutert).
Für den Export werden nun variable Exportvorlagen verwendet. Damit ist nun nicht nur ein fest definierter Export nach CSV möglich, sondern auch in andere Textformate. Zur Vorauswahl stehen Exportvorlagen für CSV, HTML (eingeschränkte Auswahl von Eigenschaften) und JSON. Beim erstellen eines neuen Templates wird mit folgender Schablone gestartet, um das Konzept zu erläutern.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| %<META>% %EXTENSION%=txt %ENCODING%=UTF8 %ESCAPE%=< < %ESCAPE%=> > %</META>%
Within %<META>% ... %</META>% the meta data of the template is defined. Use %EXTENSION% to define the default extension of the saved file. With %ENCODING% you can specify the encoding. Possible values are "ansi", "utf8" and "utf16". Use %ESCAPE% to define a list of escape sequences. For example, in html every "<" should be replaced by "<".
Before and after the actual list of files you can use placeholders <TotalCount>, <TotalSeconds> and <TotalBytes> to add a summary of the exported files.
%<FILES>% The lines between %<FILES>% and %</FILES>% are added for every file. Here you can use the placeholders like <artist>, <title> or <album>. %</FILES>%
After the list of files you can add some more text. |
Edit: Hm. Im Code-Bereich wird HTML wie < und > geparsed, daher wird das Template hier etwas falsch angezeigt.
Einloggen, um Attachments anzusehen!
_________________ We are, we were and will not be.
Für diesen Beitrag haben gedankt: hydemarie, icho2099, Sinspin
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 02.01.23 11:40
Neue Version 5.0.2 mit einem Bugfix. Download wie immer im ersten Posting, auf meiner Webseite oder auf GitHub.
Plauderei aus dem Nähkästchen:
In den letzten Tagen habe ich von einem User diverse Bugreports erhalten - es kam dort reproduzierbar zu Exceptions, wenn man sich die Vorschau in der Taskleiste anzeigen lassen wollte. Also dann, wenn man mit der Maus auf das Symbol in der Taskleiste zeigt. Nun, das war ein saublöder Fehler, der aber nur bei bestimmten Monitor-Konfigurationen auftritt. Ob es an 4k liegt, oder an Super-Widescreen, weiß ich nicht.
Quizfrage: Was fällt euch an diesem Code auf:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TNemp_MainForm.NempTaskbarManagerThumbPreviewRequest(Sender: TObject; APreviewHeight, APreviewWidth: Integer; PreviewBitmap: TBitmap); begin NempPlayer.DrawPreviewNew(APreviewHeight, APreviewWidth, PreviewBitmap); end;
TNempPlayer = class procedure DrawPreviewNew(DestWidth: Integer; DestHeight: Integer; destBitmap: TBitmap); end; |
Was soll dabei schon schief gehen?
Nun, man muss wohl beim Zeichnen die Größe des Zielbitmaps explizit nochmal setzen, d.h.
Delphi-Quelltext 1: 2:
| destBitmap.Width := DestWidth; destBitmap.Height := DestHeight; |
Da das bei mir nicht funktioniert hat, habe ich bei der Entwicklung Quick&VeryDirty feste Werte von 200x100 dort eingesetzt. Das lief dann auf meinem System prima durch, und ich habe es dabei belassen. Aber bei einigen Monitoren funktioniert das absolut nicht:
Quelltext 1: 2:
| exception class : EInvalidGraphicOperation exception message : Fehler beim Festlegen des Bitmaps als Miniaturansichtsvorschau. Fehler: -2147024809. |
Dann einmal vernünftig debugged, die Tischkante hat jetzt eine Bissspur mehr, und die Parameter werden richtig verarbeitet.
_________________ We are, we were and will not be.
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 29.05.23 08:17
Neue Version: 5.1
Download-Links zur jeweils aktuellen Version
Details zu Neuerungen im ersten Posting oder in der Online-Hilfe auf https://nemp-help.gausi.de
Hinweise zum Update:
Bei dieser Version ist es sinnvoll/notwendig, dass beim Update einige der alten Dateien gelöscht werden. Der Installer löscht diese Dateien bei der Installation. Bei der portablen Zip-Variante ist das nicht möglich - daher sucht Nemp beim ersten Start der neuen Version nach den nun überflüssigen Dateien und zeigt einen Dialog an, dass diese Dateien gelöscht werden sollten. In diesem Dialog einfach auf "Dateien löschen" klicken und Nemp wird die veralteten Dateien löschen.
Davon betroffen sind eine ganze Reihe von Dateien im HTML-Ordner, die für den Webserver gebraucht werden:
- Die Benennung der einzelnen Templates ist nun etwas konsistenter, die Dateien mit den alten Namen sollten weg.
- Durch Erweiterungen von HTML5 in den letzten Jahren komme ich nun für Slider u.ä. ohne jQuery-GUI aus, d.h. die bisher mitgelieferten jquery-Libraries können weg.
- Grafiken, CSS und JavaScript, die in allen "Themes" verwendet werden können, sind nun in einem gemeinsamen Ordner "Common" und müssen nicht mehr mehrfach ausgeliefert werden
- Durch Anpassungen in den Templates und Änderungen am Server-Code ist das "Party-Theme" mit eingeschränkten Rechten nicht mehr nötig. Nicht erlaubte Buttons/Kontrollelemente werden entweder gar nicht erst im HTML-Code ausgeliefert, oder per CSS auf "hidden" gesetzt - wobei ein manuelles Anzeigen der versteckten Elemente keine Vorteile bringt - der Server verweigert dann ggf. die geklickte Aktion.
- Die separate Webserver-Dokumentation ist in die allgemeine Hilfe integriert. Das bisherige PDF ist veraltet und sollte weg. (Die Übersicht zur Template-Struktur bleibt aber - die wurde aktualisiert.)
_________________ We are, we were and will not be.
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 02.06.23 08:02
Es gibt ja so Fehler, die sind so richtig bescheuert. Und eigentlich müssten sie auch relativ schnell auffallen. Tun sie aber nicht - erst nach Jahren. Und dann natürlich auch kurz nach einem neuen Release. Hier ist so einer:
Nemp 5.1.1 unterstützt nun auch "Heavy Metal".
Problem war, dass ich das Genre in der Medienbibliothek nur als ein Byte speichere, falls es möglich ist (sonst halt als String). Dazu gibt es ja historisch bedingt eine Liste von ID3v1-Tag-Genres, da im ID3v1-Tag das Genre auch nur ein Byte einnimmt. Diese Liste wurde im Laufe der Zeit erweitert, auch in Nemp. Beim Einlesen überprüfe ich natürlich, ob der gelesene Index-Wert gültig ist, d.h. ob der Zugriff auf dieses Listenelement möglich ist.
Das lief bisher so
Delphi-Quelltext 1: 2: 3: 4: 5:
| GenreIDX := ReadByteFromStream(aStream); if GenreIDX <= 125 then genre := ID3Genres[GenreIDX] else genre := ''; |
Die Liste hatte ursprünglich 125 Einträge. Dummerweise habe ich die Liste irgendwann um ein paar weitere Genres erweitert, aber den hardcodierten Wert von 125 nicht angepasst. Richtig ist es natürlich so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| GenreIDX := ReadByteFromStream(aStream); if GenreIDX <= ID3Genres.Count - 1 then genre := ID3Genres[GenreIDX] else genre := ''; |
Und weil "Heavy Metal" den Index 137 hat, wurde dieses Genre bisher in der Medienbibliothek nicht unterstützt. Es wurde aus den Metadaten ausgelesen, und dann auch korrekt gespeichert, aber beim nächsten Laden wurde dieser Wert als ungültig verworfen.
_________________ We are, we were and will not be.
Für diesen Beitrag haben gedankt: FinnO, hydemarie
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 19.01.24 17:02
So lange nicht hier gewesen, und nichts hat sich geändert. Nicht mal der Doctor (ups, Spoilers für vor Weihnachten )
Auch Nemp tut immer noch was es soll, allerdings hab ich tatsächlich mal zwei Anliegen. War ja klar
Die letzten Tage hab ich damit zugebracht eine größere Menge Musik zu archivieren. Alles schön modern als Opus, sauber getaggt... und dann festgestellt, dass Nemp die zwar abspielen aber nicht die Metadaten auslesen kann. Das Tagformat ist Vorbis-Comment wie auch bei Vorbis und Flac, der Container ist Ogg, aber statt drei verschiedenen vorbis-Records gibts OpusHead und OpusTags. Kann man da was machen? Testdaten habe ich jetzt, falls gewünscht
Als zweites hatte ich dann noch eine Idee für die neue Kategorieansicht. Weil ich nun nur mäßig hilfreiche Tags habe (die Sampler-Erkennung ist aber praktisch!) hab ich wieder alles als Verzeichnisse dargestellt. Wenn man die Dateien jetzt. z.B. in C:\Users\Name\Music\... liegen hat, gibt das immer 4 "sinnlose" Ebenen im Baum. Github hat das seit ein paar Jahren, dass leere Unterverzeichnisse in der Navigation zusammengefasst werden, z.B. so:
Die Logik ist also so, dass Verzeichnisse die keine weiteren Dateien sondern nur genau ein Unterverzeichnis enthalten mit diesem zusammengefasst werden. Wäre das was? Spart etwas Platz im Baum.
Einloggen, um Attachments anzusehen!
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 25.01.24 09:53
Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild.
Opus? Das wird wirklich genutzt? Dann muss ich mir das doch mal näher anschauen. Bisher werden davon glaube ich noch nicht einmal die Basis-Daten wie Länge oder Bitrate ausgelesen. Das habe ich in meiner "Audio-Werkzeuge-Bibliothek" für die exotischeren Formate von der alten Audio-Tools-Library übernommen, aber damals gab es Opus wohl noch nicht. Muss ich mir mal anschauen, wie ich das am besten einbaue. Kurze Recherche zeigt, dass die Entwickler da dlls bereitstellen, wofür es auch Delphi-Header gibt, der dann allerdings unter der MPL steht, was inkompatibel zu GPL wäre. Interessant finde ich auch, dass es da wohl einen eigenen Metadaten-Block für Bilder gibt (hoffentlich analog zu FLAC?).
"Selber machen" wäre vermutlich eine realistische Option, zumindest für die Tags. Da kann ich vermutlich viel (fast alles?) aus Ogg/Flac-Teil weiter nutzen. Für die Audio-Metadaten müsste ich dann etwas in die Dokumentation schauen.
Beispiel-Dateien wären da auf jeden Fall sehr hilfreich - die (oder Links darauf) dann aber lieber per E-Mail austauschen.
Zu dem anderen: Das ist so ein Punkt, den ich mir bei der Entwicklung bzw. beim Testen auch schon gedacht habe. Das lässt sich aber vermutlich auch einrichten, klingt ja durchaus sinnvoll. Bei mir fällt das nicht so auf, weil ich meine Musik in "D:\Musik\" habe, und den Windows-Ordner auch darauf umgebogen habe.
Kann aber etwas dauern, denn aktuell bin ich mal wieder in einer "Spielphase". Zwar habe ich über die Feiertage etwas an einer Komponente gearbeitet, die die Fortschritts-Anzeige (inkl. A-B-Wiederholung) sauberer macht, aber dann hat mir Steam "Horizon: Zero Dawn" angeboten, und das Spiel fesselt mich grade so, wie es schon sehr lange kein Spiel mehr geschafft hat ...
_________________ We are, we were and will not be.
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Do 25.01.24 11:19
Gausi hat folgendes geschrieben : | Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. |
Juhu!
Gausi hat folgendes geschrieben : | Opus? Das wird wirklich genutzt? |
Tatsächlich, ja. Derjenige Teil der Musikfreunde, denen MP3 (oder AAC) nicht reicht, neigt manchmal trotzdem dazu, auch verlustbehaftet zu komprimieren, und Opus ist ja quasi der in jeder Hinsicht bessere "Nachfolger" von .ogg. Ich glaube nicht mal, dass das allzu "exotisch" ist.
Hier hast du aktuelle Zahlen dazu.
(Ich nutze derzeit vor allem WavPack, das kann theoretisch auch "lossy" - das ist exotisch.)
Gausi hat folgendes geschrieben : | wofür es auch Delphi-Header gibt, der dann allerdings unter der MPL steht, was inkompatibel zu GPL wäre. |
Es gibt viele gute Gründe, die GPL zu meiden. Dies ist einer davon.
|
|
Narses
Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 25.01.24 20:07
Moin!
Gausi hat folgendes geschrieben : | Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. |
Gratulation!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 26.01.24 09:28
Ok, die Umfrage in dem Forum ist sicherlich nicht repräsentativ, da dort ein sehr spezieller Nutzerkreis zu finden sein dürfte, aber ich bin dennoch überzeugt, dass ich da etwas Arbeit reinstecken sollte.
MP3 dürfte insgesamt weiterhin das am meisten benutzte lossy Format sein, und als verlustfreie Alternative kenne ich praktisch nur flac. Das sind zumindest die Formate, die mir immer wieder über den Weg laufen. Sowohl bei gekauften Alben, als auch auf den Sharehostern, als auch auch bei den Bonus-Soundtracks bei Steam.
Opus scheint eines der Formate zu sein, dass seit einiger von "Nerds" durchaus genutzt und geschätzt wird, und dann muss Nemp das auch können. Wavepack wird witzigerweise von Nemp deutlich besser untersützt. In dem Dateiformat werden aber auch einfach APEv2Tags vor die Audiodaten geknallt - vergleichbar mit den ID3v2Tags bei mp3.
Ich denke mal, spätestens zum 20. Geburtstag von Nemp kommt da was. Also in genau einem Jahr (auch wenn der Player erst 2006 dazukam). Ich hoffe, dass ich bis dahin auch Zeit und Lust finde, das Thema "Skalierung" mal vernünftig anzugehen. Das erfordert aber einen ziemlich massiven Umbau des "Skin-Systems" und vor allem neue Grafiken. Da fehlt mir auch noch etwas das Grundkonzept - ich möchte da z.B. weg von den vielen Einzeldateien für die Button-Grafiken, so dass sich die Anzahl der Grafiken pro Skalierungsstufe deutlich reduziert. Ebenso schwebt mir die Möglichkeit vor, einen (oder ein paar) "Basis-Buttons" definieren zu können, und die Symbole für Play/Pause/Stop/Next etc. sind dann nur Overlay-Icons dazu.
Die ganzen Bilder in \images\ und die, die bisher direkt in der *.dfm in TImages liegen, muss ich auch irgendwie anders organisieren. Aber ich möchte auch nicht direkt die "neuen" VirtualImages und ImageCollections nutzen, weil das die Exe stark aufblähen würde ...
_________________ We are, we were and will not be.
Für diesen Beitrag haben gedankt: hydemarie
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Fr 26.01.24 09:59
Selber spezieller Nutzerkreis…
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 26.01.24 10:21
Nur der Klarheit wegen - das war nicht böse gemeint, ganz im Gegenteil. Nemp hat ja auch einen "speziellen Nutzerkreis", das merke ich auch an den Rückmeldungen per Mail, die ab und zu reinkommen. Die "Normalen" nutzen anscheinend fast nur noch Spotify und Co.
Musik "besitzen", sei es in Form von Vinyl, CD oder als mp3-Download auf der Festplatte, ist mittlerweile ja fast so ein alte-Leute-Ding.
_________________ We are, we were and will not be.
Für diesen Beitrag haben gedankt: hydemarie, Narses
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Fr 26.01.24 10:37
CDs? Kaufe ich gar nicht mehr. Nur noch Vinyl. Streaming hat mehrere erhebliche Nachteile: Man ist beschränkt auf das, was der „Dienst“ im Katalog hat, und wenn er mal zumacht, ist alles weg. Von dem Umstand, dass, wer insbesondere Spotify bezahlt, Milliardäre reicher macht und kleine Künstler schröpft, mal ganz abgesehen.
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 26.01.24 10:55
hydemarie hat folgendes geschrieben : | Von dem Umstand, dass, wer insbesondere Spotify bezahlt, Milliardäre reicher macht und kleine Künstler schröpft, mal ganz abgesehen. |
Da habe ich mittlerweile aber auch von einigen kleineren bis mittelgroßen Bands gehört, dass Streaming durchaus ein wichtiger Faktor bei deren Einnahmen ist. Gut, wirklich kleine Bands kenne ich da nicht, eher so die Kategorie Feuerschwanz, Ad Infinitum, Dark Side of the Moon etc. Aber es sind nicht nur die ganz großen wie Taylor Swift, für die Streaming wohl wichtig ist.
Ich persönlich kaufe in der Regel die CD Version, für Vinyl fehlt mir die Hardware. Als reiner Download nur in Einzelfällen, wenn die CD schwer bis gar nicht zu bekommen ist. Zuletzt war das bei dem letzten Album von The Warning der Fall.
_________________ We are, we were and will not be.
|
|
Sinspin
Beiträge: 1334
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Fr 26.01.24 12:50
Gausi hat folgendes geschrieben : | Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. |
Na sowas!
Auch wenn ich Nemp nicht verwende ... von Streaming halte ich auch nichts. Genausowenig wie von Programmen die nur laufen wenn man Internet hat.
Ich habe früher mal CD gekauft, kullert alles nur noch als OGG rum. Die CD's sind längst zerfallen.
Allerdings ist 99,9% meiner Musik in wirklich exotischen Formaten (mod, it, stm, 669, v2m, ....), was dann zu anderen Playern zwingt.
Gausi hat folgendes geschrieben : | ... <snip> aber dann hat mir Steam "Horizon: Zero Dawn" angeboten, und das Spiel fesselt mich grade so, wie es schon sehr lange kein Spiel mehr geschafft hat ... |
Das Problem kenne ich. Seit Jahren mit dem gleichen Spiel. Ich verfalle immer malwieder "No Man's Sky", mit dem Versuch meine Spielfigur sammt Raumschiff zum maximum aufzurüsten und Units Millardär (bis zum U-Integer Überlauf) zu werden.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 26.01.24 14:58
Gausi hat folgendes geschrieben : | Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. |
Hey, Glückwunsch! Hier steht er noch nicht im Ausweis, aber an der Wand hängt er auch
Gausi hat folgendes geschrieben : | Opus? Das wird wirklich genutzt? |
Unter anderem Youtube/Youtube Music, wenn man nicht MP4 will. Unter 192kbit/s ist es unschlagbar gut, drüber relativ gleichwertig zu AAC. Und hat die ganzen exotischen Kanal-Layouts und Sampleraten, falls man die mal braucht.
Gausi hat folgendes geschrieben : | Dann muss ich mir das doch mal näher anschauen. Bisher werden davon glaube ich noch nicht einmal die Basis-Daten wie Länge oder Bitrate ausgelesen. |
Samplerate ja (wobei die für Playback eh immer 48kHz ist), Bitrate und Länge nein. Erst nach abspielen kommts korrekt von BASS.
Gausi hat folgendes geschrieben : | Interessant finde ich auch, dass es da wohl einen eigenen Metadaten-Block für Bilder gibt (hoffentlich analog zu FLAC?). |
Hm, sowas vermeide ich immer.
Gausi hat folgendes geschrieben : | wofür es auch Delphi-Header gibt, der dann allerdings unter der MPL steht, was inkompatibel zu GPL wäre. |
Wer GPL nutzt, ist selbst schuld Wobei das in die Richtung eigentlich gehen müsste?
Gausi hat folgendes geschrieben : | "Selber machen" wäre vermutlich eine realistische Option, zumindest für die Tags. Da kann ich vermutlich viel (fast alles?) aus Ogg/Flac-Teil weiter nutzen. Für die Audio-Metadaten müsste ich dann etwas in die Dokumentation schauen. |
Jap, zwei Structs mit Kopf dran, der Tag-Comment-String an sich sind identisch zu Vorbis.
Gausi hat folgendes geschrieben : | Beispiel-Dateien wären da auf jeden Fall sehr hilfreich - die (oder Links darauf) dann aber lieber per E-Mail austauschen. |
Wird gemacht.
Gausi hat folgendes geschrieben : | Zu dem anderen: Das ist so ein Punkt, den ich mir bei der Entwicklung bzw. beim Testen auch schon gedacht habe. Das lässt sich aber vermutlich auch einrichten, klingt ja durchaus sinnvoll. Bei mir fällt das nicht so auf, weil ich meine Musik in "D:\Musik\" habe, und den Windows-Ordner auch darauf umgebogen habe. |
Hab ich auch fast überall, aber an einem PC nicht, und da war mir das dann aufgefallen
Gausi hat folgendes geschrieben : | aber dann hat mir Steam "Horizon: Zero Dawn" angeboten, und das Spiel fesselt mich grade so, wie es schon sehr lange kein Spiel mehr geschafft hat ... |
Uuuh ja, das Spiel ist toll.
Sinspin hat folgendes geschrieben : | Allerdings ist 99,9% meiner Musik in wirklich exotischen Formaten (mod, it, stm, 669, v2m, ....), was dann zu anderen Playern zwingt. |
Wobei Tracker über die BASS-Plugins auch in Nemp abspielen, allerdings ist XMPlay oder sowas da doch besser geeignet.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Gausi
Beiträge: 8541
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 20.03.24 19:34
Mal ein kleiner Zwischenbericht zu dem Thema "opus". Dort wird - wie bei Ogg-Vorbis auch - der Ogg-Container genutzt. Dieser besteht aus vielen OggPages, worin dann die eigentlichen Datenpakete ("Packets") enthalten sind. Die Header der OggPages erlauben Streaming, Fehlererkennung etc. Eine OggPage kann maximal 255*255 Byte Daten aufnehmen, wobei die maximale Größe eines einzelnen Packets, das vollständig auf eine Seite passt, genau ein Byte kleiner ist.
Seit ich vor einigen Jahren die Klassen für die Metadaten in Audio-Dateien geschrieben habe, hat sich einiges getan bei den Vorbis-Comments, die bei Ogg und Opus genutzt werden, und dort als ein solches Packet in dem Ogg-Stream auftauchen. Es gibt dabei jetzt eine offizielle Empfehlung für das Einbetten von Covern in diesen Metadatenblock, der eigentlich nur für kleine Text-Infos gedacht war. Damit ist die Einschränkung, die mir damals das Programmieren wesentlich einfacher gemacht hat, nicht mehr haltbar: Ich bin davon ausgegangen, dass der gesamte Metadatenblock auf eine OggPage passt. Damit musste ich mich nicht darum kümmern, dass Daten ggf. über mehrere Seiten hinweg gelesen und geschrieben werden müssen. (Falls das nötig ist, wird bisher mit einem Fehlercode abgebrochen.)
Also muss ich eine Klasse bauen, die das Ogg-Container-Format halbwegs sauber verarbeiten kann und Methoden bereitstellt, die die eigentlichen AudioFile-Klassen für Ogg und Opus dann nutzen können. Also sowas wie myOggContainer.ReadPacket(PacketVorbisComments).
Da bin ich grade dran. Was schon wieder geht (im Falle von ogg, Übertragung auf Opus ist dann ein kleineres Problem - hoffe ich zumindest)
- Lesen und Schreiben von Packets über Seitengrenzen hinweg
- Auslesen der Base64-kodierten Bilddaten (inkl. der zugehörigen definierten Metadaten wie Bildtyp, Mime-Typ, Bildbeschreibung etc.)
- Base64-Kodierung neuer Bilddaten (ist etwas hampelig, weil die Default-Methoden von Delphi Zeilenumbrüche einfügen)
- Schreiben der Metadaten, wenn die neuen Daten nicht größer sind als die vorhandenen ("Replacepacket") und Padding erlaubt ist
- Schreiben der Metadaten, wenn sich dadurch nicht die Anzahl der Seiten ändert, die für die Header benötigt werden
Der Schritt vom vorletzten zum letzten Punkt in der Liste war dabei besonders knifflig. Gestern nach Feierabend ca. 2 Stunden Code geschrieben, der mir dann erstmal die Testfiles komplett zerbröselt hat. War zum Glück kein Konzept-Fehler, sondern nur ein, zwei Kleinigkeiten, die ich vergessen hatte.
Hab in den letzten Tagen mal wieder sehr den HxD zu schätzen gelernt.
Was jetzt noch fehlt ist der Fall, dass vorne eine (oder mehrere) neue Seite eingefügt werden muss. Denn die Seiten sind durchnummeriert, und jede Seite enthält im Header auch eine Checksumme, die den Header (also auch die Seitenzahl) berücksichtigt (allerdings mit genullter Checksumme). D.h. dann muss die gesamte Datei geparsed werden, und häppchenweise muss für jede Seite die Checksumme neu berechnet werden. Und ggf. Spezial-Werte für "AbsolutePosition" in den Seiten-Headern mit Header-Infos beachten. Da muss ich nochmal in die Doku schauen.
Aber zumindest ist der Code nach der Debug-Session grade in einer halbwegs stabilen Fassung, so dass ich ab morgen ohne allzu großes schlechtes Gewissen mich erstmal "Horizon: Forbidden West" widmen kann.
_________________ We are, we were and will not be.
Für diesen Beitrag haben gedankt: hydemarie
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Do 21.03.24 10:37
|
|
|