DIY Audioplayer

Tinitus
Aktiver Hörer
Beiträge: 1322
Registriert: 10.11.2013, 21:48

Beitrag von Tinitus »

Hallo,

höre zwar gerade mit Volumio, aber die Experimente gehen weiter. Volumio hat ja den Nachteil, dass da ein Server mit WebUI läuft (das Betriebssystem hat über 2GB :shock: ). Das sollte in Linux auch schlanker gehen. Also habe ich angefangen mir auf Arch Linux Basis ein eigenes System zu basteln. Bis jetzt ist es mir gelungen, das USB-Wifi Modul zum Laufen zu bringen und alle Platten zu mounten (USB/eMMC/RAM). Bis jetzt habe ich als Linux Neuling etwas über 10 h daran gearbeitet. das finde ich akzeptabel zu mal ich das Arbeiten mit Terminal und CLI ganz nett finde. Demnächst werde ich den mpd aufsetzen. dazu werde ich mich hier:

http://crunchbang.org/forums/viewtopic.php?id=17386&p=1
http://lacocina.nl/

und beim voyage mpd Skript das auf Uli's Webseite zu finden ist zu inspirieren. Außerdem werde ich mir auch mal die Konfigurationsdatei des mpd bei Volumio anschauen. Dann muss ich noch eine Lösung dafür finden, wie ich die drei verschiedenen Laufwerke in der Musikdatenbank des mpd einbinden kann. Normalerweise erlaubt er nur ein Verzeichnis. Dann muss ich natürlich nach dem Laden von Musik in die RAM disk diese auch noch aktualisieren. Falls dafür jemand Tipps hat, wäre ich dankbar. Außerdem werde ich mich hier:

http://www.runeaudio.com/forum/the-new- ... 2-190.html

inspirieren lassen mal aus zu probieren den mpd auf einem reserviertem Kern laufen zu lassen.

Da ich inzwischen auch etwas Musik hören möchte, ist natürlich auch Volumio im Einsatz. Wenn man ramplay benutzen möchte müssen die beteiligten Geräte anscheinend in der gleichen workgroup angemeldet sein. Da ich nicht weiß, wie das für meinen Rechner, den C1 oder das iphone funktioniert, logge ich mich jetzt per Terminal in den C1 ein und kopiere das Album, welches ich hören möchte per command line ins RAM. Ist bedientechnisch nicht das Gelbe vom Ei. Für Windows gibt es ein Programm, mit dem man das per GUI machen kann, vielleicht finde ich ja noch eine passende App fürs iphone. Jedenfalls kann ich die Festplatte jetzt ausschalten :wink: während ich Musik höre. Die Größe der RAM disk habe ich auf 640 MB erhöht, damit hat der C1 kein Problem funktioniert wunderbar. Demnächst kommt noch der passive Kühler drauf und das Ding ins Gehäuse, dann ist mein Renderer fertig.

Grüße

Uwe

PS: @ Frank (frankl) Du hattest Recht man muss sich mal reinstürzen und anfangen, dann geht es irgendwie voran
Bild
Tinitus
Aktiver Hörer
Beiträge: 1322
Registriert: 10.11.2013, 21:48

Beitrag von Tinitus »

Hallo,

jetzt habe ich Volumio so hin getrimmt, dass auch die eMMc Karte erkannt wird. Leider funktioniert das nicht, wenn man einen neues Verzeichnis angibt, aber was soll es, ich habe die Karte dann unter dem NAS Verzeichnis gemountet. Vielleicht probiere ich es noch mal und bediene Volumio dann über Mopd, vielleicht erkennt das ja das zusätzliche Verzeichnis. Fehlt nur noch die Umsetzung des Ganzen auf Arch Linux Basis unter Wegfall der WebUI.

Gruß

Uwe
Bild
frankl
Aktiver Hörer
Beiträge: 486
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

Hallo Uwe,

schön, dass Du die Linux-Interessierten über Deine Überlegungen und Versuche auf dem Laufenden hältst. Es freut mich, dass Du nach den ersten Versuchen schon gut Musik hören kannst.

