FOLVE - ein FUSE Filesystem mit Convolver

Antworten
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

FOLVE - ein FUSE Filesystem mit Convolver

Beitrag von Unicos »

Hallo zusammen,

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)
Getestet habe ich an meinem Linn G-ADSM1. Ueber diese beiden Server, der Server von Illustrate kommt noch, hatte ich noch keine Zeit zu. Also ich merke keinen Unterschied zum realen Filesystem, es ist super fix beim Zugriff. Ich werde nochmal versuchen es grafisch aufzubereiten, wenn es die Zeit erlaubt.

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
Bild
Fortepianus
Aktiver Hersteller
Beiträge: 3670
Registriert: 17.12.2008, 12:41
Wohnort: Stuttgart

Beitrag von Fortepianus »

Hallo Thomas,

das klingt ja super interessant! Verstehe ich das richtig: Ich müsste nicht meine Sammlung >1TB jedesmal wochenlang falten, wenn ich neue Filter brauche, und das auch noch für jeden Raum, sondern die NAS faltet das gleich beim Abspielen? Das war doch schon lange mein Traum.

Ich hab's aber noch nicht ganz begriffen, wie das dann ablaufen würde. Die Linns brauchen ja einen uPnP-Server. Dem wird dann ein neues Filesystem vorgegaukelt, oder wie muss ich mir das vorstellen? Hat man dann für jeden Filtersatz ein virtuelles Laufwerk, in dem man die gleichen Verzeichnisse und Daten findet wie im realen Laufwerk? Sorry für meine laienhaften Fragen. Bei mir ist es übrigens 20 Jahre her, seit ich das letzte Mal C und C++ programmiert habe :|

Natürlich träume ich jetzt davon, dass Uli die Idee aufgreift, mir dann irgendwann eine Setup.exe schickt und die alles Nötige auf meiner NAS installiert. Danach öffnet sich dann ein Fensterchen, und nach einer netten persönlichen Begrüßung werde ich gefragt, welche neuen Räume (Laufwerke) ich anlegen will und welche Filter und flow-Parameter ich dafür gerne nehmen würde. Meinetwegen nachdem ich direkt im Programm per paypal für die Lizenz geblecht habe. Wär' das nicht was, wenn Uli das für uns Programmier-Dummis zu einem neuen Acourate-Programm machen könnte? Liest Du mit, Uli? Das wäre die Lösung schlechthin, der Königsweg. AcourateDirect oder so.

Vielen Dank, Thomas, dass Du die Arbeit, die in der Sache steckt, hier öffentlich zur Verfügung stellst.

Viele Grüße
Gert
Bild
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

Beitrag von Unicos »

Fortepianus hat geschrieben:Ich hab's aber noch nicht ganz begriffen, wie das dann ablaufen würde. Die Linns brauchen ja einen uPnP-Server. Dem wird dann ein neues Filesystem vorgegaukelt, oder wie muss ich mir das vorstellen? Hat man dann für jeden Filtersatz ein virtuelles Laufwerk, in dem man die gleichen Verzeichnisse und Daten findet wie im realen Laufwerk? Sorry für meine laienhaften Fragen. Bei mir ist es übrigens 20 Jahre her, seit ich das letzte Mal C und C++ programmiert habe :|
Hallo Gert,

kurz ja, ich werde morgen mal versuchen das zu visualisieren.

Btw. man kann auch ganz einfach aus diesem Verzeichnis die Files rauskopieren und hat dann auch physische Files .-). Natuerlich ohne die ganzen Spielereien von Uli, da will ich auch nicht hin, Basis geschaffen, nun bitte uebernehmen. Ist sehr transparent. Und die Zugriffe sind wie schon erwaehnt nicht zu unterscheiden von einem nicht convoltem Filesystem.

Mein Ziel ist es das Ding noch auf dem NAS zu implementieren, um keine unnoetigen Server rumstehen zu haben, die haben in der Regel ja alle Intel CPUs.

Getestet habe ich bis gerade
- Sonos
- Elyric
- Mimmin
- Illustrate
- Winamp als Player
- mplayer,totem, kaffein auf Linux

Gruss

Thomas
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Unicos hat geschrieben:Sourcecode steht zu freien Verfuegung. Also kein kommerzieller Ansatz.
Gert hat geschrieben:Wär' das nicht was, wenn Uli das für uns Programmier-Dummis zu einem neuen Acourate-Programm machen könnte? Liest Du mit, Uli? Das wäre die Lösung schlechthin, der Königsweg. AcourateDirect oder so.
Hi Gert,

laut Thomas steht doch schon alles zur Verfügung. Und das auch kostenfrei.

Wie sollte da ein passendes Modell ausschauen?

