*** rgareus has quit IRC | 00:20 | |
*** falktx has quit IRC | 00:20 | |
*** Yoda-- has quit IRC | 00:20 | |
*** gabrbedd has quit IRC | 00:20 | |
*** wrl has quit IRC | 00:20 | |
*** Yoda-- has joined #lv2 | 00:25 | |
*** wrl has joined #lv2 | 00:25 | |
*** gabrbedd has joined #lv2 | 00:25 | |
*** falktx has joined #lv2 | 00:26 | |
*** ricardocrudo has joined #lv2 | 00:26 | |
*** rgareus has joined #lv2 | 00:26 | |
*** ricardocrudo has quit IRC | 01:22 | |
*** gianMOD has quit IRC | 02:08 | |
*** gianMOD has joined #lv2 | 02:09 | |
*** gianMOD has quit IRC | 02:14 | |
*** NickSB2 has quit IRC | 04:04 | |
*** falktx has quit IRC | 04:54 | |
*** edogawa has joined #lv2 | 06:06 | |
*** grejppi_ has joined #lv2 | 06:32 | |
*** NickSB2 has joined #lv2 | 08:59 | |
*** gianMOD has joined #lv2 | 09:06 | |
*** gianMOD has quit IRC | 09:22 | |
*** gianMOD has joined #lv2 | 09:23 | |
*** gianMOD_ has joined #lv2 | 09:25 | |
*** gianMOD has quit IRC | 09:26 | |
*** gianMOD_ has quit IRC | 09:34 | |
*** gianMOD has joined #lv2 | 09:34 | |
*** ddom has joined #lv2 | 09:35 | |
*** gianMOD has quit IRC | 09:39 | |
*** gianMOD has joined #lv2 | 09:56 | |
*** gianMOD has quit IRC | 10:14 | |
*** gianMOD has joined #lv2 | 10:15 | |
*** gianMOD has quit IRC | 10:19 | |
*** gianMOD has joined #lv2 | 10:54 | |
*** gianMOD has quit IRC | 11:06 | |
*** gianMOD has joined #lv2 | 11:06 | |
*** gianMOD has quit IRC | 11:11 | |
*** rncbc has joined #lv2 | 11:38 | |
*** falktx has joined #lv2 | 12:00 | |
*** ricardocrudo has joined #lv2 | 12:10 | |
*** grejppi_ has quit IRC | 12:16 | |
*** rncbc has quit IRC | 12:18 | |
*** HarryHaaren has joined #lv2 | 12:24 | |
*** gianMOD has joined #lv2 | 12:38 | |
*** rncbc has joined #lv2 | 12:42 | |
*** NickSB2 has quit IRC | 12:53 | |
*** NickSB has quit IRC | 13:11 | |
*** NickSB has joined #lv2 | 13:11 | |
*** rncbc has quit IRC | 13:27 | |
*** bgribble has joined #lv2 | 13:35 | |
*** gianMOD has quit IRC | 14:01 | |
*** gianMOD has joined #lv2 | 14:02 | |
*** gianMOD has quit IRC | 14:07 | |
*** mlpug has joined #lv2 | 14:15 | |
*** gianMOD has joined #lv2 | 14:40 | |
*** gianMOD has quit IRC | 14:43 | |
*** gianMOD has joined #lv2 | 14:43 | |
*** gianMOD has quit IRC | 14:48 | |
*** bgribble has quit IRC | 15:25 | |
*** rncbc has joined #lv2 | 15:33 | |
*** HarryHaaren has quit IRC | 15:44 | |
*** gianMOD has joined #lv2 | 15:45 | |
*** bgribble has joined #lv2 | 15:47 | |
*** gianMOD has quit IRC | 15:51 | |
*** bgribble has quit IRC | 15:57 | |
*** ddom has quit IRC | 16:04 | |
*** gianMOD has joined #lv2 | 16:09 | |
*** gianMOD has quit IRC | 16:21 | |
*** gianMOD has joined #lv2 | 16:22 | |
*** gianMOD has quit IRC | 16:27 | |
*** zth has joined #lv2 | 16:35 | |
*** bgribble has joined #lv2 | 17:09 | |
*** bgribble has quit IRC | 17:18 | |
*** bgribble has joined #lv2 | 17:28 | |
*** NickSB2 has joined #lv2 | 17:31 | |
*** bgribble has quit IRC | 17:39 | |
*** gianMOD has joined #lv2 | 18:22 | |
gianMOD | hey guys! | 18:42 |
---|---|---|
gianMOD | opening up a bit of a discussion here | 18:42 |
gianMOD | we're into a refactor of our software and that means new architecture | 18:42 |
gianMOD | one of the topics discussed today is about the session : LV2 plugins + JACK connections | 18:43 |
gianMOD | today we have json describing our pedalboards | 18:43 |
gianMOD | but lots of future features do not fit this model | 18:44 |
gianMOD | and thus we're moving into a new one | 18:44 |
gianMOD | the options boil down to two: an internal format, following sort of what Ardour does | 18:44 |
gianMOD | and a .lv2 bundle format comprising a package of ttl files plus some asstes (IR files, samples, etc) | 18:45 |
gianMOD | any light here on pros and cons? | 18:45 |
gianMOD | rgareus: would you have any comment on the Ardour way of saving and defining the session? | 18:46 |
rgareus | gianMOD: whatever you do, don't use XML | 18:49 |
gianMOD | :-) | 18:49 |
gianMOD | personally I believe the .lv2 bundle is a good way | 18:49 |
gianMOD | specially taking into account the file attachments | 18:50 |
rgareus | it's the biggest bloat in ardour (both memory wise as well as CPU intense; lots of malloc/free) | 18:50 |
gianMOD | but this model would require some lilv, serd or sord hacking in order to parse the new data | 18:50 |
rgareus | gianMOD: drobilla's recent hacks on reading lv2 ttls into a b-tree is superb | 18:50 |
rgareus | gianMOD: Ardour uses liblilv to manage LV2 plugin presets. they're all self-contained .lv2 folders | 18:51 |
gianMOD | rgareus: the session, in our case, would be a step further | 18:52 |
gianMOD | rgareus: kind of a collection of plugins + the JACK conenctions | 18:52 |
gianMOD | rgareus: and later on would still add more info, like the controller assignmets and locations of files | 18:53 |
rgareus | gianMOD: I don't thing any of the existing session-managers applies to your case. | 18:53 |
rgareus | gianMOD: or does it? | 18:54 |
falktx | so sorta like this? http://kxstudio.sourceforge.net/paste/ZQ64T :P | 18:54 |
gianMOD | rgareus: we did not go in depth into any of the existing ones | 18:55 |
gianMOD | Harry advocated a lot about the NSM but I see there is a lot of "no-no's" regarding it | 18:56 |
bgola | falktx: today MOD saves the "session" or "pedalboard" as a json file, but i believe the thing is if it makes sense to have a state extension for lv2, so hosts can share sessions, by session i mean plugin state (port values, etc) + port connections, as gianMOD wrote | 18:56 |
falktx | a patchbay-like state complete with plugins, connects and settings? | 18:57 |
falktx | that would be awesome | 18:57 |
bgola | falktx: yes | 18:57 |
falktx | that would work for jack, carla, ingen and mod all at once | 18:58 |
falktx | a full modular session format, I like it | 18:58 |
gianMOD | falktx: that's the idea. But also with atatchment files (IRs, samples, loops) | 18:58 |
falktx | aren't those part of the plugin state? | 18:58 |
bgola | falktx: i believe so.. at least it should be | 18:59 |
rgareus | I don't see why the actual underlying format matters. you can express the same in XML or JSON or RDF... | 18:59 |
rgareus | the real question is how you structure the content | 19:00 |
bgola | rgareus: im thinking more about API than format.. like the way you can save plugin states using lilv | 19:00 |
rgareus | bgola: yes | 19:00 |
falktx | a common format that is easier to implement will be a big thing | 19:00 |
rgareus | I'd stay with JSON. parses quickly and requires not much resources | 19:00 |
falktx | we'd be able to save stuff in mod and load it in ingen for example. provided the plugins are able to load | 19:00 |
rgareus | RDF would be even cooler if you like that | 19:00 |
gianMOD | rgareus: you have any cons about the .lv2 bundle? | 19:01 |
bgola | rgareus: the thing about using a bundle/lv2 kind of thing is that you can "attach" files and other things inside the bundle.. using a json file would be a mess in that case | 19:01 |
falktx | gianMOD: it's not very user-friendly (as in to modify stuff manually) | 19:01 |
bgola | i dont know how plugins handle files today when you save a state | 19:01 |
rgareus | falktx: I'll take RDF over XML and JSON any day | 19:02 |
rgareus | but falktx has a point RDF is not everyones. | 19:02 |
rgareus | gianMOD: no, I can't think of any real cons. | 19:02 |
falktx | I can't say the same. for me json > rdf > xml | 19:02 |
rgareus | user's hacking files manually is an edge case anyway | 19:03 |
falktx | yep | 19:03 |
rgareus | and devs need to write RDF for lv2 plugis, so they can't really complain about the MOD following | 19:03 |
rgareus | they can complain about LV2 using RDF in the first place :) | 19:03 |
falktx | this could be done by saving each plugin state as a lv2 preset (different filename for each plugin) | 19:03 |
bgola | specially in this case of save states, user should not deal with the files directly | 19:04 |
bgola | ops, session* | 19:04 |
rgareus | right and then you /only/ need an API to save connections | 19:04 |
rgareus | wihch probably aleady exists in ingen | 19:04 |
bgola | and do you think it makes sense to have something like LilvSession, lilv_session_restore, etc ? | 19:05 |
falktx | will plugins have unique names? | 19:05 |
falktx | that's a limitation in jack currently | 19:05 |
rgareus | bgola: jack-session is flat. one set of connections. | 19:07 |
gianMOD | falktx: the unique name would be the URL | 19:07 |
rgareus | bgola: with ingen's approach you can nest things. | 19:07 |
gianMOD | and then the host would deal with the instances / nodes | 19:07 |
falktx | URL ? | 19:07 |
rgareus | bgola: e.g. a sub-network inside a sub-network . | 19:07 |
* rgareus wishes drobilla were here. he did this all before | 19:10 | |
bgola | rgareus: i believe this lv2 session would work independent on how the connections are really made... if it's jack or ingen's approach | 19:13 |
bgola | TBH i need to check how ingen works | 19:13 |
falktx | FYI I'm all for having this implemented in Carla once we have a base format spec | 19:13 |
falktx | the only issue I see is that carla can load far more plugins than mod and ingen (ladspa, dssi, vst, au plus gig, sf2, sfz files) | 19:14 |
bgola | falktx: i was about to ask you about that :) | 19:14 |
falktx | but that will be up to the user to decide. if exporting to such format users need to use lv2 plugins only | 19:15 |
rgareus | bgola: there's ingen:Graph node in the RDF that just uses lv2:port to specify connections | 19:19 |
rgareus | all documented at http://drobilla.net/ns/ingen# | 19:19 |
rgareus | http://drobilla.net/ns/ingen#Arc to be specific | 19:20 |
falktx | connecting 2 plugin control ports is not possible in jack (or carla, yet) | 19:21 |
falktx | not sure if the mod can do that either | 19:21 |
rgareus | ingen can do | 19:22 |
gianMOD | neither in MOD | 19:22 |
gianMOD | but we have some ideas regarding control ports connections | 19:22 |
gianMOD | any of these existing solutions deal with attachmentes? | 19:26 |
gianMOD | let's say, an Impusle Response used by a convolution reverb | 19:26 |
falktx | depends on the plugins | 19:29 |
falktx | ir.lv2 is pretty bad on this | 19:29 |
falktx | some plugins save state properly via lv2-state-files thing, which the host can use to pack things nicely | 19:30 |
bgola | falktx: that's good | 19:31 |
gianMOD | i guess some of the file handling job is done by the GTK or Qt layer, correct? | 19:32 |
*** zth has quit IRC | 19:33 | |
*** rncbc is now known as rncbc|AFK | 19:34 | |
falktx | it's done by the host | 19:35 |
gianMOD | so the GTK / Qt layer is only responsible for pointing the file location on the file system? | 19:36 |
* falktx doesn't know how to explain it | 19:36 | |
gianMOD | :-) | 19:36 |
bgola | falktx: can you point me to a plugin that handles files in a proper way? | 19:37 |
falktx | eg-sampler | 19:37 |
falktx | samplv1 by rui in the latest update should do it too | 19:37 |
falktx | there's some convolver plugin by drobilla and rgareus too, forgot the name... | 19:37 |
rgareus | convo.lv2 | 19:38 |
falktx | the distrho ports certainly will *not* do this. by limitations of other plugins specs | 19:38 |
falktx | http://lv2plug.in/ns/ext/state/#mapPath | 19:39 |
rgareus | convo.lv2 is a very minimalistic wrapper around fons' zita-convolver; the only complex thing is state save/restore in the backround. | 19:40 |
falktx | rgareus: it uses state mapPath right? | 19:40 |
rgareus | yes | 19:40 |
bgola | falktx: nice, eg-sample source makes it much clearer for me :) | 19:41 |
bgola | thanks | 19:41 |
rgareus | and atom:Path | 19:41 |
falktx | I don't think I have that packaged. I should do that... but still need to write the carla news... | 19:41 |
rgareus | it may be the only plugin around that provides an interface that a host could use to show a file-selection dialog | 19:41 |
falktx | eg-sampler does that too | 19:42 |
rgareus | right | 19:42 |
rgareus | it includes a miniamlisic GTK GUI - just a file-selection dialog in case the plugin-host cannot do that. | 19:42 |
bgola | rgareus: using eg-sampler the plugin-host can't set the sample file without using it's GTK UI, right? | 19:51 |
falktx | it can, by sending a special atom:path message. but that's a different lv2 feature | 19:53 |
falktx | http://lv2plug.in/ns/ext/patch/ | 19:55 |
falktx | more specifically http://lv2plug.in/ns/ext/patch/#Set | 19:56 |
falktx | that's the one eg-sampler uses | 19:56 |
bgola | falktx: thanks, does carla or ingen support this feature? | 19:57 |
falktx | carla, no. don't know about ingen | 19:57 |
falktx | not sure if any host supports this yet | 19:57 |
falktx | rgareus: do you know? | 19:58 |
rgareus | I don't know any host that does support it | 19:59 |
*** mlpug has quit IRC | 20:02 | |
bgola | this may be a stupid question but... do you know why it uses ext/patch instead of an atom port? | 20:12 |
*** gianMOD has quit IRC | 20:12 | |
*** gianMOD has joined #lv2 | 20:12 | |
*** gianMOD has quit IRC | 20:17 | |
*** gianMOD has joined #lv2 | 20:19 | |
falktx | it's an atom port | 20:29 |
falktx | the patch extension just defines the message type so that the host can send to the plugin and understand each other | 20:30 |
*** gianMOD has quit IRC | 20:37 | |
*** gianMOD has joined #lv2 | 20:37 | |
*** gianMOD has quit IRC | 20:42 | |
bgola | falktx: ok i get it, it uses the atom port to receive messages and the patch ext to define | 20:44 |
bgola | thanks | 20:44 |
*** gianMOD has joined #lv2 | 20:52 | |
*** rncbc|AFK has quit IRC | 21:03 | |
* drobilla waves | 21:32 | |
drobilla | gianMOD: IMO bundle directories (or archives) that are as straightforward and human-readable as possible are clearly the way to go | 21:33 |
drobilla | gianMOD: I use ttl and a format that's essentially a subset of an LV2 plugin, and am quite happy with that choice | 21:33 |
drobilla | gianMOD: You may not have a need for it to be just like an LV2 plugin, but that's just an ingen thing. You can use a similar pattern for whatever | 21:35 |
drobilla | falktx, bgola, rgareus: jalv supports setting that filename property on eg-sampler with host-generated UI | 21:35 |
drobilla | Ingen uses the patch vocabulary for 100% of its UI<=>engine communication internally, if that counts | 21:35 |
*** gianMOD has quit IRC | 21:36 | |
*** gianMOD has joined #lv2 | 21:36 | |
drobilla | Re: ingen:Arc, the reason for that being a thing itself, rather than just a property, is I figured sometimes you want to annotate an arc (mix mode, colour, whatever) | 21:37 |
drobilla | Which you couldn't do with e.g. <inputport> :connectedTo <outputport> | 21:37 |
drobilla | gianMOD: The bundle idea really isn't novel. Tons of programs do this, usually hidden in an archive. Libre/OpenOffice, Ableton... | 21:40 |
drobilla | It's clearly vastly more sane than trying to pack a bunch of binary crap into some weird opaque thing | 21:40 |
*** gianMOD has quit IRC | 21:41 | |
rgareus | drobilla: the party's over. (or just started) MOD team called it a day :) | 21:42 |
rgareus | it's be cool if MOD "networks" could be loaded in ingen (and vice versa) | 21:44 |
rgareus | since MOD just describes [audio|midi] connections between LV2 pluins, it should be easy to load those in ingen | 21:45 |
* bgola still here | 21:46 | |
drobilla | rgareus: Well, the vocabulary's there | 21:46 |
rgareus | ingen to mod will depend on the MOD supporting control-port and Atom-port connections (if there are any in the ingen patch) | 21:46 |
bgola | rgareus: we plan to support those as well | 21:47 |
drobilla | I haven't particularly gussied it up with the intent of pitching it as a standard of any sort, but it could be. Only so many ways you can express a patch in ttl, really | 21:48 |
drobilla | The main thing it lacks is a real separation between graph, er, "template" (class?) and instance | 21:48 |
drobilla | Though this is more of an implementation thing than a vocab thing | 21:48 |
bgola | drobilla: jalv assumes every patch:writable is a file path and adds a file chooser controller? | 21:49 |
drobilla | bgola: Doesn't assume, no, but that's the only thing it actually supports. | 21:49 |
drobilla | bgola: Just kind of a proof of concept thing, really, it doesn't robustly support a bunch of controls via that mechanism | 21:49 |
drobilla | chickens 'n eggs and all that | 21:50 |
drobilla | conceptually setting properties is a lovely elegant way to control things, though I'm not sure if it's what we want as a control mechanism for absolutely everything. The messages are a tad verbose, for oen | 21:53 |
*** edogawa has quit IRC | 22:01 | |
*** ricardocrudo has quit IRC | 22:05 | |
*** HarryHaaren has joined #lv2 | 22:18 | |
* drobilla wasted most of the day sitting in a waiting room, stupidly without laptop | 22:20 | |
Anchakor | get a smartphone at least | 22:22 |
drobilla | I forgot it, but in any case, can't do any real work on that anyway | 22:33 |
drobilla | They (oddly) happened to have the local left-wing student rag, but I was trapped in there for hours | 22:36 |
drobilla | +1 for just ignoring any and all medical issues until you die | 22:36 |
rgareus | drobilla: are you cured now? | 22:41 |
drobilla | I have to get an x-ray and ultrasound to confirm alien face-hugger infestation | 22:43 |
rgareus | drobilla: the x-rays should have killed those | 22:45 |
rgareus | aah you /have to/ (not had to) | 22:45 |
*** HarryHaaren has quit IRC | 22:48 | |
Joeboy | drobilla: dying is absolutely verboten for you, I'm afraid. | 23:33 |
*** gianMOD has joined #lv2 | 23:33 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!