Mal sehen, ob ich mal dazu komme, auf meinen RasPi ein Volumio und/oder RuneAudio zu kopieren. Dann könnte ich schauen, ob ich eine Anleitung machen kann, wie in dem Setup meine [url=http://frank_l.bitbucket.org/stereoutils/player.html]hier beschriebenen[/url] Programme oder Skripte eingesetzt werden könnten. Wenn Du Dich remote auf Deinem C1 einloggen kannst (egal welches System), könntest Du die unter obigem Link beschriebenen Versuche schon machen - erstmal ohne Einbindung in mpd.

Viele Grüße,
Frank
Bild
Tinitus
Aktiver Hörer
Beiträge: 1322
Registriert: 10.11.2013, 21:48

Beitrag von Tinitus »

Hallöle,

nachdem es mir unter Volumio nicht gelungen ist einen Kern zu isolieren und ihm den mpd service zuzuordnen (da scheinen meine Veränderungen von anderen Einstellungen in Volumio überstimmt worden zu sein), habe ich versucht RuneAudio auf meinem C1 umzusetzen. In der Theorie müsste das funktionieren, ich bin auch mit Hilfe des RuneAudio Forums recht weit gekommen, aber dann gab es bei nginx und bei samba Unstimmigkeiten in den permissions gab. Ich habe dann mal nachgeschaut, wie die nginx.conf bei mir aussieht und laut github aussehen sollte, da gab es nicht viele Ähnlichkeiten. Für mich als nahezu DAU ein unlösbares Problem. Dann habe ich mal Volumio wieder eingesetzt und die cpu-Auslastung angeschaut. Zu keiner Zeit lag die Gesamtauslastung der cpu über 2,5 % :shock: . Da fragt man sich schon, was ein für mpd service reservierter Kern noch bringen soll.
Im Thread zum neuen Pi 2 im RuneAudio Forum gibt es Links zum herunterladen von einer mpd Version mit Pipe out Option und auch ein brutfir für armv7. Die sollten auch auf meinem C1 unter Arch Linux laufen. Vielleicht versuche ich das mal. Nach dem vergeblichen Versuch mit RuneAudio, genieße ich jetzt erst mal wieder Musik mit meinem Dank Linux minimal ausgelasteten Mini-Rechner. Gruß an die Win-RAM Brigade mit 16 GB Ram in 4 Riegeln. There is life beyond windows.

Allen egal mit was sie hören einen entspannten Musikgenuss

Uwe
Bild
Sire
Aktiver Hörer
Beiträge: 309
Registriert: 02.12.2013, 14:01

Beitrag von Sire »

Hallo Uwe,

die Frage nach der .brutefir_config im anderen Thread wurde ja schon von Frank beantwortet (während ich selber am Schreiben war ;-) ). Hier noch von mir ergänzend:

Auf meinem RPi2 habe ich derzeit Raspbian installiert. Bevor ich mit Franks Programmen experimentierte, habe ich einige erfolgreiche Versuche mit MPD und brutefir durchführen können. Es bedurfte, neben der Installation von brutefir und Editieren der .brutefir_config eines einfachen Eintrags in der /etc/mpd.conf

Code: Alles auswählen

audio_output {
   type      "pipe"
   name      "brutefir pipe"
   command      "brutefir -nodefault /home/pi/.brutefir_config"
   format      "44100:16:2"
}
Vielleicht ist das hilfreich...

Viele Grüße

Klaus

P.S.: Als MPD-Client verwende ich GMPC. Dort findet sich in der Menüleiste der Punkt "Option". Sind mehrere Ausgänge in der mpd.conf Output-Sektion definiert, kann über den genannten Menüpunkt zwischen diesen Ausgängen umgeschaltet werden. Möglicherweeise auch bei anderen Clienten zu finden...
Bild
frankl
Aktiver Hörer
Beiträge: 486
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

Hallo Uwe,

