mod-audio/mod-ui

Filemanager: symlinks to files are created in saved pedalboard instead of providing correct path (e.g. as in snapshot.json)

Closed this issue · 4 comments

This can be replicated by placing pedalboards in a fat32 partition (symlinks cannot be created)

in jack log I see:
lilv_symlink(): error: Failed to link /home/root/.pedalboards/prova_fileman1.pedalboard/effect-1/Fender_68-Vibrolux_AT4050.wav => /mnt/data/.lv2plugins/zeroconvo.lv2/ir/cabs/guitar/Fender68VibroluxReverb/Fender_68-Vibrolux_AT4050.wav

however I noticed in the pedalboard dir snapshot.json contains correct "browsepy" path

snapshots.json: "/home/root/user-files/Speaker Cabinets IRs/guitar/Fender68VibroluxReverb/Fender_68-Vibrolux_AT4050.wav"

and infact if I switch between snapshots (or if I load default one) the correct ir file is loaded.

Why do we need to create a symlink (a fake .wav file in the pedalboard dir) instead of using the same path as the snapshot? What I'm missing? My proposal is to use always "browsepy" paths

[NOTE] on my system, /home/root/user-files/Speaker Cabinets IRs is a symlink to /mnt/data/.lv2plugins/zeroconvo.lv2/ir/cabs

This is how state saving works in LV2. The original files stay intact, and they get symlinked in the pedalboard/project folder.
files are "abstract paths" from the plugins POV, which point to the real file behind the scenes.

creating pedalboards on a fat32 filesystem is a bit silly, restricting current workflow to support old things is typically not a good idea.

Thanks, still can't figure out what you means by "original files stay intact". In snapshot.json we have a path that doesn't point to a symlink, it points to the file as served by browsepy, which is intended since mod lv2 extension fileTypes. Still can't get sorry, hopefully you can help me understanding.

It is related to how plugins are supposed to create, save and load files per lv2 spec. see http://lv2plug.in/ns/ext/state#makePath
mod-host/ui are not even the ones creating the symlinks, the lv2 libs are.

Thanks for sharing the infos ;)