OrgisNetOrg:
Wir/Start | Thomas | Johannes | Projekte | Impressum | Disclaimer _ Frames
english version

DerMixD - noch ein Musikabspieldämon...

Aktuelle Version: 2.0.1 vom 17.01.2016
arg multithreaded - mischen von mehreren Kanälen auf mehrere Kanäle - Socket-Steuerung - "nuaberechtgapless" - ...

Neues

Eine neue offizielle Version 2.x oder gar 3.x is lange überfällig. Das Projekt wird weltweit genutzt und Verbesserungen landen in der Entwicklerversion. Es gibt Fließkommaarbeit, libmpg123 Eingabe und libout123 ausgabe. Effekte. Kram. Sobald mein Leben es erlaubt, mache ich mal wieder eine Version offiziell.

Version 2.0.1 macht den Bau mit modernerem SoundTouch wieder möglich. Für die Zukunft ist die Nutzung einer flexibleren Ausgabebibliothek geplant. Zudem möchte ich doch mal einen ordentlichen Resampler einbauen (nicht einfach aus einer Bibliothek nehmen, da Kernfunktion des Mischers).

Nach gefühlt mehreren vergangenen Leben seit der letzten offiziellen Version erscheint nun Version 2.0.0 von DerMixD! Schwerstarbeit fand im Inneren statt. The API für Clients wurde sachte überarbeitet. Audioeingabe passiert nun über Bibliotheken (libsndfile, libsndfile, libvorbisfile) und nicht über Konstrukte mit Mehrwegpipes. Es gibt Effekte ... viele Gründe, sich das mal anzusehen. Tatsächlich muss ich selbst wieder dazu kommen, mehr Gebrauch von DerMixD zu machen.

Vergesst version 1.6.1 -- bitte! Verdaut den Ärger mit dem übersehenen sleep(1) - Aufruf vom Debuggen und installiert die 1.6.2 ... mit nun wieder nahtlosen Übergängen.

Version 1.6.1 behebt zwei Fehler: Erstens einen recht ernsten in Form des fehlenden Aufräumens nach einer mpg123 Eingabe-Instanz (z.B. beim Wechsel von einer MPEG Datei zu einer sndfile Datei auf einem Kanal). Das war seit 1.4.0 dabei...
Dann wurde noch der spezielle Fall des 1zu2 Upsampling korrigiert, so dass die Lautstärke stimmt.

Version 1.6.0 bringt lokale Kommunikation über UNIX domain sockets und peer-to-peer Kommunikation zwischen DerMixD-Klienten untereinander. Yup, das isses.

Version 1.5.1 behebt ein fieses Problem mit MPEG-Eingabedaten, die eine andere Kanalzahl aufweisen (also Mono-Dateien mit Stereo Mixer) und vervollständigt "scan length" um die Aktualisierung der Längeninformation für DerMixD selbst (wie "length" auch).

Version 1.5.0 begründet sich in Verbesserungen für ununterbrochene Wiedergabe auch mit Hintergrundarbeit. Es gibt da zwei Komponenten: Der Mixer unterbricht die Arbeit von "scan"-Abläufen während der kritischen Phase des Wartens auf die aktiven Eingaben und des Mischens selbst. Das vermeidet die tödliche Konkurrenz auch um CPU- aber vor allem um I/O-Ressourcen. Komplemetiert wird das durch das neue "preread" Kommando, durch das man eine Datei vor dem Laden in den Dateisystemcache bekommt (unter Linux jedenfalls). Das bedeutet, dass beim eigentlichen Abspielen keine I/O-Wartezeiten auftreten.

Allgemeines

DerMixD ist ein über TCP gesteuerter Musik-Abspieldämon für GNU/Linux bzw. andere UNIX-artige Systeme (nur Linux/x86 getestet).
Inspiration war mixplayd, welcher auch immernoch fast dasselbe tut und auch etwas mehr aber auch weniger. Anlass für eine neue Implementation der Idee waren die Schwierigkeiten, in den mixplayd mpg123 derart einzubinden, dass es wirklich interaktiv vom Dämonen in der Rolle eines Frontends genutzt wird. Ziele waren die Nutzung des mpg123-eigenen Equalizers und auch die Nettigkeit, mpg123 nicht wegen jeder Operation neu starten zu müssen. Dazu kam dann noch der Gedanke, dass eine Client/Server-Architektur mit zudem de facto parallel anfallenden Aufgaben wie dem "gleichzeitigen" Wiedergeben mehrerer Audiokanäle nach Multithreading schreit.

Nachdem die Notwendigkeiten (!) erkannt waren, hieß es also, mal eben C++ und POSIX-Treadprogrammierung zu lernen sowie das doch recht komplexe Problemchen dann auch umzusetzen.

MP3 Eingabe via neuem mpg123 seit Version 0.60 oder mpg123-thor (nur noch historisch relevant) und OSS (/dev/dsp) Ausgabe war der anvisierte und auch zu erst implementierte Betriebmodus - die entstandene Architektur ist da aber von Grund auf flexibel. Vereinzelt werden also noch ein paar Ein-/Ausgabemodule folgen - und sei es nur, um zu demonstrieren, wie gut das doch geht;-)
Seit Version 1.1 sind 2 neue Ausgabemodule dabei: Alsa für Linux und MME für Tru64 (getestet auf Compaq XP1000). Seit Version 1.2 gibt es die Eingabe mit libsndfile, seit 1.3 die mit libvorbisfile.

Wichtig ist mir auch, dass das Geschäft von DerMixD nicht (deutlich) stärker meine kleine Notebook-CPU belasted als mixplayd. Beruhigend ist, das oberflächliche Messungen in der Hinsicht Erfolg signalisieren.

Genug geredet: Hier kommt das Futter. Man beachte: Lizensiert unter GPLv2 (im Quellpaket enthalten)

Download

Das komplette Quellpaket (sig).

Download Entwicklungsversion

    svn co svn://orgis.org/dermixd/trunk dermixd-svn

Für Neuheiten die Datei CHANGES (sowie dazu ChangeLog im Quellarchiv) konsultieren...

Frontends

Neben den mitgelieferten minimalen Skripten wird dermixd von meinem ThOrMA Konglomerat genutzt (wobei ich allerdings immernoch daran arbeite, dort wirklich DerMixD zu benutzen, mit allen Vorteilen, die das gegenüber mixplayd bietet). Dann gibt es die frische Ware names SLART von SvOlli. Darin ist Partyman enthalten, eine recht schlaue Jukebox mit dem Hauptziel, die Musik niemals verstummen zu lassen (braucht QT4).


Valid XHTML 1.0! Valid CSS!
Wozu gibt's denn sonst Standards?

Letzte Modifikation dieser Seite: 27.09.2023