tja, nginx und samba Konfiguration ist schon eine gewisse Herausforderung. Aber gut, dass Du Dich nicht gleich abschrecken lässt, wenn mal etwas nicht so einfach geht.
Tinitus hat geschrieben: Dann habe ich mal Volumio wieder eingesetzt und die cpu-Auslastung angeschaut. Zu keiner Zeit lag die Gesamtauslastung der cpu über 2,5 % :shock: . Da fragt man sich schon, was ein für mpd service reservierter Kern noch bringen soll.
Da ich mpd nicht nutze, kann ich nicht beurteilen, wieviel eine Core-Zuordnung bringt. Ich kann mir aber vorstellen, dass die Sache in der Tat ein bisschen kompliziert ist, weil mpd üblicherweise mit mehreren Threads läuft, und die Festlegung willst Du vermutlich für genau den Thread, der das eigentliche Abspielen macht.
Tinitus hat geschrieben:
Im Thread zum neuen Pi 2 im RuneAudio Forum gibt es Links zum herunterladen von einer mpd Version mit Pipe out Option und auch ein brutfir für armv7. Die sollten auch auf meinem C1 unter Arch Linux laufen. Vielleicht versuche ich das mal. Nach dem vergeblichen Versuch mit RuneAudio, genieße ich jetzt erst mal wieder Musik mit meinem Dank Linux minimal ausgelasteten Mini-Rechner.
Das Selbst-Kompilieren von brutefir ist nicht so kompliziert und in Volumio sollte es sich einfach mit
"apt-get install brutefir" installieren lassen.

Kompilieren von mpd ist komplizierter, weil es viele Abhängigkeiten hat. Unter Volumio sollte sich aber alles, was benötigt wird, mit "apt-get build-dep mpd; apt-get source mpd" installieren lassen. Leider gibt es bei mpd mit Pipe-Output das Problem, dass mpd die Audio-Rohdaten in ein angegebenes Skript piped und das Skript aber nicht weiß, was Samplerate und Sampleformat dieser Rohdaten sind. Ich glaube, ich weiß jetzt, wie man dieses Problem mit einem ziemlich kleinen Patch des Quellcodes und anschließendem Neukompilieren lösen kann. Wenn also hier jemand abenteuerlustig ist und das probieren will, könnte ich einen Tipp geben.
Tinitus hat geschrieben:
Gruß an die Win-RAM Brigade mit 16 GB Ram in 4 Riegeln.
Diesem netten Gruß schließe ich mich gerne an!

Viele Grüße,
Frank
Bild
Sire
Aktiver Hörer
Beiträge: 309
Registriert: 02.12.2013, 14:01

Beitrag von Sire »

Hallo Frank,
Leider gibt es bei mpd mit Pipe-Output das Problem, dass mpd die Audio-Rohdaten in ein angegebenes Skript piped und das Skript aber nicht weiß, was Samplerate und Sampleformat dieser Rohdaten sind. Ich glaube, ich weiß jetzt, wie man dieses Problem mit einem ziemlich kleinen Patch des Quellcodes und anschließendem Neukompilieren lösen kann. Wenn also hier jemand abenteuerlustig ist und das probieren will, könnte ich einen Tipp geben.
Würde das MPD auch zu einem geeigneten Zuspieler für Deine Programme machen? Ansonsten wäre es auch kein Problem, auf meiner Raspbian-Installation einfach mal damit zu experimentieren.

LGruß

Klaus
Bild
frankl
Aktiver Hörer
Beiträge: 486
Registriert: 20.01.2013, 01:43
Wohnort: Aachen

Beitrag von frankl »

Sire hat geschrieben:
Leider gibt es bei mpd mit Pipe-Output das Problem, dass mpd die Audio-Rohdaten in ein angegebenes Skript piped und das Skript aber nicht weiß, was Samplerate und Sampleformat dieser Rohdaten sind. Ich glaube, ich weiß jetzt, wie man dieses Problem mit einem ziemlich kleinen Patch des Quellcodes und anschließendem Neukompilieren lösen kann. Wenn also hier jemand abenteuerlustig ist und das probieren will, könnte ich einen Tipp geben.
Würde das MPD auch zu einem geeigneten Zuspieler für Deine Programme machen? Ansonsten wäre es auch kein Problem, auf meiner Raspbian-Installation einfach mal damit zu experimentieren.
Hallo Klaus und andere mpd-Nutzer,

