Autor Beitrag
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Mo 03.10.22 00: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):

nemp_MEYAl56iEj

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. :D (Warum gibt es keine Skins für den Webserver?)
Einloggen, um Attachments anzusehen!
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 03.10.22 08: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? :gruebel: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Mo 03.10.22 16:54 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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? :gruebel:


Genau das Gewünschte - aber anscheinend ist "0/0" nicht immer dasselbe wie "0/0 im nutzbaren Bereich". Vielleicht gibt es da auch einfach einen weiteren Bug in Cairo. Naja, zumindest Nemp hat das Problem ja dann nicht mehr. :)
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 04.12.22 17: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).

export

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.

ausblenden 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 &lt; und &gt; 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 02.01.23 12: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:
ausblenden 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;

// Klasse TNempPlayer:
TNempPlayer = class
   // ...
   procedure DrawPreviewNew(DestWidth: Integer; DestHeight: Integer; destBitmap: TBitmap);
// ...
end;

Was soll dabei schon schief gehen? :lupe: :autsch:

Nun, man muss wohl beim Zeichnen die Größe des Zielbitmaps explizit nochmal setzen, d.h.
ausblenden 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:
ausblenden 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. :lol:

_________________
We are, we were and will not be.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 29.05.23 09: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 02.06.23 09: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". :mrgreen:

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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
GenreIDX := ReadByteFromStream(aStream);
if GenreIDX <= 125 then
  genre := ID3Genres[GenreIDX] // Id3Genres: hard codierte StringList
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:
ausblenden 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. :autsch:

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: FinnO, hydemarie
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 19.01.24 18:02 
So lange nicht hier gewesen, und nichts hat sich geändert. Nicht mal der Doctor :lol: (ups, Spoilers für vor Weihnachten :oops: )

Auch Nemp tut immer noch was es soll, allerdings hab ich tatsächlich mal zwei Anliegen. War ja klar :wink:

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 :wink:

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:
grafik1
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 25.01.24 10:53 
Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. :dunce:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Do 25.01.24 12:19 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. :dunce:

Juhu!

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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.)

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 25.01.24 21:07 
Moin!
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. :dunce:
Gratulation! :mahn: :flehan: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 26.01.24 10: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. :mrgreen:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Fr 26.01.24 10:59 
Selber spezieller Nutzerkreis… :evil: :lol:
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 26.01.24 11: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. :eyes:

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: hydemarie, Narses
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Fr 26.01.24 11: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 26.01.24 11:55 
user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 26.01.24 13:50 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. :dunce:

Na sowas! :flehan: :beer:

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.

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
... <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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 26.01.24 15:58 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Ja, hier ist alles gleich geblieben. Mit dem Unterschied, dass der "Doktor" mittlerweile auch im Ausweis zu finden ist, nicht nur im Profilbild. :dunce:
Hey, Glückwunsch! Hier steht er noch nicht im Ausweis, aber an der Wand hängt er auch :beer:


user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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 :P Wobei das in die Richtung eigentlich gehen müsste?

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
"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.


user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Beispiel-Dateien wären da auf jeden Fall sehr hilfreich - die (oder Links darauf) dann aber lieber per E-Mail austauschen.
Wird gemacht.


user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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 :zustimm:


user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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.


user profile iconSinspin hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 20.03.24 20: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. :zustimm:

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. :D

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: hydemarie
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Do 21.03.24 11:37 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Hab in den letzten Tagen mal wieder sehr den HxD zu schätzen gelernt. :zustimm:


Ich glaube, Audiodecoder zu programmieren würde mir keinen Spaß machen. Genau wegen so was. :D