als bekennender Online Falter hatte ich Uli mal von einer Idee erzaehlt, wie man anstatt alle Files offline zu falten, und dadurch viel Zeit und Platz zu verbrauchen, diese gefalteten Files einfach ueber ein virtuelles Filesystem FUSE http://fuse.sourceforge.net/ bereitstellt.
Dieses Filesystem hat die Eigenschaft so angepasst werden zu koennen, dass man bei jedem Zugriff eine Aktion ausfuehren kann. In meinem Fall wollte ich FLAC Files lesen, diese durch einen von AcouratePro erstellten Filter mittels fconvolve (liegt jconvolve bei) falten und wieder als FLAC bereitstellen. Schoene Fingeruebung dachte ich mir.
Denkste, zumal, ich festgestellt habe, dass ich programmiertechnisch doch mehr eingerostet bin als ich gedacht hatte (C und C++) zzgl. chronischer Mangel an Zeit und Effizienz... Ich hatte hier schon mit einem alten WG-, Studien-Genossen und Freund Henner ueber das ganze Vorhaben gesprochen. Der meinte nur, “Wenn Du alles zusammen hast, ist das nicht mehr als 2h Stickycode zu programmieren”.
Daran habe ich mich dann erinnert und ihn direkt nochmal unterschwellig bearbeitet, wie gut es doch waere, wenn man diese Art von Convolving nutzen koennte, und bei 2h Aufwand dies alles doch sehr uebersichtlich waere fuer einen Mann vom Fach sozusagen.
Irgendwie habe ich den richtigen Nerv erreicht, und Henner hat sich dann mal eine Woche lang abends nach der Arbeit hingesetzt und das Zeug zusammengehaeckelt. OK, zu meiner Ehrenrettung muss ich natuerlich sagen, dass Henner bei Google arbeitet und da ziemlich systemnah arbeitet, und solche Dinge fuer ihn wirklich nur eine Fingeruebung sind. Alleine welche Probleme er schon von Haus aus vorhergesehen, beruecksichtigt und eleminiert hat, ist schon ein eigener Thread wert. OK, es waren dann doch mehr als 2 Stunden. Mein Teil war dann nur noch infrastruktureller Art.
Rausgekommen ist dann FOLVE (fuse Filesystem to convolve audio files on-the-fly):
https://github.com/hzeller/folve
Sourcecode steht zu freien Verfuegung. Also kein kommerzieller Ansatz. Es ist natuerlich alles immer noch verbesserungswuerdig.
Mein Testaufbau:
- Linux VM(Ubuntu 12.x) die sich via NFS die Daten von einem NAS in diesem Fall Qnap holt.
- Dieser mount wird von FOLVE als Sourcedir genommen.
- FOLVE stellt nun in einem weiteren Verzeichnis virtuell den gleichen Inhalt bereit.
(Hier ist noch nicht wirklich viel passiert. Erst wenn man nun auf dieses Verzeichnis zugreift wird der Convolver mit den oben angesprochenen Eigenschaften, wie zum Beispiel nur den Header lesen, wenn man nur einen Index wie Sonos aufbauen will etc.. - Dieses virtuelle Verzeichnis exportiere ich via Samba um es auch der Windows Welt zur Verfuegung zu stellen.
- Ein WHS Server(auch als VM) mit Rainers Minim uPnP Server oder Elyric (der richtig schlecht ist und gleichzeitig 300 files aufmacht) stellt dann die Daten via uPnP bereit.
Flac (orig) --> wav+Tags+Bilder (online) --> convolve --> Flac(neu)
Wenn man hier nun noch das Wissen von Ulli einfliessen lassen wuerde (FLOW), koennte dies evtl. ein Ersatz fuer die Brutefir Loesung werden. Eben ein etwas anderer Weg, aber nicht minder uninteressant.
Und es wird weiterentwickelt.
Einreihen will ich diese Art von Convolving, derzeit eher in die Frickel Ecke. Nichts fuer Leute ohne ein wenig Unix Wissen, jedoch wesentlich einfacher als die config des Brutfire. Hier moechte ich erstmal Leute wie Klaus (KSTR), Simon, Ulli oder Gert ansprechen.
Ich schaue, ob ich nicht noch ein Paket fuer QNAP(x86) baue, wo man dann direkt auf dem NAS einen Share bereitstellen koennte, den dann auch der Mediaserver selbst auf dem NAS abgreifen koennte.
Es war eine aufregende Woche! Danke Henner! Man muss noch dazu sagen, dass Henner in San Francisco lebt und wir von den Zeitzonen her unterschiedlicher nicht sein koennten.
Gruesse
Thomas