Thursday, 2016-09-01

*** rncbc has quit IRC00:09
*** unclechu has quit IRC00:45
drobillaIdeas for another example plugin that needs state and worker, but is still simple yet reasonable?01:46
ColaEuphoriadrobilla, perhaps an oscillator with loadable waveforms?01:50
ColaEuphoriaI 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 reasonable01:54
ColaEuphoriai feel like "state and worker" mixed with "simple yet reasonable" is a lost cause imo :/01:54
drobillaYeah, "simple" here basically means as unbelievably simple as possible without being ridiculous01:55
drobillaMeh.  Sampler is the obvious one, but that already exists01:55
ColaEuphoriaI was actually pondering *something* for a while01:56
ColaEuphoriaNow, again, this lies off the line of "simple"01:57
ColaEuphoriabut I was pondering the possibility of using LV2 plugins to actually record audio to disk/read it back/manage it in a project01:57
drobillaMaybe something pretty simple processing wise but with controls that inherently don't fit the control port thing...01:57
drobillaColaEuphoria: Yeah, a recorder has been on my hypothetical TODO list for a while01:58
drobillaColaEuphoria: Or a real sampler that also records among other fancy things01:58
ColaEuphoriaI feel like if the example-driven doc needs work, it's in the UI section01:59
drobillaPart 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 duplicated01:59
ColaEuphoriaI think an increasing number of us are erring on the side of not using big toolkits for plugin UIs01:59
drobillaThen I need to use/depend on yet another toolkit02:00
drobillaI mean, I don't think you're wrong, but blech02:00
ColaEuphoriaman02:00
ColaEuphoriawhy does UI work have to be so damn awful02:00
ColaEuphoriawell02:01
ColaEuphoriaone thing that *could* be done02:01
drobillaNot really my forte anyway.  Honestly it doesn't seem like a particularly good use of my time02:01
drobillaSeeing as how the bus factor of the basic mechanics of plugins and whatnot is pretty much 1, and I'm that guy02:02
ColaEuphoriais 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 developer02:02
drobillaSure.  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 one02:04
ColaEuphoriawell02:04
ColaEuphoriapeople who do /any/ plugin ui work already do that if they aren't hiding behind juce or something02:05
ColaEuphoriait'd be better to get a super minimal UI working just to show how to get it working on the lv2 side02:06
drobillaThere already is one02:06
drobillaThe fact that it's Gtk doesn't really change anything02:06
ColaEuphoriaunderstandable02:06
drobillaThe details of getting your native window handle and stuff aren't there, but that's different for every toolkit/library anyway02:06
drobillaBut hey, feel free02:07
ColaEuphoriaeh02:08
ColaEuphoriaright now i'm more interested in getting my synth up02:08
ColaEuphoriait had 115 ports, and envelopes just gave it about a hundred more02:09
drobillaWell, welcome to why there's no such example02:09
ColaEuphoriait's becoming quite unwieldy without a ui..02:09
ColaEuphoriahaha yeah02:09
ColaEuphoriawell, the gtk example really is good enough02:10
drobillaI want the example to develop the C++ bindings, by the way02:10
ColaEuphoriai think the onus is on the developer to learn how to integrate their TK of choice02:10
drobillaWhich will probably highlight some holes in the spec and generally further a clean-this-mess-up effort and so on02:11
drobillaBut I'm not even going to pretend to give even a hint of a crap about UI examples right now ;)02:11
ColaEuphoriaYou think C++ bindings will help that?02:11
ColaEuphoriaOr could you elaborate? That was pretty vague.02:12
drobillaYes.  Nice bindings make all the boilerplate go away02:12
drobillaWhich highlights the annoying things that can't go away02:12
drobillaLike, say, connect_port and the pointless local state you need to maintain for it02:13
drobillaBut that's just a side-issue02:13
drobillaOutside 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 plugins02:14
drobillaPart 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 yadda02:15
drobillaU've02:15
drobillabee02:15
drobillan adding utilities to reduce that as much as possible in C, too02:15
* drobilla can't type02:15
drobillaBut C++ can make the fact that the spec is extensible disappear almost entirely, at least from plugin code02:16
ColaEuphoriahonestly02:17
ColaEuphoriafrom a plugin perspective02:17
ColaEuphoriai haven't felt like i had to write a ridiculous amount of boilerplate02:17
ColaEuphoriausing opengl was (still is) way more overwhelming02:17
drobillaSure, it's not that bad02:17
ColaEuphoriaif i'm not mistaken, VST makes you do weird things like change sample rate02:18
ColaEuphorialike damn02:18
drobillaI am just generally trying to take a plugin code centric angle here, where I make the prettiest thing possible02:18
drobillaThings that aren't pretty will get made that way02:19
drobillaProbably more dramatic changes if I ever get the time, like putting everything in the same directory, no more URI stuff, etc02:20
ColaEuphoriaif 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
drobillalol02:20
ColaEuphoriaI feel like people intimidated by LV2, if not the graph database concept, is nothing more than the lack of the ultra handholding02:21
ColaEuphoriaI feel like people could learn a lot from video tutorials like SDL people generally rely on02:21
drobillaMeh.  Even in a universe where such a thing could happen, how many people are going to use a bloody LV2 IDE02:23
ColaEuphoriahave a standard? put an IDE around that shit. hype it to the moon and back. guaranteed userbase02:23
drobillaBetter 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 margin02:23
drobillaOther things should exist if and only if that doesn't work for the thing that needs documenting02:24
drobillaPeople sufficiently knowledgeable to write C/C++ code in the first place have their tools already, and they like them02:25
drobillaI'm sure that's true in some world or another catering to complete and total noobs, but not in this one02:25
drobillaThere's not really anything for such a thing to do anyway02:26
ColaEuphoriaI was kidding about the IDE thing, but youtube videos could help a lot imo02: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
drobillaI honestly can't imagine a single topic in LV2 better addressed by a youtube video than text documentation02:27
ColaEuphoriait can't02:27
ColaEuphoriaand it won't02:27
ColaEuphoriabut the viewer will get a foundational understanding02:28
ColaEuphorianobody knows SDL by only watching youtube videos02:28
ColaEuphoriabut they're a lot easier to digest than to just jump into the wiki02:28
ColaEuphoriayou can get your feet wet with the video02:28
drobillaI generally advise people to explicitly not do that02:28
ColaEuphoriait still requires more patience to read through anything than to just sit in front of a screen and see it happen02:29
ColaEuphoriai'm not saying video is *better*02:30
drobillaSDL is a graphics library02:30
ColaEuphoriabut it would be an invaluable asset to have02:30
drobillaThat kind of thing works well for graphics for obvious reasons02:30
drobillaI don't even want people to seek foundational understanding anyway.  That's a rabbit hole that leads to "this is so complicated"02:31
drobillaI actively work to make things encourage people to *not* do that, actually02:31
drobillaExamples examples examples.02:31
ColaEuphoriaWhat I meant is to make a series of example videos using LV202:32
ColaEuphoriaI've been thinking about doing it for a while, actually02:32
drobillaI honestly can't imagine why anyone would watch a video about writing C code02:32
drobillaBut I'm a grumpy old man02:32
ColaEuphoriaand I'm 2002:33
ColaEuphoriamost people who write C++ anyway are writing C functions and just putting them into classes02:33
ColaEuphoriai could literally title the video with "C++" in it and nobody would even notice :^)02:33
drobillaJust a tediously paced way of saying what should be in comments02:33
ColaEuphoriaperhaps02:33
ColaEuphoriaI can sense that you're not a visual person in the slightest :)02:35
drobillaActually I am a visual thinker02:36
drobillaThis just isn't visual subject matter02:36
drobillaAnyway, there goes an hour02:37
drobillaThough I will say that videos are fantastic for generating hype, showing off, and getting people interested02:55
drobillaTrying to make them serve as programming documentation as well just makes them shittier at doing that job02:55
ColaEuphoriaoh, it definitely wouldn't even try to encapsulate all the needed knowledge to write LV2 plugins02:56
ColaEuphoriaas a matter of fact02:56
ColaEuphoriai was thinking about, instead of making a lv2-specific thing02:56
ColaEuphoriajust a general synthesizer/plugin-writing series02:57
ColaEuphoriaand just happen to be doing it with lv202:57
ColaEuphoriaHell, Ardour is on Windows officially now, so there's definitely much more potential for hype there02:58
ColaEuphoriait'd be a general video for people interested in plugin making, and lv2 doesn't have the bar to entry that VST does02:59
ColaEuphoriaand the LV2 tools are actually sensical to use02:59
drobillaPlugin-wise there aren't even any, really02:59
drobillaThough I should really roll up the validation stuff into an easy to use script that installs with the lv2 dist03:00
drobillaThe host situation is much worse, but also less important03:00
drobillaHm, a MIDI file player would be a good one (same as sampler, really), but there's nothing as ubiquitous as libsndfile for MIDI03:18
*** falktx` has joined #lv203:35
*** falktx has quit IRC03:39
ColaEuphoriaGod 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 #lv205:47
*** JaVelDa has quit IRC06:21
*** sigma6 has joined #lv207:07
*** falktx|work has joined #lv207:11
ColaEuphoriaAlright 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 #lv208:01
falktx|workyou cannot use glfw for plugins08:01
falktx|workit does not support embedding into other windows08:02
falktx|workit also uses static/global data, which is a big no-no for plugins08:02
ColaEuphoriaalrighty then08:19
*** grejppi_ has joined #lv208:54
*** grejppi has quit IRC08:58
*** trebmuh has joined #lv209:12
*** rncbc has joined #lv209:30
*** grejppi_ is now known as grejppi11:21
*** trebmuh has quit IRC11:44
*** trebmuh has joined #lv211:46
*** oofus_lt has joined #lv212:56
*** trebmuh has quit IRC13:04
*** trebmuh has joined #lv213:04
*** deva has quit IRC14:52
*** son0p_ has joined #lv215:13
*** JaVelDa has joined #lv215:15
drobillaYeah, GL world is really bad at that :/15:48
drobillaGLAD is....... weird15:51
*** oofus_lt has quit IRC15:53
*** ssj71 has quit IRC16:05
*** sigma6 has quit IRC16:05
*** deva has joined #lv216:16
drobillaIf you're feeling ambitious it looks like you just need to reimplement Screen to put it on a different backend16:18
*** falktx|work has quit IRC16:41
*** ricardocrudo has quit IRC16:46
*** ventosus has quit IRC18:02
*** ventosus has joined #lv218:03
*** NickLappy has joined #lv218:08
*** unclechu has joined #lv218:27
*** oofus_lt has joined #lv220:06
*** oofus_lt has quit IRC20:20
*** oofus_lt has joined #lv220:21
*** deva has quit IRC20:42
*** oofus_lt has quit IRC20:59
*** ventosus has quit IRC21:00
*** ventosus has joined #lv221:02
*** edogawa has joined #lv221:02
*** trebmuh has quit IRC21:06
drobillaColaEuphoria: The examples don't evfen work for me.  Fails to create context21:16
ColaEuphoriainteresting21:23
drobillaLa-de-da OpenGL321:26
ColaEuphoriadrobilla, would using NanoVG directly be a better candidate?21:33
drobillaApparently my system only supports 3.1, but glfw only does 3.2+21:35
drobillaColaEuphoria: Depends on if you need the widgetey bits, I suppose21:36
drobillaI'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 project21:36
drobillaAt first glance nanovg doesn't seem to supply much if anything that cairo doesn't though21:37
drobillaNobody ever got fired for using cairo21:37
drobillaThe hard part is, of course, all that toolkit stuff like nesting, layout, event propagation, etc21:39
drobillaDrawing is easy21:39
ColaEuphoriathere's an sdl port of nanogui and a couple of other ports21:40
ColaEuphoriaso people have already done it before21:40
ColaEuphoriait's also more permissively licensed than cairo21:40
ColaEuphoriai'm just not sure how much work is involved21:41
ColaEuphoriamaybe i could do a diff between the official nanogui and sdl gui to see what they changed :^)21:42
drobillaWel, assuming nanovg is plugin appropriate, just switching out glfw for pugl should be easy21:42
drobillaDon't need to change all the drawing stuff, then21:42
drobillaBleh, cmake is horrible22:02
ColaEuphoriayeah :/22:03
drobillaHeh, I'm all for defines, but GLFW_MOUSE_BUTTON_1 is a bit much22:13
drobilla#define ONE 122:13
drobillaHmm... clipboard.  There's a thing pugl doesn't do22:14
drobillaI am being irresponsible and procrasting by trying this, if the running commentary doesn't make that obvious :)22:15
ColaEuphoriaprocrastinating what? you at work? lol22:16
drobillaThe 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 tall22:17
drobillaThe top of which does involve real actual work22:17
* drobilla is always "at work"22:17
ColaEuphoriaWhatever the case, it's not in vain, at least.22:19
ColaEuphoriaMy plugin is going to be nearing over 200 ports soon and it's becoming unwieldy without a ui :/22:19
ColaEuphoria64 of the ports are used for the 8x8 fm matrix, and then all 8 operators have their own respective controls and envelopes22:21
drobillaYeah, we need better solutions for tons of controls22:23
ColaEuphoriaideally i'd just be yanking all these ports out and use the atom port for ui communication22:24
* drobilla tries to figure out how to get cmake to use pkg-config22:29
drobillaRemember when we were talking about IDEs?  This is the kind of shit IDE people make :P22:30
ColaEuphoriacmake? yeah22:30
ColaEuphoriathe best part about cmake is that its makefiles don't have an uninstall target :)22:31
drobillaGenerating project files and stuff is a nice idea though22:31
ColaEuphoriaand then they try to justify it as being some kind of safety feature22:31
drobillaIt's just so, so, ugly, and yeah, the no uninstall thing is comically bad.  UNIX is clearly a third class citizen in cmakeland22:31
*** edogawa has quit IRC22:37
*** rncbc has quit IRC22:39
* drobilla idly wonders why pugl/common.h exists as a separate header22:58
drobillaRight, so, it compiles23:04
drobillaBut nanovg uses shaders and setting that up fails and I know essentially zero about shader anything23:04
drobilla0:1(10): error: GLSL 1.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES23:08
drobilla23:08
drobillaHonestly.  Ivy bridge is hardly ancient23:08
drobillaThough I guess this is a driver thing23:10
drobillaSooooo just doesn't work on open source drivers at all?  Nice.23:11
drobillaAlso, there is at least one static variable in nanogui23:12
drobillaHas GL2 methods, but that just fails on a different shader23:16
drobillaColaEuphoria: Well, looks like nanovg's dependence on last week's shader version halts this one23:17
drobillaAt least for me23:17
drobillaAh, no, that's the ImageView shader in nanogui itself. example2 "runs"23:18
drobillaWoo, got something to show23:22
drobillaColaEuphoria: http://drobilla.net/files/nanogui_pugl.png23:40
ColaEuphoriadamn, nice!23:57
ColaEuphoriaThat's running in pugl?!23:58
drobillayep23:59
drobillaNot sure if events are working correctly.  The button click works, though23:59
drobillae.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!