Thursday, 2016-03-17

falktxrgareus: manual says "This warns if an extern declaration is encountered within a function. "00:00
rgareusfalktx: thanks00:00
rgareusdrobilla: I'll wait another 24h then update https://github.com/drobilla/lv2/pull/7 with falktx' comment.00:03
drobilla-Wsign-conversion is rough00:05
falktxhahah, welcome!00:06
falktxI have a few casts for that00:06
falktxthe warning helps catch a little bad code sometimes. rarely, it's just worth it by a tiny bit00:07
falktx-Weffc++ is "nice" too00:08
falktxbut they need to do a -Weffc++1100:08
drobillaThat one has way too many spurious warnings about things that really aren't problems00:10
* falktx -> sleep00:11
* rgareus too00:18
*** ricardocrudo has quit IRC00:30
*** oofus_lt has joined #lv200:45
oofus_lttrying to build latest LV2 and associated libs and Lilv 0.22 is failing to configure because it can't find Sord >= 0.13.0, but I just installed 0.14.0 and I'm pretty sure that installed correctly.00:45
oofus_ltanybody seen anything similar or maybe have any pointers ?00:46
drobillaWhatever pkg-config says is what configure finds00:48
drobillapkg-config --modversion sord-000:48
oofus_ltah, ok, 0.12.200:50
oofus_ltdrobilla: sorted, thanks00:56
*** oofus_lt has quit IRC01:51
*** artfwo has quit IRC02:38
drobillaHm.  Now that I think about it, I'm not sure sure I like the idea of unloading bundles because one with a newer plugin is later encountered to begin with.02:52
drobillaFollowing the LV2_PATH as given gives the user control over what takes precedence02:52
*** wumpus has quit IRC03:00
*** wumpus has joined #lv203:02
*** edogawa has joined #lv207:06
*** edogawa has quit IRC07:43
*** ventosus has joined #lv207:59
*** sigma6 has joined #lv208:10
*** ricardocrudo has joined #lv209:06
*** falktx|work has joined #lv209:16
*** bgola has quit IRC09:50
rgareusdrobilla: that's not what currently happens either.10:29
rgareusdrobilla: but even if it was like this, that'd be a geeky unix solution.  musicians don't care about LV2_PATH10:33
*** digidog has joined #lv211:26
*** digidog has quit IRC12:05
*** artfwo has joined #lv212:37
*** gabrbedd has quit IRC14:16
*** oofus has joined #lv214:29
*** gabrbedd has joined #lv214:31
*** y-kaelig has joined #lv215:31
*** ssj71 has quit IRC15:52
y-kaeliglong life to LV2 !16:00
drobillargareus: Well, the idea of unloading entire bundles because one plugin version is different is messy at best, but I guess it's the best available option.16:07
drobillaAt least until the nasty issues crop up, anyway :)16:07
rgareusdrobilla: what's bad about unloading?16:07
drobillaAs the person who has probably dealt with all the associated hell more than any other, funny question16:09
drobillaBut, nothing, inherently.  In practice it's messy and problematic, particularly since the structure of bundles and what's in them is inconsistent, and can even change fundamentally between versions16:09
drobillai.e. I wouldn't be surprised if this has nasty consequences16:09
drobillaBut whatever.  I wrote a version that doesn't do redundant reloads into a subworld, commit soon.16:10
drobillaWell, it does redundant loads of the new/provisional one, but not the already loaded stuff which is in the world model anyway16:10
drobillaStill not a huge fan.  Tempted to just amend the spec to require versions in the manifest.  Few people actually use the things yet anyway.16:12
rgareusdrobilla: the spec says "version is required"  yet only very few plugins add one16:13
rgareusthings have gotten better since falktx took up the role of LV2 high inquistor16:14
falktx|workplugins without version won't come to mod16:14
rgareusIf I had a penny for every "duplicate plugin" message I read in in backtraces..16:15
drobillaYour patch makes it even more verbose ;)16:18
rgareusdoes it? damn debug messages.16:23
rgareusdrobilla: actually no. I changed it from LILV_ERROR to LILV_WARN16:24
drobilla... that prints, too.  But there are two new ones in the version stuff.  The duplicate one doesn't fire anymore.16:26
drobillaNot sure if there's a case where it still can.16:26
*** rncbc has joined #lv217:37
*** deva has joined #lv217:54
*** ssj71 has joined #lv218:56
y-kaeligI was thinking about which GUI toolkit should be used for LV2. I'm askign this question because I fell on a thread from a dev working on LV2, and stop using GTK2 in the next release of his plugin19:02
y-kaeligHe don't tell why, but that make me thinking if gtk or Qt also are really the best choice for this purpose19:03
ssj71y-kaelig: in general neither I think if you want it to be cross platform. GTK can be ok if you are using the C version IIUC (not gtkmm)19:05
y-kaeligQt is also cross platform, but it is the only point to consider ?19:10
ssj71while it is cross platform, plugins have specific considerations that make QT of limited use on other platforms19:11
ssj71Qt is good for linux plugins, but on Windows you can't run  two QT things in the same process (IIUC) so you could theoretically only load ONE qt plugin19:12
ssj71unless the host uses QT19:12
y-kaeligdepency could be another one. I think none of dev want ot maintain a software like this with this problem19:12
y-kaeligto*19:12
ssj71well, qt, gtkmm etc are perfectly good for standalone apps, its just plugins that they pose problems for19:13
y-kaeligyes, I'm talking only for LV2 plugins19:14
ssj71right. did you see this thread from the mailing list? http://lists.lv2plug.in/pipermail/devel-lv2plug.in/2016-March/001593.html19:14
y-kaeligssj71, no, thx look interesting19:16
ssj71oh yes, thats the problem with gtk, 2&3 are incompatable19:16
ssj71so you couldn't load a gtk2 plugin AND a gtk319:17
rgareusneither gtk2 nor gtk3 are relocatable. You can pretty much only use gtk if you rely on a Linux distro provided lib19:37
rgareusQT has similar issues (modules are dynamically loaded by libqt, and can't be packaged with the plugin to form a self contained bundle)19:38
rgareusbut it gets worse.  if there are multiple gtk2 plugins in a host, all those gtk versions must be binary compatible..19:39
rgareusgtk (also gtk3) has some static initialization functions, on Linux we can work around this (-Wl-nounload)  That's not possible on OSX and Windows19:40
y-kaeligWell, there are some interesting things in this thread, but I don't understand one thing. If we are able to use gtk or Qt toolkit for LV2 , what's the problem to dev from scratch one specially dedicated for this purpose.19:41
rgareusI don't know about the BSD linker, but I expect it's like Darwin (OSX)19:41
rgareusy-kaelig: the problem is time.19:41
rgareusand getting the community to agree on one19:42
rgareusthere are 8 or 9 toolkits specifically for LV2 plugins. everyone rolls his/her own.19:42
rgareuswhich is also what the VST world does19:42
y-kaeligno I'm sorry but the time is not important. One day or other, the benefict of this new tookkit will be thx by devs in the futur.19:43
rgareuss/time/man-months/19:44
rgareussomeone needs to spend his/her time on writing one.19:44
drobillay-kaelig: The farthest we've come in that respect is pugl, which is a minimal portable lib for getting a window and events.19:45
drobilla(lol @ time is not important)19:45
y-kaeligas LV2 was, and I have to say that look like a success for the most of devs , because I can see more and more LV2 plugins19:46
drobillaavtk, some other things, build toolkits on top of that19:46
y-kaeligdrobilla, I don't know, pugl ? try to find some info. A link ?19:50
rgareushttps://drobilla.net/software/pugl/19:52
y-kaeligthx19:53
rgareusdrobilla: re unloading. ^^  the only issue I see would be the underying tree implementation. rebalancing is no fun.  but I don't share your reservation against unloading bundles19:55
drobillaThe tree is the least of my concerns, that is extremely well-tested20:03
drobillaMore likely stuff like resources which have Lilv* representations disappearing.  UIs, say.  But if the bundles are mostly of the same form, it might be alright.  ish.20:03
y-kaeliginteresting but I have a question. Suppose I want to build a external controler for this plugins, and use midi event to control it. Is this will be possible ? none of us want to us mouse or keyboard for a live.20:05
y-kaeliguse*20:05
drobillay-kaelig: Depends on exactly what you mean by that (some forms of MIDI control inherently depend on how the host works, for example), but LV2 plugins of course support MIDI20:06
ssj71y-kaelig: if you are the one writing the plugin then yes you can give it a midi port and use it however you like. If its an existing plugin you need a host that will allow you to map midi to the controls you want20:07
drobillaSome sort of grand control unification would certainly be nice, but when/whether we get around to that is anyone's guess...20:08
*** deva has quit IRC20:33
* drobilla submits paper20:43
drobilla++freedom;20:43
ssj71for class or to a journal?20:50
drobillaconference.20:51
drobillargareus: Pushed a reworked implementation of the version stuff.  Seems to work fine for my simple test case.20:52
rgareusw00t20:52
rgareusdrobilla: thanks.20:53
drobillaMaybe not worth optimizing, but splitting the querying from the loading made factoring it out to use the existing data easy anyway (once it used just basic sord stuff).20:53
*** ventosus has left #lv221:47
*** falktx|work has quit IRC21:49
*** ricardocrudo has quit IRC21:50
*** digidog has joined #lv221:52
*** oofus_lt has joined #lv222:21
*** oofus_lt has quit IRC22:25
*** oofus_lt has joined #lv222:25
rgareusOK, mixer-strip inline-displays are now lua processors in Ardour. Bye bye LV222:33
rgareusand the nice part of it all, I don't need mono/stereo variants anymore.22:34
rgareusI'll check back once the community agreed on how to best implement them with LV2:UI and w/o instance access and there's a prototype.22:36
falktxrgareus: this community will never 100% agree on one subject..22:39
*** oofus_lt_ has joined #lv222:39
*** oofus_lt has quit IRC22:40
rgareuswell, I made two revisions of the spec,  and working prototype  host + plugins.  now it's up to the maintainer to merge the pull request or not..22:41
falktxyou mean drobilla? I understand his position of not wanting in the official spec22:42
rgareusgiven the current feedback on the lv-dev list, I don't think I can move this further22:42
falktxrgareus: I think it's fine as it is, and staying a ardour namespace extension22:42
drobillaI thought I was pretty clear about that yesterday.22:43
rgareusit's currently a harrisonconsole.com URI  but it should really be an ardour.org one22:43
*** ricardocrudo has joined #lv222:44
ssj71rgareus: I never commented on your last message, but both points you made were good ones. Alberts point of giving something for outsider plugin devs to admire is worth something as well22:44
rgareusI'm 50/50 if to keep it for official releases.  currently all those non-standard extensions require a #define22:44
rgareusif someone else takes this further, It'd be cool.22:44
drobillaIgnoring my objection to the fundamental way the thing works, the biggest power problem is it only supports a single "view" per plugin, which seems pretty short-sighted.22:44
drobillaToo many problems, most of which I mentioned yesterday.  I'd merge an ARGB32 "UI" extension, but not this.22:46
ssj71rgareus: out of defining a way to do it through UI vs trying to define a few interfaces to give the host the necessary info to make the plot, which would you prefer?22:46
rgareusdrobilla: mmh multiple views might have some merit22:47
falktxclick to change views!22:47
ssj71or an atom message to say next view or something22:48
rgareus render_argb32 (uint32 view_id, ...);22:48
rgareuswhere view_id is a mapped atom  (views are defined in the ttl)22:48
drobilla... and I'd be happy to help work on / refine that, and do whatever implementation work for selecting and whatnot is required.22:49
drobillaGenerally not a fan of sinking my time into things I think are the wrong solution, though.22:49
rgareusssj71: the issue there is that it puts a lot of work on the host side and is eventually not very flexible.22:50
drobilla"work" that's already implemented...22:50
rgareusssj71: I do like the inline scope for example.22:50
drobilla(and it's more flexible if anything)22:51
rgareusssj71: so giving a plain canvas to the plugin seems straight forward.22:51
ssj71rgareus: its less straightforward but an audio waveform could be a legitimate inline_display_data function though22:52
ssj71idd_waveform(float*, uint32_t npoints, double rate)22:53
rgareusone thing to fear with a ARGB canvas - as PipeManMusic put it:  If these where comercial LV2s the first thing they'd do is figure a way to cram their logo in there.22:53
drobillaWith my host author hat on, the main reason I hate this is all the work it burdens me with that I shouldn't have to do at all.22:53
ssj71rgareus: but that is exactly the motivation that will increase adoption, especially with multiple views22:54
rgareus:)22:54
ssj71rgareus: and that could be stemmed with an easy "hide inline" context menu item22:55
rgareusssj71: I do like the idea of dedicated messages and let the host plot it.   but I don't think it'll fly.22:55
drobillaWhich is an option (and only an option) you already have that's already implemented if it's a bloody UI :P22:55
rgareuswe'd have to get at least rncbc (qtractor), faltx (Carla) and drobilla (jalv) on board to implement all specified drawing functions...22:56
rgareusjust showing a ARGB image in the host is trivial22:56
ssj71yes22:57
rgareusssj71: Ardour has a global preference (show inlines by default) and a per plugin override in the context menu.22:57
rgareusthe latter place could also allow to change views22:57
ssj71so maybe ui:inline; ui:argb32 is the way to go22:57
ssj71rgareus: or just click on inline to change view22:58
rgareusthe number of possible views could be defined in the .ttl (along with a title)22:58
rgareusssj71: right. or double-click... but that'll be a detail.22:58
ssj71ya22:59
rgareushaving written 3 inline displays..  if there was no insance access it would significantly compliate things.  passing EQ curves through Atom messages is no fun.23:00
rgareusPeak displays likewise need special attention (needs a handshake to not miss peaks)23:00
rgareusand scope. well it's not hard to pass raw audio data to the GUI,  but it'll arrive with significant latency23:01
rgareus(ringbuffer to host, ringbuffer to UI) usually 3 frames. that's noticable.  (which is why meters.lv2 goniometer uses instance access)23:01
rgareus3 video-frames  ~ 75-100ms.23:02
rgareusif this extension is going to be w/o instance access, I highly recommend to prototype it first and check usability.23:03
drobillaThis UI slippery slope thing is getting pretty irritating, to be honest.23:04
drobillaIf it doesn't make sense to do it that way, then don't do it that way.  It certainly makes sense for others.23:05
drobilla"extension is going to be w/o instance access" doesn't really make any sense.  instance-access is a thing a UI has available (if it's available).  It can use it, or not.23:05
rgareusif you make it a fully fledged new ui spec, then yes23:06
drobillameaning?23:06
rgareushttps://github.com/drobilla/lv2/pull/8 is currently not a UI23:07
rgareusand instance access is baked into that extenstion23:07
drobillaWell, yes.  I figured you were talking about hypothetically doing it as a UI.  I doubt anyone is going to prototype a non-UI version that mandates comm in some new way23:07
drobillaThat's doubling up on the insanity23:07
rgareus:)23:08
rgareuswhat I really like about the current extension: it'd dead simple on both host and plugin side.23:09
drobillaIt's dramatically more complicated, to me.23:10
rgareushow so?23:10
drobillaBunch of weird plugin side stuff and image transport and threading issues and sync and blah blah I have to implement.23:10
rgareusgtk/gtkmm?23:10
drobillaParticularly egregious for Ingen, but even in Jalv the bloat would be offensive23:10
drobillaI see it as literally a bunch of new weird shit to implement that does things that are already there and I have already implemented.23:11
drobillaTo achieve a goal I don't need to re-implement them to achieve.23:11
drobillaAside from the ARGB bit, obviously.23:12
rgareuson_expose_event() {  Cairo::RefPtr<Cairo::Context> ctx = get_window()->create_cairo_context(); /* 3,4 more LOC */ }   done23:12
rgareusthe size allocation is the most trick part. that's one thing i'd probably change23:12
drobilla3,4 more LOC that might require executing code in a plugin binary running in China, sure23:13
drobillaor, at least, less hyperbolically, on an object owned by a thread at least a ringbuffer away (and back)23:13
rgareustrue23:13
rgareuswell, no RB, just a pointer to the extension23:14
drobillaSure, it's not rocket science in most realistic cases.23:14
drobillaBut still, bunch of new work I have to do that I could not have to do.  Which isn't a great sell.23:15
rgareusdrobilla: and making it an additional UI would be less work?23:16
drobillargareus: Yes.  I've already done all the work required to have plugins talk to UIs that do whatever23:16
drobillargareus: An ARGB UI would just mean implementing the ARGB part, which I'd have to do regardless23:17
rgareusdrobilla: can one select which UI to display in jalv and ingen?23:17
rgareusor have two (in ingen)23:18
drobillaAll that other stuff I don't have to do, and inline UIs would have the ability to be lighter weight, network transparent, and so on, where appropriate23:18
ssj71rgareus: any reason to prevent an inline x11 or gtk ui?23:18
drobillargareus: Not at the moment, no.23:18
drobilla(but they can't choose to show a view either, obviously)23:18
rgareusssj71: x11 is horrible for this (passing all kinds of events forth and back, and translating them.  besides there's no clear standard on size-limits and aspect)23:19
*** falktx has quit IRC23:19
drobillaThe amount of "selectey stuff" work seems pretty much the same in either case23:19
rgareusssj71: gtk would be easy in Ardour, but no so much in other hosts23:19
rgareusX11 color maps are no fun.23:19
drobillaor you could just not, and explicitly get an inline UI and display it somewhere special and ignore it otherwise23:19
ssj71rgareus: but qt would be easy in qtractor and carla (I assume) my only point is that were inline just a property it opens up some additional options for plugin devs23:20
drobillawhich if it was an ARGB32 one you'd get away with currently anyway, since it wouldn't conflict with the main (wrappable) one and just be ignored23:20
ssj71hosts would know what they do and don't support. perhaps that only will create discontent among users though IDK23:21
*** falktx has joined #lv223:21
drobillaI see "inline" as basically just metadata, orthogonal to type at least in theory.23:22
*** rncbc has quit IRC23:22
drobillaSeems like literally just one subclass (ui:InlineUI or ui:SmallViewUI or whatever) would do it23:22
rgareusssj71: if it's going to be display only (no events), then pretty much all window-system (cocoa, x11, HWND, wayland) stuff is overkill.23:22
rgareusand once cairo/ARGB32 is in the C++ spec.  drawing is going to be easy-peasy.23:23
ssj71rgareus: I suppose the more important thing to me is that there may be people who want to make an ARGB32 ui thats NOT inline23:26
ssj71so making inline and ui type orthogonal has advantage23:27
*** falktx has quit IRC23:35
*** falktx has joined #lv223:36

Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!