*** rncbc has quit IRC | 00:09 | |
*** unclechu has quit IRC | 00:45 | |
drobilla | Ideas for another example plugin that needs state and worker, but is still simple yet reasonable? | 01:46 |
---|---|---|
ColaEuphoria | drobilla, perhaps an oscillator with loadable waveforms? | 01:50 |
ColaEuphoria | I could also think of a worker that uses FFT processing for e.g., instrument removal or general audio editing, but that falls way beyond the line of simple or even reasonable | 01:54 |
ColaEuphoria | i feel like "state and worker" mixed with "simple yet reasonable" is a lost cause imo :/ | 01:54 |
drobilla | Yeah, "simple" here basically means as unbelievably simple as possible without being ridiculous | 01:55 |
drobilla | Meh. Sampler is the obvious one, but that already exists | 01:55 |
ColaEuphoria | I was actually pondering *something* for a while | 01:56 |
ColaEuphoria | Now, again, this lies off the line of "simple" | 01:57 |
ColaEuphoria | but I was pondering the possibility of using LV2 plugins to actually record audio to disk/read it back/manage it in a project | 01:57 |
drobilla | Maybe something pretty simple processing wise but with controls that inherently don't fit the control port thing... | 01:57 |
drobilla | ColaEuphoria: Yeah, a recorder has been on my hypothetical TODO list for a while | 01:58 |
drobilla | ColaEuphoria: Or a real sampler that also records among other fancy things | 01:58 |
ColaEuphoria | I feel like if the example-driven doc needs work, it's in the UI section | 01:59 |
drobilla | Part of the reason the state implementation in lilv has all those directory parameters is for things like this. You can do it non-destructively and save as many snapshots as you like but files themselves will never be duplicated | 01:59 |
ColaEuphoria | I think an increasing number of us are erring on the side of not using big toolkits for plugin UIs | 01:59 |
drobilla | Then I need to use/depend on yet another toolkit | 02:00 |
drobilla | I mean, I don't think you're wrong, but blech | 02:00 |
ColaEuphoria | man | 02:00 |
ColaEuphoria | why does UI work have to be so damn awful | 02:00 |
ColaEuphoria | well | 02:01 |
ColaEuphoria | one thing that *could* be done | 02:01 |
drobilla | Not really my forte anyway. Honestly it doesn't seem like a particularly good use of my time | 02:01 |
drobilla | Seeing as how the bus factor of the basic mechanics of plugins and whatnot is pretty much 1, and I'm that guy | 02:02 |
ColaEuphoria | is a unconventional UI in pugl or SDL or something to just show an example of rendering and leave the choice of complicated toolkit to the developer | 02:02 |
drobilla | Sure. Though really, this is uglier than it shoudl be, and we should have a better mechanism that allows you to specify X11/OSX/Windows UIs without a bunch of boilerplate for every one | 02:04 |
ColaEuphoria | well | 02:04 |
ColaEuphoria | people who do /any/ plugin ui work already do that if they aren't hiding behind juce or something | 02:05 |
ColaEuphoria | it'd be better to get a super minimal UI working just to show how to get it working on the lv2 side | 02:06 |
drobilla | There already is one | 02:06 |
drobilla | The fact that it's Gtk doesn't really change anything | 02:06 |
ColaEuphoria | understandable | 02:06 |
drobilla | The details of getting your native window handle and stuff aren't there, but that's different for every toolkit/library anyway | 02:06 |
drobilla | But hey, feel free | 02:07 |
ColaEuphoria | eh | 02:08 |
ColaEuphoria | right now i'm more interested in getting my synth up | 02:08 |
ColaEuphoria | it had 115 ports, and envelopes just gave it about a hundred more | 02:09 |
drobilla | Well, welcome to why there's no such example | 02:09 |
ColaEuphoria | it's becoming quite unwieldy without a ui.. | 02:09 |
ColaEuphoria | haha yeah | 02:09 |
ColaEuphoria | well, the gtk example really is good enough | 02:10 |
drobilla | I want the example to develop the C++ bindings, by the way | 02:10 |
ColaEuphoria | i think the onus is on the developer to learn how to integrate their TK of choice | 02:10 |
drobilla | Which will probably highlight some holes in the spec and generally further a clean-this-mess-up effort and so on | 02:11 |
drobilla | But I'm not even going to pretend to give even a hint of a crap about UI examples right now ;) | 02:11 |
ColaEuphoria | You think C++ bindings will help that? | 02:11 |
ColaEuphoria | Or could you elaborate? That was pretty vague. | 02:12 |
drobilla | Yes. Nice bindings make all the boilerplate go away | 02:12 |
drobilla | Which highlights the annoying things that can't go away | 02:12 |
drobilla | Like, say, connect_port and the pointless local state you need to maintain for it | 02:13 |
drobilla | But that's just a side-issue | 02:13 |
drobilla | Outside our little unix niche, the fact that people can't just look at some class interface and implement it is a super ultra mega massive huge turn-off for pretty much everybody experienced with writing audio plugins | 02:14 |
drobilla | Part of the reason people think LV2 is complicated is you have to do boilerplate things to implement extensions, which leads you to wondering what extensions you need, how to understand them, yadda yadda | 02:15 |
drobilla | U've | 02:15 |
drobilla | bee | 02:15 |
drobilla | n adding utilities to reduce that as much as possible in C, too | 02:15 |
* drobilla can't type | 02:15 | |
drobilla | But C++ can make the fact that the spec is extensible disappear almost entirely, at least from plugin code | 02:16 |
ColaEuphoria | honestly | 02:17 |
ColaEuphoria | from a plugin perspective | 02:17 |
ColaEuphoria | i haven't felt like i had to write a ridiculous amount of boilerplate | 02:17 |
ColaEuphoria | using opengl was (still is) way more overwhelming | 02:17 |
drobilla | Sure, it's not that bad | 02:17 |
ColaEuphoria | if i'm not mistaken, VST makes you do weird things like change sample rate | 02:18 |
ColaEuphoria | like damn | 02:18 |
drobilla | I am just generally trying to take a plugin code centric angle here, where I make the prettiest thing possible | 02:18 |
drobilla | Things that aren't pretty will get made that way | 02:19 |
drobilla | Probably more dramatic changes if I ever get the time, like putting everything in the same directory, no more URI stuff, etc | 02:20 |
ColaEuphoria | if you wanted to really hold people's hands you'd make some kind of IDE or do something that Qt does with adding "extensions" to C that resolve to boilerplate at make time :^) | 02:20 |
drobilla | lol | 02:20 |
ColaEuphoria | I feel like people intimidated by LV2, if not the graph database concept, is nothing more than the lack of the ultra handholding | 02:21 |
ColaEuphoria | I feel like people could learn a lot from video tutorials like SDL people generally rely on | 02:21 |
drobilla | Meh. Even in a universe where such a thing could happen, how many people are going to use a bloody LV2 IDE | 02:23 |
ColaEuphoria | have a standard? put an IDE around that shit. hype it to the moon and back. guaranteed userbase | 02:23 |
drobilla | Better documentation about data things would be nice, but in general I am very firmly of the opinion that executable very well documented code is the best documentation by a very, very wide margin | 02:23 |
drobilla | Other things should exist if and only if that doesn't work for the thing that needs documenting | 02:24 |
drobilla | People sufficiently knowledgeable to write C/C++ code in the first place have their tools already, and they like them | 02:25 |
drobilla | I'm sure that's true in some world or another catering to complete and total noobs, but not in this one | 02:25 |
drobilla | There's not really anything for such a thing to do anyway | 02:26 |
ColaEuphoria | I was kidding about the IDE thing, but youtube videos could help a lot imo | 02:27 |
drobilla | (Generally a symptom of things that are so annoying to work with they require the tooling. This is why Java people love that shit) | 02:27 |
drobilla | I honestly can't imagine a single topic in LV2 better addressed by a youtube video than text documentation | 02:27 |
ColaEuphoria | it can't | 02:27 |
ColaEuphoria | and it won't | 02:27 |
ColaEuphoria | but the viewer will get a foundational understanding | 02:28 |
ColaEuphoria | nobody knows SDL by only watching youtube videos | 02:28 |
ColaEuphoria | but they're a lot easier to digest than to just jump into the wiki | 02:28 |
ColaEuphoria | you can get your feet wet with the video | 02:28 |
drobilla | I generally advise people to explicitly not do that | 02:28 |
ColaEuphoria | it still requires more patience to read through anything than to just sit in front of a screen and see it happen | 02:29 |
ColaEuphoria | i'm not saying video is *better* | 02:30 |
drobilla | SDL is a graphics library | 02:30 |
ColaEuphoria | but it would be an invaluable asset to have | 02:30 |
drobilla | That kind of thing works well for graphics for obvious reasons | 02:30 |
drobilla | I don't even want people to seek foundational understanding anyway. That's a rabbit hole that leads to "this is so complicated" | 02:31 |
drobilla | I actively work to make things encourage people to *not* do that, actually | 02:31 |
drobilla | Examples examples examples. | 02:31 |
ColaEuphoria | What I meant is to make a series of example videos using LV2 | 02:32 |
ColaEuphoria | I've been thinking about doing it for a while, actually | 02:32 |
drobilla | I honestly can't imagine why anyone would watch a video about writing C code | 02:32 |
drobilla | But I'm a grumpy old man | 02:32 |
ColaEuphoria | and I'm 20 | 02:33 |
ColaEuphoria | most people who write C++ anyway are writing C functions and just putting them into classes | 02:33 |
ColaEuphoria | i could literally title the video with "C++" in it and nobody would even notice :^) | 02:33 |
drobilla | Just a tediously paced way of saying what should be in comments | 02:33 |
ColaEuphoria | perhaps | 02:33 |
ColaEuphoria | I can sense that you're not a visual person in the slightest :) | 02:35 |
drobilla | Actually I am a visual thinker | 02:36 |
drobilla | This just isn't visual subject matter | 02:36 |
drobilla | Anyway, there goes an hour | 02:37 |
drobilla | Though I will say that videos are fantastic for generating hype, showing off, and getting people interested | 02:55 |
drobilla | Trying to make them serve as programming documentation as well just makes them shittier at doing that job | 02:55 |
ColaEuphoria | oh, it definitely wouldn't even try to encapsulate all the needed knowledge to write LV2 plugins | 02:56 |
ColaEuphoria | as a matter of fact | 02:56 |
ColaEuphoria | i was thinking about, instead of making a lv2-specific thing | 02:56 |
ColaEuphoria | just a general synthesizer/plugin-writing series | 02:57 |
ColaEuphoria | and just happen to be doing it with lv2 | 02:57 |
ColaEuphoria | Hell, Ardour is on Windows officially now, so there's definitely much more potential for hype there | 02:58 |
ColaEuphoria | it'd be a general video for people interested in plugin making, and lv2 doesn't have the bar to entry that VST does | 02:59 |
ColaEuphoria | and the LV2 tools are actually sensical to use | 02:59 |
drobilla | Plugin-wise there aren't even any, really | 02:59 |
drobilla | Though I should really roll up the validation stuff into an easy to use script that installs with the lv2 dist | 03:00 |
drobilla | The host situation is much worse, but also less important | 03:00 |
drobilla | Hm, a MIDI file player would be a good one (same as sampler, really), but there's nothing as ubiquitous as libsndfile for MIDI | 03:18 |
*** falktx` has joined #lv2 | 03:35 | |
*** falktx has quit IRC | 03:39 | |
ColaEuphoria | God damn it. Has anyone actually gotten nanogui to *work* outside of the provided example cpp files? It uses a fuckhuge cmake file and relies on 3 different toolkits already... | 05:44 |
*** deva has joined #lv2 | 05:47 | |
*** JaVelDa has quit IRC | 06:21 | |
*** sigma6 has joined #lv2 | 07:07 | |
*** falktx|work has joined #lv2 | 07:11 | |
ColaEuphoria | Alright I got it to compile and then run without complaining. I'd just like to check with you guys in the potential implications of using glfw for a plugin UI instead of pugl? | 07:59 |
ColaEuphoria | (using nanogui) | 08:00 |
*** ricardocrudo has joined #lv2 | 08:01 | |
falktx|work | you cannot use glfw for plugins | 08:01 |
falktx|work | it does not support embedding into other windows | 08:02 |
falktx|work | it also uses static/global data, which is a big no-no for plugins | 08:02 |
ColaEuphoria | alrighty then | 08:19 |
*** grejppi_ has joined #lv2 | 08:54 | |
*** grejppi has quit IRC | 08:58 | |
*** trebmuh has joined #lv2 | 09:12 | |
*** rncbc has joined #lv2 | 09:30 | |
*** grejppi_ is now known as grejppi | 11:21 | |
*** trebmuh has quit IRC | 11:44 | |
*** trebmuh has joined #lv2 | 11:46 | |
*** oofus_lt has joined #lv2 | 12:56 | |
*** trebmuh has quit IRC | 13:04 | |
*** trebmuh has joined #lv2 | 13:04 | |
*** deva has quit IRC | 14:52 | |
*** son0p_ has joined #lv2 | 15:13 | |
*** JaVelDa has joined #lv2 | 15:15 | |
drobilla | Yeah, GL world is really bad at that :/ | 15:48 |
drobilla | GLAD is....... weird | 15:51 |
*** oofus_lt has quit IRC | 15:53 | |
*** ssj71 has quit IRC | 16:05 | |
*** sigma6 has quit IRC | 16:05 | |
*** deva has joined #lv2 | 16:16 | |
drobilla | If you're feeling ambitious it looks like you just need to reimplement Screen to put it on a different backend | 16:18 |
*** falktx|work has quit IRC | 16:41 | |
*** ricardocrudo has quit IRC | 16:46 | |
*** ventosus has quit IRC | 18:02 | |
*** ventosus has joined #lv2 | 18:03 | |
*** NickLappy has joined #lv2 | 18:08 | |
*** unclechu has joined #lv2 | 18:27 | |
*** oofus_lt has joined #lv2 | 20:06 | |
*** oofus_lt has quit IRC | 20:20 | |
*** oofus_lt has joined #lv2 | 20:21 | |
*** deva has quit IRC | 20:42 | |
*** oofus_lt has quit IRC | 20:59 | |
*** ventosus has quit IRC | 21:00 | |
*** ventosus has joined #lv2 | 21:02 | |
*** edogawa has joined #lv2 | 21:02 | |
*** trebmuh has quit IRC | 21:06 | |
drobilla | ColaEuphoria: The examples don't evfen work for me. Fails to create context | 21:16 |
ColaEuphoria | interesting | 21:23 |
drobilla | La-de-da OpenGL3 | 21:26 |
ColaEuphoria | drobilla, would using NanoVG directly be a better candidate? | 21:33 |
drobilla | Apparently my system only supports 3.1, but glfw only does 3.2+ | 21:35 |
drobilla | ColaEuphoria: Depends on if you need the widgetey bits, I suppose | 21:36 |
drobilla | I'm tempted to say that running nanogui through the grinder and sticking it on pugl (and maybe cairo while we're at it) is tempting, but that's a project | 21:36 |
drobilla | At first glance nanovg doesn't seem to supply much if anything that cairo doesn't though | 21:37 |
drobilla | Nobody ever got fired for using cairo | 21:37 |
drobilla | The hard part is, of course, all that toolkit stuff like nesting, layout, event propagation, etc | 21:39 |
drobilla | Drawing is easy | 21:39 |
ColaEuphoria | there's an sdl port of nanogui and a couple of other ports | 21:40 |
ColaEuphoria | so people have already done it before | 21:40 |
ColaEuphoria | it's also more permissively licensed than cairo | 21:40 |
ColaEuphoria | i'm just not sure how much work is involved | 21:41 |
ColaEuphoria | maybe i could do a diff between the official nanogui and sdl gui to see what they changed :^) | 21:42 |
drobilla | Wel, assuming nanovg is plugin appropriate, just switching out glfw for pugl should be easy | 21:42 |
drobilla | Don't need to change all the drawing stuff, then | 21:42 |
drobilla | Bleh, cmake is horrible | 22:02 |
ColaEuphoria | yeah :/ | 22:03 |
drobilla | Heh, I'm all for defines, but GLFW_MOUSE_BUTTON_1 is a bit much | 22:13 |
drobilla | #define ONE 1 | 22:13 |
drobilla | Hmm... clipboard. There's a thing pugl doesn't do | 22:14 |
drobilla | I am being irresponsible and procrasting by trying this, if the running commentary doesn't make that obvious :) | 22:15 |
ColaEuphoria | procrastinating what? you at work? lol | 22:16 |
drobilla | The hierarchy of things I should be doing over fucking around with graphics toolkits because I'm too stupid to not be on IRC is very, very tall | 22:17 |
drobilla | The top of which does involve real actual work | 22:17 |
* drobilla is always "at work" | 22:17 | |
ColaEuphoria | Whatever the case, it's not in vain, at least. | 22:19 |
ColaEuphoria | My plugin is going to be nearing over 200 ports soon and it's becoming unwieldy without a ui :/ | 22:19 |
ColaEuphoria | 64 of the ports are used for the 8x8 fm matrix, and then all 8 operators have their own respective controls and envelopes | 22:21 |
drobilla | Yeah, we need better solutions for tons of controls | 22:23 |
ColaEuphoria | ideally i'd just be yanking all these ports out and use the atom port for ui communication | 22:24 |
* drobilla tries to figure out how to get cmake to use pkg-config | 22:29 | |
drobilla | Remember when we were talking about IDEs? This is the kind of shit IDE people make :P | 22:30 |
ColaEuphoria | cmake? yeah | 22:30 |
ColaEuphoria | the best part about cmake is that its makefiles don't have an uninstall target :) | 22:31 |
drobilla | Generating project files and stuff is a nice idea though | 22:31 |
ColaEuphoria | and then they try to justify it as being some kind of safety feature | 22:31 |
drobilla | It's just so, so, ugly, and yeah, the no uninstall thing is comically bad. UNIX is clearly a third class citizen in cmakeland | 22:31 |
*** edogawa has quit IRC | 22:37 | |
*** rncbc has quit IRC | 22:39 | |
* drobilla idly wonders why pugl/common.h exists as a separate header | 22:58 | |
drobilla | Right, so, it compiles | 23:04 |
drobilla | But nanovg uses shaders and setting that up fails and I know essentially zero about shader anything | 23:04 |
drobilla | 0:1(10): error: GLSL 1.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES | 23:08 |
drobilla | 23:08 | |
drobilla | Honestly. Ivy bridge is hardly ancient | 23:08 |
drobilla | Though I guess this is a driver thing | 23:10 |
drobilla | Sooooo just doesn't work on open source drivers at all? Nice. | 23:11 |
drobilla | Also, there is at least one static variable in nanogui | 23:12 |
drobilla | Has GL2 methods, but that just fails on a different shader | 23:16 |
drobilla | ColaEuphoria: Well, looks like nanovg's dependence on last week's shader version halts this one | 23:17 |
drobilla | At least for me | 23:17 |
drobilla | Ah, no, that's the ImageView shader in nanogui itself. example2 "runs" | 23:18 |
drobilla | Woo, got something to show | 23:22 |
drobilla | ColaEuphoria: http://drobilla.net/files/nanogui_pugl.png | 23:40 |
ColaEuphoria | damn, nice! | 23:57 |
ColaEuphoria | That's running in pugl?! | 23:58 |
drobilla | yep | 23:59 |
drobilla | Not sure if events are working correctly. The button click works, though | 23:59 |
drobilla | e.g. clicking the checkbox in example2 does nothing visible. Should it? | 23:59 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!