HarryHaaren | drobilla, ping re Lv2:Presets and custom UIs? | 00:01 |
---|---|---|
*** NickSB has joined #lv2 | 00:02 | |
*** NickSB has quit IRC | 00:06 | |
*** NickSB has joined #lv2 | 00:07 | |
drobilla | HarryHaaren: . | 00:21 |
HarryHaaren | so I'd like to present a list of available presets in the custom UI: from a UX perspective this just makes sense: presets for plugin X are available in the UI of plugin X, not the host window (or sub-window/menu) | 00:22 |
HarryHaaren | proposal is as follows: all stays as is, with the following changes: an extension to allow the plugin to query the host for a NULL terminated list of preset names. Host scans LV2_PATH etc, and returns list. | 00:23 |
*** gianMOD has joined #lv2 | 00:24 | |
drobilla | Meh. Hosts that support presets are likely to already have the selector anyway | 00:24 |
HarryHaaren | It'd be nice to have some meta-data available ("genre" or "catagory" or something), but I'm not sure how to design that in an extension | 00:24 |
drobilla | I could maybe be rammed in as an option. | 00:25 |
HarryHaaren | drobilla, i know you know. You coded A3's LV2 and wrote LV2. Its not you that I'm thinking of, sorry. Its a normal user, who's trying get-rich-by-making-beatz | 00:25 |
HarryHaaren | perhaps I'm confused in the best way to implement: i'm relaxed about how it works, but it would be awesome if it could happen | 00:26 |
HarryHaaren | *would be awesome if it *did* happen too. | 00:26 |
drobilla | Well, in effect you end up with two selectors for the same thing taking up space | 00:26 |
drobilla | I mean, sure, that sounds nice, woo users, but does it actually make anything easier for anyone? | 00:26 |
HarryHaaren | except for that one is in the plugin-UI, where a user reasonable expects it to be. | 00:26 |
HarryHaaren | yes. Have you tried loading a preset in QTractor? | 00:26 |
drobilla | Nope. | 00:26 |
HarryHaaren | as a plugin-dev I'm at the mercy of the UX of a host... and I don't like it. | 00:27 |
drobilla | But if the implementation is no good, well, requiring even more implementation which must be gooder... | 00:27 |
HarryHaaren | Its in a right-click context menu, 2 levels deep. | 00:27 |
HarryHaaren | in this case, a plugin can do it right. So yes, gooder :) | 00:27 |
drobilla | Well, the problem is it will dive off the slipper slope deep-end | 00:28 |
drobilla | You need a URI for each, query mechanism to get all of them, set thingie to set one | 00:28 |
drobilla | But, oh right, need names | 00:28 |
HarryHaaren | I've filed tickets against QTractor, no luck, tried explaining, still no luck. Rui did change move it *into* the r-click context menu though *facepalm* | 00:28 |
HarryHaaren | this: http://sourceforge.net/p/qtractor/tickets/126/ | 00:28 |
drobilla | Somehow I have a feeling "oh I need this and that and the other thing" will follow | 00:28 |
drobilla | So some half-assed thing isn't going to fly | 00:29 |
*** gianMOD has quit IRC | 00:29 | |
drobilla | Anyway, using the option interface is probably the way | 00:30 |
HarryHaaren | could we somehow highjack Atom messages? | 00:30 |
drobilla | Need some kind of announce one | 00:30 |
drobilla | or that, but it's more of a PITA | 00:30 |
HarryHaaren | I'm thinking of Lv2:Time # position stuff that the host announces on-startup | 00:30 |
drobilla | Frankly it's not a huge priority for me given the huge list of things that are actually limiting and just not a pain in everyone's ass to do something we can already do, but feel free | 00:31 |
HarryHaaren | i guess options is ~the same | 00:31 |
HarryHaaren | cool. I'll try my hand at it, if you can give me some guidance on a draft that'd be awesome | 00:31 |
drobilla | Kinda. You just don't have to forge things and so on, though it's more limited as a result | 00:31 |
drobilla | Well, not quite, since you *can* but it's mainly an 'easy case is easy' thing for flat stuff | 00:31 |
drobilla | It has no query facilities or anything like that, though. | 00:32 |
HarryHaaren | ok, so Options interface, and I"ll ping you about it in a few days when I've wrapped my head around a draft or so | 00:32 |
drobilla | a message via the ports is also doable, in some sense, though it's a bit weird to have one that explictly *isn't* intended for the plugin | 00:33 |
HarryHaaren | what about enumerating them? keep calling a host-supplied function pointer until NULL comes back, and then you have all preset structs? | 00:33 |
drobilla | I dunno. Basically whatever simple *generic* thing will get the job done, great | 00:33 |
drobilla | Just not get_preset(int num, char* random_shitty_unextensible_thing_I_thought_of_at_the_moment, bool i_suck_at_api) etc | 00:34 |
HarryHaaren | i like the "keep callin me till return zero" thing: FLTK uses it a lot and its easy to work with. | 00:34 |
HarryHaaren | haha | 00:34 |
HarryHaaren | i do suck at api, but I'll try make it less obvious. | 00:34 |
drobilla | hm. that could work. | 00:34 |
HarryHaaren | assuming we're a bit careful with the struct, its future-proof for adding some extra things? | 00:35 |
drobilla | and/or the result could be a list of some sort. though this kind of clashes, since list != several values for the same property | 00:35 |
HarryHaaren | its more like the features array that's passed to instantiate? | 00:35 |
HarryHaaren | unique URI for each preset (its its unique ID anyway IIUC?) | 00:36 |
drobilla | Unfortunately I didn't foresee multiple values so the option struct doesn't have support for that. Not sure if it could be rammed in without breakage | 00:36 |
drobilla | yes, presets have URIs | 00:37 |
HarryHaaren | keep-calling till NULL would solve the multiple-return-values issue? | 00:37 |
drobilla | if it makes sense in that context, I suppose | 00:38 |
drobilla | we could add a status flag for "BTW there's more" | 00:38 |
drobilla | the hidden statefulness of it is a bit shit, though | 00:38 |
HarryHaaren | true.. | 00:39 |
HarryHaaren | if I keep on trucking at this rate working on Fabla 2.0, it should be "ready" by late next week. 2.1 is intended to have LV2 presets and LV2 aux-busses : i'll leave it until then to get my hands dirty. Expect a ping *when* i'm struggling drafting up something. | 00:40 |
* HarryHaaren back to the codes, thanks for the chat / ideas. | 00:41 | |
drobilla | ttyl | 00:42 |
*** ricardocrudo has quit IRC | 00:48 | |
*** HarryHaaren has quit IRC | 01:23 | |
*** gianMOD has joined #lv2 | 01:26 | |
*** gianMOD has quit IRC | 01:30 | |
*** drobilla has quit IRC | 01:49 | |
*** gianMOD has joined #lv2 | 02:27 | |
*** gianMOD has quit IRC | 02:32 | |
*** gianMOD has joined #lv2 | 03:04 | |
*** gianMOD has quit IRC | 03:09 | |
*** gabrbedd- has joined #lv2 | 03:46 | |
*** falktx has quit IRC | 03:46 | |
*** gabrbedd has quit IRC | 03:47 | |
*** wrl has quit IRC | 03:47 | |
*** wrl has joined #lv2 | 03:47 | |
*** gabrbedd- is now known as gabrbedd | 03:48 | |
*** triune has quit IRC | 04:28 | |
*** triune has joined #lv2 | 04:30 | |
*** Anchakor1 has joined #lv2 | 05:19 | |
*** triune has quit IRC | 05:32 | |
*** Anchakor_ has quit IRC | 05:32 | |
*** bazz has quit IRC | 05:32 | |
*** wrl has quit IRC | 05:32 | |
*** Anchakor has quit IRC | 05:32 | |
*** triune has joined #lv2 | 05:39 | |
*** wrl has joined #lv2 | 05:39 | |
*** Anchakor has joined #lv2 | 05:39 | |
*** triune has quit IRC | 05:39 | |
*** triune has joined #lv2 | 05:39 | |
*** bazz has joined #lv2 | 05:48 | |
*** bazz has quit IRC | 05:59 | |
*** bazz has joined #lv2 | 06:00 | |
*** unclechu has joined #lv2 | 08:25 | |
*** zth has joined #lv2 | 09:00 | |
*** NickSB2 has joined #lv2 | 10:54 | |
*** HarryHaaren has joined #lv2 | 11:23 | |
*** ricardocrudo has joined #lv2 | 11:39 | |
*** ricardocrudo has quit IRC | 11:54 | |
*** rncbc has joined #lv2 | 12:05 | |
*** rncbc is now known as rncbc|AFK | 12:05 | |
*** NickSB2 has quit IRC | 12:21 | |
*** ricardocrudo has joined #lv2 | 13:01 | |
*** zth has quit IRC | 13:09 | |
*** zth has joined #lv2 | 13:22 | |
*** gianMOD has joined #lv2 | 13:49 | |
*** HarryHaaren has quit IRC | 14:02 | |
*** HarryHaaren has joined #lv2 | 14:03 | |
*** drobilla has joined #lv2 | 14:03 | |
*** gianMOD has quit IRC | 14:18 | |
*** edogawa has joined #lv2 | 15:12 | |
*** ricardocrudo has quit IRC | 15:40 | |
*** ricardocrudo has joined #lv2 | 15:54 | |
*** rncbc|AFK is now known as rncbc | 17:15 | |
HarryHaaren | drobilla, hey hey... I've implemented that LV2 UI Preset List as an extension: its pretty clean. Simple. Extensible. (aannndddd I hope I didn't suck too hard on API) | 17:16 |
HarryHaaren | have time to chat about it now? | 17:17 |
* HarryHaaren notes later is also an option | 17:17 | |
drobilla | Not particularly | 17:21 |
drobilla | Also, when your pugl changes settle I would like to get that merged ASAP | 17:22 |
*** ricardocrudo has quit IRC | 17:22 | |
*** crudo has joined #lv2 | 17:22 | |
*** crudo is now known as Guest67596 | 17:22 | |
HarryHaaren | ah ok, cool. I want to get X11 DnD implemented for 2.1 of Fabla so that's on the cards for later | 17:22 |
drobilla | Pastebin the spec or send it to the list or something and I'll skim it | 17:22 |
* drobilla is working and stuff | 17:22 | |
*** unclechu has quit IRC | 17:28 | |
HarryHaaren | aint pretty, but http://openavproductions.com/tmp/index.html and a "show-off" test file: http://openavproductions.com/tmp/test.html | 17:38 |
HarryHaaren | its strong points are: 1) extensible by adding variables to Preset_Descriptor 2) Simple to implement for hosts 3) plugins can keep only "name-URI" key:value pair if that's all they want, simple. 4) Plugins can be smart showing catagories etc etc if they wish | 17:40 |
HarryHaaren | weaker points: 1) no way to get a smaller sub-set of presets, the entire list is always communicated | 17:41 |
drobilla | I am not really a fan of adding a descriptor struct for something that isn't static | 17:42 |
drobilla | Also you spelled category wrong ;) | 17:43 |
HarryHaaren | hit F5 ;) | 17:43 |
drobilla | It would actually be *easier* in the host to implement a 'get a property about <whatever>' | 17:43 |
HarryHaaren | i don't see how such an API would work: i don't get it sorry. | 17:45 |
HarryHaaren | plugin queries host "give me properties about myself"? | 17:46 |
drobilla | get(struct of three things harry though of about one specific object type) => not really extensible by any stretch, though you can stick more things in there later (if there was versioning anyway) | 17:46 |
drobilla | get(thing, property_id) is | 17:47 |
drobilla | where thing in this case is a preset | 17:47 |
*** rncbc has quit IRC | 17:49 | |
drobilla | Basically, as a host if I just provide UI access to lilv_world_get you can get information about whatever you want and I don't have to special case every litle thing, which is a much nicer situation on both sides of the table | 17:49 |
drobilla | If everything had one value, this would be trivial and fully powerful and wonderful in general | 17:50 |
HarryHaaren | its sounds good to me. | 17:50 |
drobilla | Multiple values is the tricky part | 17:50 |
* drobilla idly wonders if the same interface could be dynmanifest-without-turtle | 17:51 | |
drobilla | I guess as a sort of compromise there could be that, and a special get_presets | 17:52 |
drobilla | Since querying for those is a bit weird | 17:52 |
*** falktx has joined #lv2 | 17:53 | |
HarryHaaren | i've learnt a load even just getting to the point of what I wrote there. I don't think given the experience I have I can do much better.. I'd like have a solution: although it'd be nice if its simple + extensible, I'll settle for in-production :) | 17:53 |
drobilla | Once you have the preset URI it's easy. get(pset, label), get(pset, type), get(pser, 3D animated GL icon) etc | 17:53 |
drobilla | Yeah, I'll think about it | 17:53 |
drobilla | The timing is pretty awful, to be honest. I have 90 things to do, and getting a release of LV2 out is one of them, and actively don't really want to add any extensions right now... | 17:54 |
HarryHaaren | cool. I'm back to Fabla code in that case, and I'll ping you later in week or so | 17:54 |
drobilla | and after that, ideally *reducing* the number of extensions we have | 17:55 |
drobilla | (the index is pretty terrible in a 'where's the stuff to do X?" sense right now) | 17:55 |
drobilla | Actually *setting* the preset could be an option | 18:01 |
drobilla | and an announce interface for those in the current option ext would be simple | 18:01 |
drobilla | So perhaps the 'getting information about stuff' is totally separate | 18:01 |
drobilla | and, for now, the option thing could work with presets you know about ahead of time (i.e. stock ones) | 18:02 |
HarryHaaren | +1 if that method scales (eventually) to requesting a preset-list and setting that too | 18:36 |
*** falktx has quit IRC | 18:47 | |
*** zth has quit IRC | 19:16 | |
HarryHaaren | drobilla, just a note on PUGL git workflow etc: https://github.com/apenwarr/git-subtree/blob/master/git-subtree.txt#L49 These sub-modules seem pretty neat for what I'm trying to do... | 20:13 |
HarryHaaren | (PUGL / AVTK) | 20:13 |
*** HarryHaaren has quit IRC | 20:19 | |
drobilla | Hm. maybe | 20:52 |
*** HarryHaaren has joined #lv2 | 20:56 | |
HarryHaaren | s'cuse me for timin-out after talkin, strange lock-up issue | 20:57 |
LAbot` | HarryHaaren: Sent 26 minutes ago: <rgareus> to ask drobilla about pugl + submodule. He'd prefer a submodule for merging (getting subtree commits back upstream is not-trivial). I made that mistake and falktx, too (though pugl was not git'ified back then) | 20:57 |
HarryHaaren | hmm. is that still the case? | 20:58 |
HarryHaaren | (@ you drob) | 20:58 |
HarryHaaren | rgareus, out of interest, why is it harder? Commit names? I'll split commit PUGL stuff, and the AVTK stuff seperatly | 20:59 |
HarryHaaren | ah, the rebase issue i guess | 21:01 |
drobilla | I don't know if git can apply such commits because the paths would be messed up | 21:07 |
drobilla | I can't just add an upstream and cherry pick or whatever | 21:07 |
drobilla | s/upstream/remote/ | 21:08 |
HarryHaaren | actually, i'm doing it here already. AKA the existing PUGL remote on my github will have my changes | 21:09 |
HarryHaaren | which will be easy for you to cherry-pick / merge as its just-another-repo. | 21:10 |
HarryHaaren | win/win | 21:10 |
drobilla | just-another-repo is what I want | 21:10 |
drobilla | If you have a pugl repo, how is it incorporated in avtk? | 21:10 |
HarryHaaren | and you got it :) | 21:10 |
HarryHaaren | right now its a copy-pasted codebase. I might sub-module PUGL into AVTK | 21:11 |
HarryHaaren | ill see | 21:11 |
HarryHaaren | either way, patches to you will be on github.com/harryhaaren/pugl | 21:12 |
drobilla | What's with the leading - in commit messages? | 21:13 |
HarryHaaren | just my thing.. dunno. Bullet points | 21:13 |
* HarryHaaren gets asked that a lot | 21:14 | |
drobilla | That's because git has a universal standard for commit message formats, and that ain't it :) | 21:14 |
drobilla | (so the summary makes sense) | 21:14 |
drobilla | I tend to like bullet point commit messages too, but c'est la vie | 21:15 |
drobilla | (First line is summary of commit, < 70 chars I think, though not sure. Magit makes it all red and angry past some point I blissfully assume is worth adhering to) | 21:17 |
HarryHaaren | yep. I keep commits small enough so the whole contents fit in there | 21:19 |
HarryHaaren | if you prefer essay style commits with huge change-sets.. let me know ;) Or just pull --squash :D | 21:20 |
drobilla | Just don't put a weird looking dash in front of the summary that will mangle my log and I'm happy :) | 21:22 |
drobilla | (blank line afterwards) | 21:22 |
* HarryHaaren will try remember | 21:23 | |
*** falktx has joined #lv2 | 21:33 | |
*** edogawa_ has joined #lv2 | 22:23 | |
*** edogawa has quit IRC | 22:24 | |
*** edogawa_ is now known as edogawa | 22:59 | |
*** HarryHaaren has quit IRC | 23:16 | |
*** edogawa has quit IRC | 23:35 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!