für mich tut mpd nicht wirklich, was ich mir wünschen würde. Mir gefällt nicht, dass mpd die Daten selbst dekodieren möchte und man mit dem Pipe-Output erst danach eigene Funktionen nutzen kann. In dem Skript, dass der Pipe folgt, kann man natürlich eventuell auch meine Programme nutzen, ich werde demnächst auch ein Beispielskript dafür in meine Beispielsammlung aufnehmen, ähnlich wie es hier ein Nutzer vorgeschlagen hat. Außerdem würde mpd meine Musikverzeichnisse nur unbefriedigend scannen und mir keine schöne Suchfunktion zur Verfügung stellen. Schließlich möchte ich auch beim Abspielen noch Funktionen haben, die mpd nicht vorsieht (z.B. Filter wechseln, RACE Parameter ändern, Polarität ändern, meine eigene Lautstärkeregelung nutzen, sich die Parameter von letzten Mal merken, ...).

Wie ich im letzten Post angemerkt hatte, ist es ein besonderes Ärgerniss, dass mpd einen Rohdaten-Strom in den Pipe Output sendet, und man diesem dann nicht mehr ansehen kann, um welche Samplerate und welches Sampleformat es sich handelt. Ich vermute, dass sich dies aber relativ leicht verbessern ließe, aber dafür müsste man mpd selbst kompilieren können (ist auf rasbian mittels ' apt-get build-dep ...' und 'apt-get source ...' nicht so schwierig) und sich zutrauen den Quellcode etwas zu ändern.

Viele Grüße,
Frank
Bild
Martin
Aktiver Hörer
Beiträge: 116
Registriert: 15.03.2012, 14:23

Beitrag von Martin »

Hallo Klaus,
ich nutze auch mpd im Zusammenspiel mit Franks (frankl) Programmen. Ich verwende zwei kleine PCs zum Abspielen. Auf dem ersten PC (Odroid-U3) läuft mpd, brutefir zur Raumkorrektur/LoCo, sox zum resamplen und Franks Programm bufhrt, um die Daten zum 2. Mini-PC (Aria G25) zu übertragen. Dort werden die Daten mit Franks Programm playhrt an den DAC übergeben.
Das sieht in der mpd.conf dann so aus:

Code: Alles auswählen

audio_output {
	type		"pipe"
	name		"my pipe"
	command		" /usr/local/bin/brutefir -nodefault /root/brutefir/brutefir_config | sox -t raw -r 44100 -c 2 -e signed -b 32 - -t raw -e signed -b 24 - rate -v -I 88200 | chrt -r 99 bufhrt --port 3456 --bytes-per-second=529200 --loops-per-second=1000 --buffer-size=8192 -e 3.0 --verbose" 
	format		"*:32:2"
}
Ich habe zu 99,9% nur Cds, deshalb verwende ich mpd nur mit der Samplerate 44100. Brutefir lasse ich auch mit der Samplerate 44100 laufen, weil damit die Frequenzauflösung im Tieftonbereich am besten ist. Erst danach wird mit sox auf die Samplerate 88200 resampled, weil damit mein DAC besser läuft. Frank sampelt erst hoch und faltet danach mit brutefir, weil es bei ihm besser klingt. Die Möglichkeiten sind fast unbegrenzt. :wink:

Wenn man mpd zum Resampeln verwendet, kann man auch sox dafür konfigurieren anstelle SRC. Einzelheiten sind hier beschrieben:

http://www.musicpd.org/doc/user/resampler_plugins.html

Die Bedienung von mpd erfolgt von einem Android Handy mit der App mpdroid. Dort ist auch eine Suchfunktion integriert.
Zum Umschalten der Raumkorrektur/LoCo-Filter bzw. Invertierung nutze ich eine Terminal-Sitzung, in der der Midnight Commander mc läuft. Das geht auch vom Handy aus mit der App JuiceSSH. Manchmal nehme ich aber auch einen Laptop dafür, dann muss man nicht zwischen den Apps mpdroid und JuiceSSH hin und herswitchen.

Aber wie gesagt, die Möglichkeiten sind fast unbegrenzt und jede hat so seine eigenen Prioritäten.

Viele Grüße
Martin
Bild
Sire
Aktiver Hörer
Beiträge: 309
Registriert: 02.12.2013, 14:01

Beitrag von Sire »

Hallo,

da ist ja einiges an Information zusammengekommen.

