Thursday, 2014-02-06

*** NickSB2 has joined #lv201:10
*** awilliams has quit IRC06:24
*** ssj72 has quit IRC07:07
*** ssj72 has joined #lv207:20
*** bazz has joined #lv207:37
*** abique has joined #lv207:37
*** falktx has joined #lv207:40
*** timbyr has quit IRC08:55
*** timbyr has joined #lv208:56
*** timbyr has quit IRC09:39
*** timbyr has joined #lv209:41
*** timbyr has quit IRC09:56
*** timbyr has joined #lv209:58
*** Anchakor_ has quit IRC10:22
*** magnetophon has quit IRC10:23
*** timbyr has quit IRC10:49
*** timbyr has joined #lv210:50
*** falktx has quit IRC10:57
*** falktx has joined #lv211:06
*** timbyr has quit IRC11:30
*** timbyr has joined #lv211:32
*** Anchakor_ has joined #lv211:39
*** timbyr has quit IRC12:37
*** timbyr has joined #lv212:39
*** magnetophon has joined #lv212:50
*** falktx has quit IRC12:58
*** timbyr has quit IRC13:13
*** timbyr has joined #lv213:15
*** mlpug has joined #lv213:31
*** NickSB2 has quit IRC13:43
*** falktx has joined #lv215:18
*** mlpug has quit IRC15:46
*** wrl has quit IRC16:51
*** drobilla has joined #lv217:07
*** abique has quit IRC17:19
*** HarryHaaren has joined #lv217:24
falktxthere should be a way to ask the host about a right-click menu17:26
drobilla"ask about" how?17:38
falktxa callback I guess17:39
drobillaI mean, what information are you expecting?17:39
falktxto show automation info for example17:39
falktxUI knob right click -> automate this param... (shows some dialog)17:40
drobillai.e. you want the plugin to be able to tell the host "pop up a right-click menu here?"17:40
falktxyes17:40
falktxbut the UI needs to inform the host what param is selected/under17:40
drobillaI suppose the touch interface could have been a bit more expressive and cover this as well17:41
drobillaOh well17:41
falktxdrobilla: do you see the usecase?17:42
drobillayes17:42
falktxok, I'm not working on this now, but saying the idea17:43
drobillakinda smells enough like talking actual events between UI and host it kind of begs the question...17:44
falktxdrobilla: can the lv2 wiki have a "future ideas" page?17:44
drobillaMaybe just because someone else is trying to convince me that a full event API between them and making the host implement all that + RGB surface is what should happen17:44
drobillaIs there not already one of those?17:45
falktxdrobilla: in a similar topic. I want small UIs for embed canvas so bad...17:45
drobillafalktx: Feel free to create whatever pages you like17:45
falktxdrobilla: like you do with ingen embed UI right now17:45
drobillaI need to clean it up and make the wiki more inviting, more use of it would be good17:45
falktxdrobilla: if there was a event-based + rgba thing in lv2, we could draw those directly on the canvas :)17:46
drobillafalktx: I'm almost half considering whether I want to even do that anymore, but the possibility is certainly nice in any case17:46
falktxinstead of relying on embed, gets a bit messy sometimes17:46
drobillaYeah, it's a nice idea (if you ignore GL), but events is the real problem17:47
drobillaActual RGBA or cairo surface, I don't know.  The latter is more powerful and probably can skip some copying overhead in most cases, but less portable.17:47
drobillaBut still, making hosts implement a full on event interface strikes me as an unbelievably terrible idea17:48
falktxsay it's optional ?17:48
drobillaNot much condolence there, really.17:48
falktxmaybe provide already working code for gtk2 or something17:48
falktxie, build the rgba thing and you get an gtk2 UI for free17:49
drobillaAdding graceful degradation to external for any UI, and fixing the "bunch of different definitions for the same UI" problem strikes me as a much more pragmatic approach17:49
drobillafalktx: An absolutely massive amount of platform specific code that hosts have to implement is the problem, not UI side.  Even if there's a drop in, I don't know...17:50
drobillaA bunch of API is a bunch of API is a future compatibility headache.17:50
drobillaPlus I don't know about the feasibility of various toolkits to draw to an RGB buffer.17:53
drobillaand lots of people want to use GL anyway which definitely doesn't (reasonably).17:53
falktxI understand the API problem17:53
drobillaSo as much as I would like to completely destroy non-portable anything in the host:UI interface it just doesn't seem like a good plan :/17:53
falktxcan we perhaps have string mapping to functions?17:53
falktxfunc_type get_functions("THIS_FUNC_NAME") ?17:54
drobilla(this also makes me think of another thing, whether pugl really should do the glut thing, or use structs which are way more extensible)17:54
falktxdrobilla: if we map strings to functions, the API can be extensible17:55
drobillaWell, if you really want to hit the LV2 crack pipe you can take that one step further and describe events as atom objects :)17:55
falktxnice17:55
drobillafalktx: This was my idea for doing external UI17:55
drobillaa varargs command thing instead of show() hide() and run() or whatever it was17:56
HarryHaarensaw that on the lv2-list, seemed a good idea to me17:56
drobillaNot type safe, but whatever17:56
drobillaThough just sticking a size as the first field as discussed earlier would let it be extensible but still just have normal functions17:57
drobillaIiiiiiiiiiiiiiii dunno17:57
drobillaThinking maybe the best plan is to make a really simple exampe plugin with a pugl UI, make it work for all platforms (including both wayland and X11), and just hammer on that until it's Nice™17:58
* falktx appreciates lv2 more and more after trying to make sense of the vst3 spec18:00
HarryHaaren+1 for simple plugin18:01
falktxhaving to subclass a bunch of classes just to make a bypass plugin is the wrong way to do it!18:01
drobillaYeah, honestly, LV2 takes quite a bit of flak for compatibility given what VST did there18:03
drobillaThough event/atom was indeed a total screw-up, so fair enough.18:03
falktxI say just give it time18:04
falktxlv2 takes a lot of time to get into, with time we'll see new plugins18:04
drobillaYeah.  Things are going alright, really.18:04
falktxdrobilla: I'm also working on a plugin framework like juce that works with UIs properly (no instance-data)18:05
drobillaPushing event into the dustbin and sorting out this UI junk will be good.18:05
falktxI was going to present it at lac, but that paper was too much work...18:05
drobillafalktx: Using JUCE as just UI with having proper comm would be nice18:05
drobillaYeah, I spent waaaaayy too much time on my paper18:06
falktxdrobilla: jules doesn't use linux, and juce itself is not that good in linux18:06
falktxI manage the ports but for my own plugins I won't use it18:07
drobillafalktx: fair enough18:07
drobillaI don't like the flavour of the thing, but it's pretty, and can do portable UIs, at least18:07
drobilla(Frankly the self-praise about stellar code quality all over its site is pretty divorced from the reality I've seen...)18:08
falktxjuce own code is pretty good, can't say the same about open plugins for juce though18:09
falktxthere are a few odd choices in the framework. like base64 not actually being as the RFC18:10
drobillaThere's way too many things that are "base64"18:11
falktxfor lv2 presets I needed the "common" base6418:12
falktxno juce classes provided that18:13
drobillaYeah.  IIRC xsd:base64binary is as per original RFC but with 76 character line length limit removed18:14
drobillaI think I managed to do it in 50 lines or so of C18:15
falktxdrobilla: is adding new ui types still ok?18:23
falktxI want lv2ui:NTK18:23
falktxand lv2ui:Qt5 (rui synths can already use that)18:24
*** root1 is now known as Guest2341518:25
*** HarryHaaren has quit IRC18:26
drobillaEveryone I asked about NTK thus far, including the author, thinks it should just work via X11 (or whatever underlying thing is there)18:30
falktxcause they don't know how it works18:31
drobillaWe can add types but I also think it's kind of becoming clear that it's not the way to go18:31
falktxharry was a bit confused by ui types18:31
drobillaDoes an NTK host exist?  What's the pointer type?  etc.18:31
drobillaIt also doesn't strike me as the most stable thing to bake into the spec in the world.18:32
falktxcarla will do NTK once there is a plugin for it18:33
drobillaBasically there's a lot of questions about that one I don't know the answer too, and know of little reason to care.18:34
drobillaQt5, fine.18:34
falktxI'll talk to harry to try and expose its lv2-ui as NTK widget18:34
falktxthen we'll have something to test18:34
drobillaYeah, but......... why?18:34
falktxit skips the x11 embed business18:35
drobillaand, importantly, is "NTK" widget a binary stable thing18:35
drobillait does if your host is NTK, which AFAIK none are.18:35
falktxntk and x11 embed have some issues18:35
drobillabut I can't really put "oh, y'know, whatever the hell 'ntk' means this week" into a spec, you know?18:35
falktxI know18:36
falktxbut since it's a shared lib, supposedly all apps are built against the same version18:36
drobilla(Anyway, I am tired of hearing about vague undefined "issues")18:36
drobillaFor a lib that's deliberately light and static/bundled appropriate, and not packaged basically anywhere, that's a stretch18:37
falktxI understand the situation18:38
drobilla(Also, a lot of the backroom criticism I hear about LV2 is UI stuff being done totally wrong and completely inappropriate for other platforms, commercial plugs, etc)18:38
falktxthe author has not been very actively lately... it's weird...18:38
drobillaBut basically as far as I am concerned, X11 embedding works perfectly.18:39
drobillaUnless you're doing GL and need hard vsync, which is not figured out.18:39
drobillaSince that needs to work anyway, fixing any issues - were I to actually know about them - would be the first priority.18:40
falktxdrobilla: I was just thinking using the real widget type vs X11 would be a good choice18:40
drobillaIf that fails, *then* working around them and fragmenting the interface even more18:40
drobillafalktx: Just more for hosts to deal with18:40
falktxif the plugin exposes both ntk and x11 uis, no18:41
drobillaThere's a LOT of widget sets one could use.18:41
drobillaUltimately the host is just going to need to add code to get the native window for each one of them.18:41
drobillaAnyway, in summary strikes me as a generally pointless idea, but if all the above questions are answered, and the answers are appropriate, fine.18:43
drobillaSince I personally have roughly 99999999999999999999999 things way more important to do, I won't be doing that research.18:43
drobillaBut I'm almost positive male will actively refuse the idea of a stable ABI for it anyway.18:44
falktxdrobilla: is it ok if I make my host implement lv2ui:NTK and a plugin using that too without it being official?18:44
falktxother hosts will simply load the x11 ui18:44
drobillafalktx: No, it is not okay for you to invent URIs in namespaces that you do not control18:44
drobillaEspecially when you can't even describe a reason for doing so.18:45
drobillaDo something useful :P18:45
drobillaYou can of course invent URIs in appropriate namespaces all you like.18:45
drobillaBut of all the toolkits anyone is using whatsoever, this one is most likely to be fragmented across UIs.  This is a bad idea.18:47
drobillaParticularly when I'm fucking well finally trying to *resolve* UI fragmentation :P18:48
drobillaSpeaking of resolving fragmentation, consider yourself warned that I will actively sabotage any interfaces defined in lv2plug.in/ns that are not official.  Including putting plugins in the SDK that segfault the host, and making lilv reject plugins automatically.18:55
drobillaThat shit will not be happening again.18:56
falktxwhat about plugins that use lv2plug.in? :P18:57
falktxit happened before...18:57
falktxdrobilla: I have a kxstudio namespace for this sort of things now. won't use lv2plug.in for experimental things, promise18:58
drobillaYeah, those got moved.18:58
drobillaI don't know, I figured it was mind-blowingly obvious that you simply don't do that.18:59
drobillaIt's been put in the docs in various places since, but it's kind of hard to find one place everyone will read18:59
drobillaI highly recommend for your own sake that you don't go out of your way to deliberately add compatibility headache to the host:UI interface for no reason, but you're free to do whatever unwise nonsense you like.  That is why we hijack DNS :)19:00
falktxI need to get my host fully working first...19:01
falktxdrobilla: is ingen going to be released anytime soon?19:03
* drobilla shrugs19:03
falktxno rush on my side, i'm just wondering19:03
drobillaI would like to do so.  I try to do so.19:03
drobillaAn overwhelming majority of my time gets spent addressing LV2 problems no body else does anything about.19:04
drobillaIIRC the TODO there is blablack submitted a few bugs and I need to make MIDI binding saving work.19:04
falktxwhat do you want me to do?19:05
drobillaganv layout stuff needs to be reigned in a bit.19:05
falktxI'm not sure if I can help lv2 directly that much19:05
drobillabut I did clean up the major gross aspects of that one, so ganv+patchage release will probably happen first, followed by Ingen19:05
drobillaI don't know.  Everyone implementing whatever is decided for sorting out the UI stuff would be good.19:06
drobillaI'm not really complaining, it's just the way it is.  I get why nobody else works directly on the spec.19:07
drobillaI get it very much, because it's a shitty entirely thankless job :)19:07
falktxdoes the svn repo have a public section?19:08
drobillaoh, that reminds me, blablack made a video, where was that...19:08
drobillafalktx: for what?19:08
falktxfor devs to contribute more stuff directly ?19:09
drobillayeah, but I mean, like what?  there's plugins, there's specs, there's lv2specgen19:09
falktxwell, you're the one that said no one else is working directly on the spec19:10
falktxI think lv2 might be good to have on github19:10
drobillaI don't know what else would go in there.  Nice simple examples are among the most helpful contributions almost anyone can do.19:10
drobillaeeeeehhh.  In some ways yes, in some ways no.19:11
drobillaIt's very definitely not the sort of thing where forking is good.19:11
drobillaI will move to git at some point, but it's not really high priority.19:11
drobillaI can spend days on that OR any of the above things people actually care about...19:12
drobillaHonestly given how immensely difficult it seems to be to get people to even think or talk about what to do, encouraging willy-nilly breaking of the headers hardly seems like the right thing anyway.19:13
drobillaPatches Welcome™19:14
* drobilla watches http://youtu.be/LWfF71NerkQ19:14
falktxcalf is working on ingen again?19:16
falktxI though calf synths didn't work because of event extension19:16
drobillais there calf in Ingen in here?  I didn't notice19:17
falktxdrobilla: is the ingen graph processing using multi-core?19:18
drobillafalktx: No.19:19
drobillaI implemented that a while ago but I doubt it actually works right now.19:19
drobillaI need to switch to the non-callback Jack interface to do it properly.19:19
drobillaIt may sound odd, but actual implementation of the audio processing is an extremely low priority for Ingen right now.  I'll probably rewrite it later.19:19
drobillaFile format, compatibility, stability, etc. is top priority.  Internal guts don't affect anything of long-term importance, so that's post-release stuff.19:20
falktxok, bbl19:20
drobillaMaking it parallel shouldn't be too hard.19:20
drobillaNeed to think about parallel across voices too, though.19:21
drobillaIn general I think it needs to be rewritten in a compiler style.19:21
* drobilla returns to horrible tedious marking19:21
*** NickSB2 has joined #lv219:24
*** falktx has quit IRC19:25
*** mlpug has joined #lv219:36
* drobilla 's volcas arrive 5 months after the fact19:44
drobillaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaand work stops19:44
*** falktx has joined #lv219:50
Anchakorwith the UI stuff, why not just make/pick a API for the RGBA buffer + events and let people implement it for various GUI toolkits?19:55
falktxlimitations19:56
falktxwhat about touch?19:57
Anchakor[18:53] [ drobilla] Plus I don't know about the feasibility of various toolkits to draw to an RGB buffer.19:57
Anchakor[18:53] [ drobilla] and lots of people want to use GL anyway which definitely doesn't (reasonably).19:57
Anchakorhmm just got to this in my reading of the backlog19:57
Anchakorfalktx: well that API should be fairly extensible19:57
Anchakorbut having this thin API layer between lv2 and GUI toolkits to do embedded UI seems like the only reasonable thing to do19:59
*** rncbc has joined #lv220:00
falktxit's also very to get wrong20:00
falktx*very easy20:00
Anchakorwell, it would be essentially a very thin meta-GUI-toolkit20:01
AnchakorGUI adaptor in OOP speak :)20:01
falktxthat implies limitations20:01
AnchakorI'm sure we could learn from the mistakes of various GUI toolkits20:02
drobillaAnchakor: "Let people implement it"20:03
drobillaAnchakor: hah ;)20:03
Anchakorit beats the current approach of many GUI-toolkit extensions in that it wouldn't require hosts to constantly change their code to support plugins, but if a plugin author wanted to use some new shiny GUI toolkit, THEY would have to implement its mapping to the GUI adaptor API20:04
drobillaThat latter point is also true of window handles.20:04
drobillaExcept "implement" is usually unbelievably trivial in that case, e.g. calling a get function.20:04
Anchakorare you sure?20:05
Anchakorthe GUI adaptor could even make it possible for falktx's wine running separete process win vsts to render into the host embedd :)20:06
falktxthose have nothing to do with lv2 or embed20:07
falktxyou can't use them directly in lv220:07
Anchakordrobilla: with the window handles, the host still needs to implement the event stuff in the GUI framework the plugin is in, no?20:07
Anchakorif the GUI adaptor API was done with atoms, you could embedd a GUI of a process running on a different machine :)20:08
falktxOR, ...OR....20:11
falktxif the UI doesn't need instance-data20:11
falktxyou can just run it on that machine20:11
falktxthe atom communication already allows this20:12
drobillaAnchakor: No.  The UI can implement that.20:14
drobillaAnchakor: Most likely via a toolkit, or portability framework like Pugl.20:14
drobillaNo native window handle, no ability to get events period, and you're a slave to what the special LV2 API says, and what the host actually implements.20:15
drobillaThe jist of it is that there is only one linga franca for draw+events, and that's the native window handle for whatever platform.20:17
drobillaThere is no such things that is truly portable.20:17
Anchakorwell my idea is that the burden of implementing support for new GUI frameworks should be on the plugin developers which want to use it, not the host developers, nor the lv2 core developers (aka drobilla)20:18
drobillaAnd lots of stuff requires that handle anyway.  So the thing to do is, make that as nice as possible.20:18
drobillaAnchakor: Precisely.  Adding a bunch of LV2 special API for events does the exact opposite of that.20:18
Anchakordrobilla: I don't see how that is true20:19
drobillaWell, you want to ADD a bunch of complicated and almost certainly limited API to the interface20:19
drobillaMeaning hosts actually have to implement all that, which is far from trivial, especially considering portable.20:20
drobillaThe absolutely massive imposition this is can not be understated.20:20
drobillaThe benefit?  Well, it's theoretically possible to write a plugin that doesn't need a portability framework or native anything itself.20:20
drobillaSomething very few people actually want to do anyway.20:20
drobillaAnd something that can't do whate everyone wants anyway.20:20
drobillaThe cost:benefit is really not appealing at all.20:20
Anchakorhosts can use an utility library like lilv, how is that worse from the current state?20:20
drobillaThen gluing that to any toolkit a UI author actually wants to use is a ton of work for every UI author, on top of it.20:21
drobillaIt's worse because, well, you've added a shitload of problems and solved almost none.20:22
Anchakornow we have X frameworks hosts support and Y frameworks plugins use, rather then working it out so that the X*Y combinations work fine isn't it better to make a 1 middleware for everyone to work with?20:23
Anchakorwe already got very extensible communication tool with atoms20:23
drobillaEven from the fantasy perspective of people who don't actually intend to do any of that work whatsoever it's not very appealing.20:23
drobillaAnchakor: The closest thing to such a middleware is a native window handle.20:25
drobillaWhich can, basically by definition, do *anything*, and does not restrict anyone to a special LV2 interface for events or whatever, and thus does not force hosts to implement that thing.20:25
Anchakorbut that means the host needs to implement the API of the GUI framework the plugin uses20:26
Anchakorno?20:26
drobillaBasically I can rephrase your idea as "make an LV2 toolkit and force it on everybody"20:26
drobillaEven if it was a good idea it'd fail so ultra hard...20:26
drobillaAnchakor: Not really, you need to show the thing somehow.  Either via suil, which just gives you whatever you want, or by essentially calling show() which anyone can do.20:27
drobillaThis is not even in the same universe of pain in the ass as implementing an entire toolkit API worth of event handling.20:28
Anchakorhow does the event handling work?20:28
drobillaIt works in the same way event handling works for every other program with a window.20:28
Anchakoreven if X11, cocoa an win32 all have a function called show() in their window handle API20:28
drobillaThat's what windowing systems do.20:28
drobillaThey don't, that's (the graceful replacement of) external-ui.20:29
Anchakorin what you propose, what code does translate Qt5 events into GTK events?20:29
drobillaWhat I propose is what we already have, which works.20:30
drobillaNo code does any such thing.20:30
AnchakorI am probably fairly ignorant what we have already then20:30
AnchakorI'm just trying to understand, but I don't know20:31
drobillaX11, Wayland, Carbon, Windows, etc, etc, of course have their own event systems.20:31
drobillaLet's just say it's self evident that any window can handle events.20:32
Anchakorwe agree that the burden of implementing support for new GUI frameworks should be on the plugin developers which want to use it, not the host developers, nor the lv2 core developers (aka drobilla)20:34
drobillaEffectively when you use native window handles at the interface there is no burden, you just use them.20:34
Anchakornow in your solution, how would this plugin author implement this plugin? where would he put the code handling the new GUI framework so all existing hosts can use his plugin (without any code changes)?20:35
drobillaI do not know what "handling" you speak of.20:35
drobillaSame way you write any UI, basically.20:36
Anchakorlets say a new alteranative to X11, Wayland, Carbon, Windows appears, where does the code handling it go?20:36
drobillaAny window on, say, X11, will have an X11 window handle regardless of what high level framework you wrote it in.  Any reasonable toolkit will provide access to it.20:36
drobillaHosts, or more realistically a library like suil.20:37
drobillaThis is inherent.20:37
drobillaSo don't bother trying to tie it to your argument that it should be plugin's problem because it's not possible anyway ;)20:37
Anchakorok I think I get it now20:38
drobillaBasically if you're on X11, you can do everything via an X11 handle.  Wayland transition sucks, but such is life.20:38
drobillaor, you can do the combinatorial explosion of every single toolkit under the sun thing.20:38
Anchakorbut I'm afraid not many GUI toolkits support working with just vanilla window handles20:38
drobillaClearly not really feasible, but interface wise, the solution is to let UIs provide whatever.20:39
drobillaAnchakor: incorrect.20:39
drobillaAnchakor: I am not aware of a single one that doesn't.20:39
drobillaOther than non-C situations and such, anyway20:39
*** mlpug has quit IRC20:40
AnchakorI don't think in Qt you can make a QWindow out of a X11 window handle20:41
drobillaYou don't have to.  A QWindow inherently is an X11 window.20:42
drobillaYou get the handle and give that to the host.20:42
falktxthere's no QWindow...20:42
drobillaEmbedded is a little more sophisticated because you need to specify a parent and such20:42
Anchakordrobilla: I meant when making a host to handle X11 handles of plugins20:44
drobillaI think my default answer to this from now on is going to be "we are adding graceful degradation so you can just call show() and a window will pop up"20:46
drobillaI have spent way too much time talking around the issue in non useful ways this week.20:46
drobillaand my default answer for how hosts do it is, use suil.20:46
drobillaThe how is none of your concern ;)20:46
AnchakorI'm sorry but it's a pretty complex for people like me who don't know ins and outs of windowing systems and GUI toolkits20:47
Anchakorok, "use suil" is a good enough answer :)20:47
drobillaIt's not that complex when you realize that ANY window is, well, a window.20:47
drobillaQt, Gtk, NTK, Pugl, everything ever that will actually show a UI on your screen is the same thing under there somewhere.20:48
Anchakoryeah, but the point is the API20:48
drobillaThat thing that everything inherently is has an API.20:49
Anchakorif I were to generalize a bit, Suil is the middleware I was talking about at the start, except it isn't about RGBA buffer but window20:49
drobillaIn a way, I suppose.20:50
drobillaBasically this is frustrating me for the same reason the list is, and my private email conversation with another dev is.20:50
drobillaNobody will fucking even talk about the actual relatively simple UI API things that really actually need doing.20:51
drobillaSo I'll just do it.20:51
drobilla</discussion>20:51
falktxlv2 UIs are not an issue for me now20:52
falktxwhatever toolkit appears next, I just need to make a small tool that will show that20:52
Anchakorwell a common plugin writer or a linux musician isn't people who will have useful feedback for you I guess, you better speak to people who wrote the core of GTK/Qt and dealt with issues like that20:52
drobillaNo, this is what I mean.  This is all missing the point.20:53
drobillaToolkits are beside the point.20:53
drobillaThe issue we have currently is precisely toolkits.  They affect the host:UI interface.  To some degree this is always going to be true.20:54
drobillaThe actual problem is that UIs are foced to choose ONE per UI, with the consequence that they have to describe a billion different UIs, all alike, which are actually the same thing.20:54
drobillaIt can, and should, Just Fucking Work, easily, always.20:55
drobillaMaybe I'm a Gtk and ideally I'd like a Gtk widget.  Can you give me that?  No?  Okay, well, I can embed and we're on X11, so can you give me that?  No, okay, well, do you support the show API that can always work?  Yes, great, pop up a window please.20:55
drobillaThat is what we need.20:56
falktxthat is great20:56
falktxI don't think anyone will ever oppose that20:56
drobillaGraceful degradation.20:56
Anchakoryeah that is good20:56
Anchakorbut I thought you were thinking of some intra-toolkit embedding solution (as the most advised GUI solution and first on the list of graceful degradation)20:57
drobillaTricky bit is backwards compatibility, I suposse, but it's not that tricky.  You can add the 'askey' interface as extension_data and still be an X11UI or whatever for hosts that don't know abou tit.20:57
drobillaThat is an intra-toolkit embedding solution.20:57
Anchakors/intra-toolkit/inter-toolkit/20:57
drobillaA large part of the reason I need to make it easy to just provide all these things, which is trivial to do, is so I can embed.20:58
drobillaWithout having these constant retarded discussions about embedding and how can it all work and wayland and oh no the sky is falling and maybe we should make LVTK and whatever the fuck.20:58
drobillaIt lets everyone just write their damned code.20:58
drobillaProblem solved, and we move on to the next thing where the spec is getting in the way, if necessary.20:59
drobilla(Not this discussion in general, this is a years long theme)20:59
falktxcuriously, LVTK does exist...21:00
drobillaWe just lack a level of divorce between what UIs provide and what hosts support.21:00
AnchakorI'm still not sure - Suil will provide the API which host will use to tell the plugin by a window handle "hey, draw here at (x, y) with (width, height)", right?21:00
drobillaWhen really what we want is UIs provide everything that's easy for them to do so (which is usually 3 things), and hosts support whatever.21:00
drobillaAnchakor: The short answer of how embedding works is that the host (suil) provides a parent window handle.21:01
drobillaI guess I should finish killing myself^W^Wmarking so I can actually do this21:02
*** rncbc has quit IRC21:03
falktxthis means UIs will just work on osx without me having to deal with cocoa reparenting :)21:03
AnchakorI had a professor at my university who market by putting the paper near an opened window and marking by the clusters the papers formed21:04
Anchakormarked*21:04
Anchakorpapers*21:04
falktxdrobilla: I should try to fix that someday if harrison or you don't, but having a working UI is a start21:04
* falktx is talking about pugl21:04
drobillaWell, hopefully somebody figures out proper embedded OSXey things at some point, but yeah, that's the idea.  At the veery least UIs can always work externally (assuming they implement that interface)21:04
drobillafalktx: I have no host, so never tested it.21:04
drobillaI'm going to try and install an OSX VM21:05
drobilla(Have a Windows one now, but no compiler.  They want a login.  Ugh.)21:05
falktxdoesn't ardour3 have cocoa UIs?21:05
drobillaAnchakor: I'm sure I could mark by how horribly awful their code looks at first glance and have a < 10% error rate21:05
falktxrgareus told me before that ardour3 did lv2 cocoa UIs21:05
drobillaArdour uses suil, and suil still doesn't support cocoa specific anything.  AFAIK Ardour 3 dists on OSX still use X1121:06
drobillaI'm a bit stuck for changing much of anything in pugl right now since I don't have OSX around.21:08
falktxI'm going to see if I can install osx86 again (a recent version)21:09
falktxI only have 10.5 working which is a bit old21:09
drobillaI have a 10.6.something lying around.  It worked at some point.21:21
drobillaSpeaking of which, man is Windows bloated.  My install is like 18 gigs.21:21
drobillaProbably a lot of that is office, I suppose.21:21
drobillaI'm half tempted to just make an LV2 UI 'command' interface, which can be provided in both directions, that has one function, int command(const char* cmd_uri, const char* fmt, ...)21:23
drobillashow, hide, run, touch, menu, whatever, go nuts.21:23
drobillafmt basically just being there so we can stick the GCC tags to make it type check, but could just be ommitted21:24
Anchakoryou mean uint32_t urid, no? :)21:26
drobillaDoes performance really matter enough to justify the nuisance in this case?  I doubt it.21:28
drobillaCertainly not for show/hide, if it was to be used for control rate things, maybe (but even then)21:28
Anchakorconsistency21:30
drobillaWell, consistency would be to just add normal interfaces with explicit functions like everything else in there21:33
drobillaWhich is probably what I'll actually do.  Add a show/hide one.21:33
Anchakorif they don't need to be very extensible21:33
drobillaUnfortunately external needs a "oh, I closed" thing in the other direction too.21:34
falktxthe ui idle already has that21:37
falktxit returns != 0 when it doesn't want more idle. we can re-use that21:38
drobillafalktx: Hm, true.  Pretty much polling though, bit nasty.21:48
falktxon the old external-ui it states ui_closed must be called from within run/idle21:48
drobillaDo many even need idle?21:49
drobillaWell, less interface is always good.  I will try it, anyway.21:51
falktxall pugl based plugins need idle afaik21:52
falktxexcept when using a 2nd thread, but that's not very good practice21:52
drobillaYeah, but toolkit ones generally don't.21:55
falktxsometimes they might21:57
falktxhaving an idle func ready is easier than having to set a callback I think21:57
drobillaThis reminds me, anyone have any opinions on just sticking pugl in the LV2 dist?23:08
drobillaIt would be the trailblazer for /lib23:08
drobillaI'm torn on the general idea of including libraries in LV2, but I want a good example GUI plugin, and also no/minimal external dependencies...23:09
fpsi don't like plugin guis very much ;D23:11
* fps is not being constructive so he shuts up23:13
Anchakordrobilla: it's good by me, even if non-lv2-projects started to use it, lv2+pugl are small enough23:14
Anchakorif you want to be hip, bundle together a bunch of libs and call it a "framework" ;)23:15
drobillafps: I seriously hate this shit so much, you have no idea :)23:21
drobillaPlease, for the love of everything that is good, make this next bit of work make all the UI nonsense fuck off so I can get on with something actually relevant to SOUND23:22
drobillaAdvanced plugin control, sequencing, multi-channel, note-specific control, automatable events, so much cool stuff to do.  So much cool stuff I'd probably have done already if I didn't need to waste the majority of my time on UI crap I don't care about...23:24
drobillaAnchakor: LV2 SDK® :)23:24
drobillaI think maybe the way to include libs is to just put them in the tarball, but otherwise have them be 100% independent libs.  Their own include paths, own versions, etc.23:25
drobilla(the LV2 URI-like include path style can't really do parallel installation anyway)23:25
drobillaThere is UI stuff I want to do, e.g. control panel builder and so on, but it's basically the opposite of custom plugin GUIs.23:28
fpsdrobilla: would that latter thing mean building UIs by the host? And still having everything available as ports/other mechanism for maximum hackability and usability?23:29
drobillafps: yep.23:30
fpsdrobilla: +123:30
drobillaWhich is how LV2 control ports work anyway, and custom UIs work via those, or events23:30
drobillaWe did that bit way more right than VST anyway23:31
fpsdrobilla: yeah, i think i remember looking at that stuff after blatantly ripping the sampler example with its GTK gui to load the sample23:31
fpsi'd like to just not include the GTK gui ;D23:31
drobillafps: jalv can show a file selector for that one, but that stuff is sort of experimental still23:32
fpsdrobilla: cool.. since i use the same mechanism, i guess that should work with jalv, too?23:32
drobillathat UI is indeed totally silly23:32
drobillafps: if you document the property in the same way it should23:33
fpsdrobilla: cool, doing this before going to bed ;D23:33
fpshttps://github.com/fps/ladspa.m.lv2/blob/master/instrument.ttl23:34
fpsatom:Path?23:34
AnchakorI guess there are things for which host wouldn't support decent UI ever, like setting sample loop points23:36
drobillafps: looks rightish23:36
fpsdrobilla: what version of jalv would support that?23:36
drobillaAnchakor: Sure.  But the 99% case is basically numbers.23:36
drobillaThis is why you talk about it as "automation"23:36
drobillaEverybody agrees automation is good23:36
drobillaAvoids all that BUT I NEED CUSTOM warring.23:37
fpsoh jalv.gkt doesn't seem to have a --version switch23:37
drobillafps: I dunno. Has for a while.23:37
fps[at least in the version i have here, which i don't know what it is ;D]23:37
drobillahuh.  so it doesn't.23:37
drobillafps: Well, just run  jalv.gtk -g http://lv2plug.in/plugins/eg-sampler23:37
drobillafps: and see if it works23:37
fpsit does :D23:38
fpscoolio23:38
fps:D23:38
drobillaI don't know if the vocab for this is really the right thing, but that is my little "look at this" use case currently, anyway23:38
drobillaa patch:Set can only set one thing at a time, which is pretty weak.  but it also looks less scary.23:39
drobilla(My likely topic for LAC2015)23:40
fpsdrobilla: seems to work with my little plugin, too :D23:40
fpsgreat23:40
fpshmm, no, i guess i'll have to touch some more code.. well, tomorrow23:41
* drobilla opens a .docx with a photo of a diagram hand-drawn on a piece of paper in it23:47
drobillaSigh.23:47
fps;D23:48

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