Grüsse
Uli
Bild
Rudolf
Webmaster
Beiträge: 4920
Registriert: 25.12.2007, 08:59
Wohnort: Bergisch Gladbach

Beitrag von Rudolf »

Hallo Thomas,

tolles Projekt!

Für mich würde aber erst dann ein Schuh daraus, wenn FOLVE, so wie von dir angepeilt, auch auf NASen läuft:
Unicos hat geschrieben: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.
Ich drücke dir und uns die Daumen! (Verflixt, mein QNAP hat keinen x86)

Viele Grüße
Rudolf
Bild
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

Beitrag von Unicos »

uli.brueggemann hat geschrieben:Hi Gert,

laut Thomas steht doch schon alles zur Verfügung. Und das auch kostenfrei.

Wie sollte da ein passendes Modell ausschauen?
Hallo Uli,

auch wenn es an Gert gerichtet war.
ich dachte da an folgende Dinge:

- Fuse gibt es auch unter Windows (Portierung?)
- Veredelung durch FLOW und Co., FOLVE ist ja wirklich nur die Basis
- vielleicht auch einfach nur ein Denkansatz zur Optimierung

Gruss

Thomas
Bild
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

Beitrag von Unicos »

Rudolf hat geschrieben:Ich drücke dir und uns die Daumen (Verflixt, mein QNAP hat keinen x86)!
Hallo Rudolf,

in der Tat, Dein kleiner NAS hat so ein Marvel Ding.
Naja, wie das so mit freien Dingen ist, wird natuerlich erstmal fuer den eigenen need gebaut und gebastelt. :-)

Gruesse

Thomas
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Unicos hat geschrieben: - Fuse gibt es auch unter Windows (Portierung?)
- Veredelung durch FLOW und Co., FOLVE ist ja wirklich nur die Basis
- vielleicht auch einfach nur ein Denkansatz zur Optimierung
Thomas,

Fuse unter Windows ist mir nicht bekannt. Es gäbe da das Callback File System. Das kostet aber reichlich, ein ROI (return of investment) ist da schwierig. Weiterhin versteh ich das doch so, dass das Fuse bereits auf dem NAS läuft, diese Laufwerke haben doch zumeist ein Linux-Betriebssystem.

FLOW und Co. bedeuten entweder ein Aufdröseln von fconvolver (aufwendig, high sophisticated, Lizenzprobleme) oder ein Hintereinanderhängen von Programmen (also erst Lesen/Dekodieren - Flow - Abspeichern - Lesen - Co... - Abspeichern - Lesen - Convolver - Kodieren/Speichern - Abspielen), was auch umständlich ist.

Meine Erfahrung: nach 5% Inspiration folgen immer 95% Transpiration. Ich hab nun noch den Nachteil, dass ich mich in der Delphi-Welt wohlfühle. C++ ist eher ein rotes Tuch.

Grüsse
Uli
Bild
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

Beitrag von Unicos »

uli.brueggemann hat geschrieben:Fuse unter Windows ist mir nicht bekannt. Es gäbe da das Callback File System. Das kostet aber reichlich, ein ROI (return of investment) ist da schwierig. Weiterhin versteh ich das doch so, dass das Fuse bereits auf dem NAS läuft, diese Laufwerke haben doch zumeist ein Linux-Betriebssystem.

FLOW und Co. bedeuten entweder ein Aufdröseln von fconvolver (aufwendig, high sophisticated, Lizenzprobleme) oder ein Hintereinanderhängen von Programmen (also erst Lesen/Dekodieren - Flow - Abspeichern - Lesen - Co... - Abspeichern - Lesen - Convolver - Kodieren/Speichern - Abspielen), was auch umständlich ist.
Hi,

auf die Schnelle: http://dokan-dev.net/en/about/

Aber du hast schon recht. Die Unix Seite ist einfacher. :-)

Fuse gibt es, aber richtige Version und libraries fuer convolving muess ja auch noch rein.

Frickelnde Gruesse

Thomas
Bild
uli.brueggemann
Aktiver Hersteller
Beiträge: 4658
Registriert: 23.03.2009, 15:58
Wohnort: 33649
Kontaktdaten:

Beitrag von uli.brueggemann »

Thomas,

The Hidden Cost of Dokan

Letzte Version Dokan = Jan. 2011

Uli
Bild
Unicos
Aktiver Hörer
Beiträge: 805
Registriert: 22.06.2008, 20:38
Wohnort: NRW

Beitrag von Unicos »

Dann lassen wir fuse erstmal weg.

Ich will mich mit dem Thema auch nicht auseinander setzen, wenn ich ehrlich bin.

:-)

Gruss

Thomas
Bild
Antworten