@Frank
Mir gefällt nicht, dass mpd die Daten selbst dekodieren möchte und man mit dem Pipe-Output erst danach eigene Funktionen nutzen kann.
Ist jetzt klar. Ich dachte beim Lesen Deines letzten Posts, Du hättest einen Patch geschrieben, der genau dies ändert. Aber da war wohl der Wunsch der Vater des Gedanken...
Insofern ist mpd dann mittlerweile doch eher 2. Wahl für mich. Wenn ich persönlich doch auch einiges an mpd schätze. So funktioniert die Verwaltung meiner Musikbibliothek damit einwandfrei. Das hat zuvor kein anderes Programm so stabil hinbekommen. Auch die Möglichkeit, mpd auf einfache Art und Weise remote zu bedienen, spricht mich an. Im Moment höre ich aber wieder vermehrt Vinyl, so dass für mich nicht so dringend ist. Ansonsten: Konsole...

@Martin
Wenn man mpd zum Resampeln verwendet, kann man auch sox dafür konfigurieren anstelle SRC
Herzlichen Dank für Deine beispielhafte pipe-out-Lösung. Soweit mir bekannt ist, kann man mpd auch ohne Resampling betreiben. (in der mpd.conf diese Zeile eintragen

Code: Alles auswählen

auto_resample "no"
). Deine Beispielkonfiguration sollte doch auch ohne mpd-resampling funktionieren?

Zu dem Thema mpd-resampling habe ich noch diesen Foren-Beitrag gefunden. Eventl. ist das auch von allgemeinem Interesse:
http://www.opensound.com/forum/viewtopic.php?f=3&t=5794

Ich hoffe, das war jetzt nicht zu sehr o.t.

Viele Grüße

Klaus
Bild
Tinitus
Aktiver Hörer
Beiträge: 1322
Registriert: 10.11.2013, 21:48

Beitrag von Tinitus »

Hallo,

nein Klaus, dass war nicht off topic. Ich bin froh das Leben in den Thread kommt. Es geht hier ja darum, wie ich meine Musikdateien zum DAC bekomme, dazu gehört Hard- und Software.
Eine Frage hätte ich zur mpd Pipe out, wenn dort nichts mehr von Bittiefe und Samplerate bekannt ist, wie kann brutfir den richtigen Filter laden (Ich dachte die Filter für verschiedene Auflösungen wären verschieden). Oder muss ich zuerst bei brutfir den richtigen Filter laden und dann mpd starten, damit brutfir ohne es zu wissen?
Außerdem habe ich noch nicht so ganz verstanden, warum in den conf Dateien Bittiefe und Sampleraten angegeben werden (könne/müssen?).
Ich habe Musik in allen möglichen Formaten (bit Sampleraten) gespeichert, erkennt mpd das nicht selbständig? Wenn nein, muss ich die die maximal auftretenden Parameter rein schreiben?
Zur Zeit, gehe ich so vor, dass ich Musik bis 640 MB vor dem Abspielen ins RAM lade und alles was drüber ist auf die eMMC kopiere (alles per SSH).
Gerade ist mir ein Licht aufgegangen, dass ich mpd dann eigentlich gar nicht mehr brauche, da im jeweiligen Speichermedium eh nur das abliegt, was abgespielt werden soll. Ich profitiere dann nur noch vom Client, weil der mir die einzelnen Titel, Tracklänge und so weiter anzeigt. Das muss ich aber nicht unbedingt haben. Dann wäre ein Programm, was einfach nur die Bits an den DAC bringt ja ausreichend, dann wären wir ja wieder bei Franks Programmen. Wie sagen die Angelsachsen: Food for thought

Beste Grüße

Uwe
Bild
Sire
Aktiver Hörer
Beiträge: 309
Registriert: 02.12.2013, 14:01

Beitrag von Sire »

Hallo Uwe,
Tinitus hat geschrieben: Eine Frage hätte ich zur mpd Pipe out, wenn dort nichts mehr von Bittiefe und Samplerate bekannt ist, wie kann brutfir den richtigen Filter laden (Ich dachte die Filter für verschiedene Auflösungen wären verschieden). Oder muss ich zuerst bei brutfir den richtigen Filter laden und dann mpd starten, damit brutfir ohne es zu wissen?
Gemeint war vermutlich, dass mpd mit dem Eingangssignal undurchsichtige Rechenoperationen durchführt und dies dann resamplet. Die Samplerate für den output kann in mpd fest eingestellt werden (zb. 44100:16:2), wenn das so gewünscht ist. Brutefir bzw. die verwendeten Filter müssen dann auf diese Samplerate abgestimmt.

mpd kann aber auch mit der ursprüngliche Rate ausgeben. Dann müsste brutefir entsprechende Filter laden, geht aber erst mal nicht automatisch. Ob das automatisiert werden könnte und wie, kann ich leider nicht sagen, da ich mich auch noch nicht so lange mit dem Thema beschäftige. Hier im Forum gibt es einen Thread, den ich mir mal gebookmarkt hatte, da geht es um Filterwechsel per Fernbedienung:

http://www.aktives-hoeren.de/viewtopic.php?f=28&t=2112

Eventuell gib es noch mehr zu dem Thema hier im Forum, oder es postet noch jemand was , der mehr von dem Thema versteht als ich.

Viele Grüße

Klaus

P.S.: Zum Thema verschiedene brutefir-Konfiguration hat Andree (Buschel) aktuell was in seinem Vorstellungsthread geschrieben: http://www.aktives-hoeren.de/viewtopic. ... 311#p98311
Bild
FoLLgoTT
Aktiver Hörer
Beiträge: 554
Registriert: 20.01.2011, 14:05
Wohnort: Hannover
Kontaktdaten:

Beitrag von FoLLgoTT »

Hallo,
da das Thema hier gut hinpasst: ich habe den Quellcode von MPD so ertweitert, dass es bestimmte Variablen in dem Script-Aufruf für die Pipe ersetzt. Das sind Bittiefe, Samplerate und Anzahl an Kanälen. Damit kann die ganze Signalverarbeitung automatisiert werden. MPD gibt dabei das Format der abzuspielenden Datei aus.

Meine Kette ist aktuell:

1. upmpdcli (UPnP-Renderer für MPD)
2. MPD
3. Script: Konvertierung nach FLOAT_64, Resampling, Aktivweiche mit Brutefir, Lautstärkeregelung mit VOLRACE (über Fernbedienung), Konvertierung nach S32_LE mit Dithering, Ausgabe an 8 Kanäle

Mit foobar2000 kann ich so direkt per UPnP an MPD streamen, ohne dass ich einen MPD-Client benutzen muss. Das Format stellt das Script selbst um. :)

Gruß
Nils
Bild
Tinitus
Aktiver Hörer
Beiträge: 1322
Registriert: 10.11.2013, 21:48

Beitrag von Tinitus »

Hallo Nils,

danke, dass Du dem Thread wieder Leben einhauchst. Ich persönlich höre zufrieden mit RuneAudio. Das Implementieren eines Scripts zur Vereinfachung des Ladens eines Albums in den lokalen Speicher steht aus und das Einbinden von brutefir. Das lohnte sich aber erst, wenn ich auch Messequipment hätte. Ich scheue im Moment die Investition, da mir auch sehr wenig Zeit bleibt, die ich lieber mit Hören als mit Experimentieren verbringe. Ich beneide die echten Linuxer schon etwas. Ich bin auch überzeugt, dass mit Linux mit wenig Aufwand mehr geht als mit Windows. Das hat mir auch schon ein Forumsmitglied bestätigt, der lange Zeit Windowssysteme optimiert hat, bevor er zu seiner Zufriedenheit auf Alleinrechtes mit Linux umgestiegen ist.


Gruß

Uwe
Bild
Daihedz
Aktiver Hörer
Beiträge: 793
Registriert: 25.06.2010, 15:09

Beitrag von Daihedz »

Hallo Nils
FoLLgoTT hat geschrieben:... habe den Quellcode von MPD so erweitert, dass es bestimmte Variablen in dem Script-Aufruf für die Pipe ersetzt. Das sind Bittiefe, Samplerate und Anzahl an Kanälen ...
Das ist eine wirklich sehr, sehr spannende Nachricht!

1. Könntest Du mehr davon preisgeben?
2. Könntest Du ggf. mit den Entwicklern von MDP schauen, ob die Deinen Code einpflegen möchten?

Äusserst angetan'ne Grüsse
Simon
Bild
Antworten