Friday, 2014-01-31

*** HarryHaaren has quit IRC00:25
drobillafalktx: Well, listening for any of them has always been what they Should™ do00:51
drobillafalktx: So basically that continues to be best practice, until we just ditch the other types and simplify things00:52
drobillafalktx: The examples always did this.  I am not sure what every plugin in the wild does.  I'd just leave whatever you're doing for a while, if it works.00:53
drobillafalktx: Should at least wait until the next release in any case.00:53
drobillafalktx: Updating is fine though.  Nothing has actually broken in a hard way.00:53
drobillafalktx: Oops.  Thanks, fixed those comments.00:53
drobillafalktx: Hmmmmm, why didn't I get those warnings...00:54
*** unclechu has quit IRC01:00
falktxI think I have CV ports working now. what's a good plugin/setup to test it?01:07
*** NickSB has quit IRC01:14
*** NickSB has joined #lv201:15
falktxdrobilla: does CV have bounds? and a default? I'm now I have the CV port buffers all zero when (in the graph) it's not connected to anything01:32
falktx*right now01:33
drobillafalktx: https://github.com/blablack/ams-lv201:33
drobillafalktx: Basically they are audio port buffers + control port data.  So, yes.01:33
drobillaI guess the reasonable default would be -1, 0, 1 if not01:34
falktxis that also the same in ladspa? I'm mixing ladspas and lv2s here.. :)01:34
falktxdrobilla: ams.lv2 is the avw.lv2 project renamed, right?01:35
drobillafalktx: yeah01:47
drobillafalktx: LADSPA has no such concept01:48
falktxI'm having a small issue in pugl on windows02:09
falktxwhen the host window moves (the one that has a pugl UI embed) the UI doesn't trigger a repaint02:10
drobillaI need to bring a drive to campus tomorrow and copy the windows VM image02:10
falktxI'm now seeing if I can find a fix02:10
falktxI get no new events when I move the window02:15
*** Anchakor_ has quit IRC02:29
*** triune has quit IRC04:40
*** triune has joined #lv204:45
*** edogawa has joined #lv208:07
*** Anchakor_ has joined #lv208:35
*** abique has joined #lv209:39
*** Anchakor_ has quit IRC09:48
*** Anchakor_ has joined #lv209:50
*** unclechu has joined #lv210:13
*** triune has quit IRC11:46
*** triune has joined #lv211:53
*** unclechu has quit IRC12:26
*** NickSB has quit IRC12:59
*** NickSB has joined #lv213:01
*** falktx has quit IRC13:17
*** triune has quit IRC13:18
*** triune has joined #lv213:24
*** triune has quit IRC14:19
*** triune has joined #lv214:25
*** edogawa has quit IRC15:31
*** edogawa has joined #lv215:31
drobillaI don't know why those sizeof(LV2_Atom_Object) - sizeof(LV2_Atom) were in there anyway15:44
drobillasizeof(LV2_Atom_Object_Body)15:44
drobillaThe need for two separate types for each there really sucks, just body type would be better, but I couldn't rely on C99 var-length structs15:44
drobillaI guess I could have just ommitted the types for the whole atom entirely.  Seems like that would make code uglier, though.  LV2_ATOM_BODY() everywhere15:45
drobilla(Re: falktx's patch above)15:45
*** triune has quit IRC15:50
*** triune has joined #lv215:58
*** ssj72 has quit IRC16:19
*** triune has quit IRC16:21
*** triune has joined #lv216:28
*** ssj72 has joined #lv216:36
*** Anchakor_ has quit IRC16:57
*** Anchakor_ has joined #lv216:57
*** triune has quit IRC17:52
*** HarryHaaren has joined #lv217:57
*** triune has joined #lv218:00
*** abique has quit IRC18:52
*** abique has joined #lv219:16
*** mlpug has joined #lv219:40
*** abique has quit IRC19:42
*** HarryHaaren has quit IRC19:45
*** ricardocrudo has joined #lv220:01
*** HarryHaaren has joined #lv220:22
*** ricardocrudo has quit IRC20:47
*** mlpug has quit IRC21:07
drobillaAnchakor: http://drobilla.net/files/lac2014_lv2_atoms.pdf21:21
*** NickSB2 has quit IRC21:33
Anchakordrobilla: it's really good so far, I made a few comments in sidelines: http://mud.cz/lac2014_lv2_atoms.pdf.pdf22:06
Anchakorlet me know if you can open that pdf22:06
Anchakorwhen I tried from web, evince said it is damaged, but locally it read it22:06
drobillaAnchakor: it's been bitmapified, but it opens.  thanks.22:06
* Anchakor finally had an opportunity to really put xournal to use22:07
Anchakordrobilla: I think most important point is that I am confused if AtomPort is associated with just one atom type or it is a channel to send any atoms through22:10
drobillaIn theory you can atom:supports several.  In practice it's basically always Sequence22:11
drobillaAnchakor: You seem to be ascribing more to it than it is.  It's literally connected directly to LV2_Atom* which is what I was trying to convey22:12
AnchakorI think that part should be expanded and this explained more thoroughtly22:14
Anchakorlike how does plugin/host he can write/read to the LV2_Atom22:14
Anchakors/host/host know/22:15
drobillaI will try22:15
drobillaBut I'm not sure what I can say for simple inputs other than, well, you connect it22:16
drobillaJust like there isn't much to be said about pointing to a float22:16
Anchakoralso "connect" term is for most people associated with jack connections22:16
drobillait's literally in the API, and LADSPAs.  If you can imagine a better replacement that isn't a big string of repetitive words...22:17
drobillaI guess just "points"22:17
drobillaexplicitly mentioning float* instead of / alongside "audio buffer" may help22:18
Anchakorno that is fine22:19
Anchakorbut "AudioPort is22:19
drobillaWell, apparently not.22:19
Anchakorconnected to an audio buffer"22:19
Anchakoris worste then "AudioPort points to an audio buffer"22:19
Anchakorworse*22:19
drobillaI had "directly" in there but figured it wasn't helping.22:20
drobillayou can also think of it as a "contains" relationship22:20
drobillaultimately LV2 ports are pointers.  an AtomPort is simply an LV2_Atom*22:21
drobillaI need to convey how utterly mundane and straightforward this concept is better22:21
drobillaPreferably in two sentences or so.22:21
Anchakorok, now so if AtomPort points to LV2_Atom_Int, some word about how the synchronization between reads and writes happens22:22
Anchakor...would be good22:23
drobillawhat synchronization?22:23
drobillathere's a run() method.22:23
drobillaI kind of assume plugin 101 as a basis22:24
Anchakorok for some reason I always assumed one AtomPort is enough both for sending and recieving all atoms from/to a host22:25
drobilla('connect' is just a really fucking stupid way to pass a parameter to run() anyway.  Shouldn't have adopted that from LADSPA in the first place)22:25
drobillaI guess I could mention that it is either an input or output for those unfamiliar with LV222:25
Anchakorand with Sequence, you can send xor recieve any atoms right?22:26
drobillaGiven the context I'm hesitant to even use those words.22:28
drobillaYou can have an input sequence, and an output sequence.22:28
drobillain *separate* ports22:28
Anchakoryeah sure22:28
Anchakorbut in the sequence you can combine any atoms22:29
*** falktx has joined #lv222:29
Anchakorright?22:29
drobillaYep.22:29
Anchakoreven a sequence in a sequence? :)22:29
drobillaYep.22:30
drobillaAll kinds of fun ;)22:30
drobillaOne could even argue a Sequence ia a good representation for a note, I suppose.22:31
drobilla(... but let's not go there)22:31
Anchakorok great, well you see what I was confused about, so you know what probably others would too :)22:31
* falktx wants to get ingen inside carla and carla inside ingen22:31
drobillaI believe thinking of one as both an input and output was the main problem22:31
Anchakoryeah22:32
drobillaI will revise based on these comments when finished sorting out Ingen22:32
drobillaSince this is what I was supposed to be doing today anyway :)22:32
drobilla(some levels removed from what I really actually am supposed to be doing, naturally)22:32
falktxdrobilla: will you ever add back external ui to ingen? I can make all my plugs (carla things) not dependant on instance-data, but I need external ui22:33
drobillafalktx: add back?  I don't think it was ever there in the first place.22:33
Anchakorso basically AtomPort is fetched/pushed on every jack period right?22:33
drobillafalktx: in any case, no.  Sorry.22:33
Anchakor(every time run() is executed)22:34
falktxdrobilla: it was there, I remember seeing linuxdsp UIs working22:34
falktxdrobilla: not embed, only external22:34
drobillaIngen does not and will not ever support things I personally consider counter-productive.22:34
drobillafalktx: Nope, embed as X11UI22:34
drobillafalktx: Which linuxdsp implemented quite some time ago22:34
drobillaOne of the originals, in fact22:34
falktxdrobilla: I'm not sure how I can force a python based UI (and full blown app like carla) to work as X11UI...22:35
falktxbut I'll try22:35
drobillaA nice framework to do so would be a wonderful thing.22:35
wrlfalktx: may be prudent to develop some sort of a shim22:35
drobillaSorry, but I deal with other people's shit SO much.22:35
drobillaIngen is the one damned thing I get to do my way22:35
wrlan osc/ui bridge that works as a part of the plugin itself22:35
drobillaIt's also basically one of the only things I even enjoy working on at all, which I doubt is a coincidence :)22:36
drobillaIntuitively I'd expect if you can write a UI in python whatsoever you can get the window handle for it, but I'm not familiar with such things.22:37
wrldrobilla: wait, without instance-access, the only way a UI can communicate back to the plugin itself is via exposed ports?22:37
falktxwrl: I already have it working as external, just need to pass the X11 window handle and try to do QX11Embed magic I guess22:37
wrlthe issue there may be running python inside the address space of the host22:37
wrlor perhaps running several of them22:38
drobillawrl: I'm not sure what "exposed" means, but yes.  That is the Proper™ way to communicate.22:38
wrldrobilla: i suppose there's not another sort of port. okay, noted.22:38
falktxwrl: I create a new process for this22:38
falktxvfork+exec stuff22:38
drobillaI totally get how me both demanding good solutions and not having the time to personally do everything is frustrating, but oh well.  Suil was me personally investing the time to make external go away.  Other languages weren't really an issue22:39
drobillaI'd love to make that easily possible without imposing on hosts.22:40
falktxdrobilla: I think it can work, as long as I use qt422:40
falktxwith qt5 qx11embed is no longer available22:40
drobillaoh, great.22:41
falktxthis is why rui had to implement external-ui22:41
falktxwith the move to qt5 there's no x11 embed anymore22:41
drobillaSurely it must be possible to do xembed with qt5 somehow22:41
falktxmore hackery :)22:41
drobillaThe fuck kind of insane regression is that?22:41
drobillaThe stubborn refusal of that fucking kludge to die has me wondering if the LV2_UI interface itself shouldn't just make a bunch of similar assumptions, rather than making it a type22:43
drobillaBut doing that now would mean we'd have even more problems, so whatever22:43
falktxdrobilla: with qt5 afaik the though was to make the paint backend modular. that's why wayland works there now22:44
drobillaThat transition is going to be super fun no matter how you slice it.22:45
falktxqt5 as shared lib can be using NOT x1122:45
falktxexposing a qx11embed class would be very tricky22:45
drobillaOnce again we didn't make the struct extensible, so basically screwed for changing it now22:45
drobillaBut having a command(char* name, ...) method on UIs would do22:46
drobillamaybe URI to avoid the obvious problems, but whatever.22:46
drobillathen, a UI can either expose an actual widget, or not, along with a type22:46
drobillaand if that type isn't something the host can actually directly embed, the show command will pop it up22:46
drobillaor something along those lines22:46
drobillaWell, as it happens, there was discussion earlier (myself and rgareus) about how exposing non-portable widget types sucks anyway, having to describe a bunch22:50
falktxcan't we just pass some options to the UI for the missing data?22:51
drobillaMaybe we can define a new "widget" type for this, which also has show/hide or whatever (preferably extensibly), and everyone's happy using just that one?22:51
falktxright now I'm using options to tell the UIs about bufferSize and sampleRate22:51
drobillafalktx: yeah, but not to add methods to the UI22:51
falktxextension_data() ?22:52
drobillaSure, that's what it's for.22:53
falktxdrobilla: one thing we might be missing now is the X11 display22:53
falktxI'm not sure though, haven't tested plugins in Xinerame/TwinView yet22:53
drobillaI forget how I got the display.22:53
drobillaI get it from the parent window, which is passed22:54
falktxoh, a X11 Window can report its display?22:54
drobillaHm, actually, that's GDK_WINDOW_XDISPLAY, in the Gtk wrapper, so Gtk specific22:56
drobillaI'm not sure you can get the display from an X window22:56
Anchakorhmm can you run a webserver in a worker thread?22:56
drobillaI wonder what actual X11 uis do internally22:57
drobillaAnchakor: you can't do continuous anything in the worker thread, it's for processing 'units' of work22:57
drobillaAnchakor: One of the main points is that there may be *one* worker thread in a many-plugin host22:58
drobillaIt is *not* a "make me my own private thread" API22:58
Anchakorok22:58
Anchakorbut you can run a separate thread or process from plugin anyway22:58
drobillaright.  to do stuff like that there is no point in relying on host support.22:59
drobillathe main point of the worker is that every plugin making a bunch of threads is really not so great23:00
drobillawell, also removed non-portable stuff from plugins which is nice23:00
falktxpianoteq actually creates 2 threads in activate() so it can render in parallel23:00
drobillaand forces plugins to do non-RT things properly since it can only work one way23:00
Anchakorfalktx: so if you REALLY want to do external UI, you can do it in HTML :)23:01
drobillaAnyway, I am all for making a widget type that both makes having to list many non-portable UIs in data, and the need for external, go away.23:01
Anchakor+1 to that23:02
drobillaEspecially with the X11 => ? transition23:02
drobillaThe idea being that *any* UI can degrade by supporting the show and hide commands23:02
drobillaThis point of contention is fucking shitty.23:03
drobillaI don't think me embracing external would actually make it any less shitty.23:03
drobillaWe need to just remove this from affecting the host<=>ui interface in such fundamental ways at al23:03
falktxI don't think external-ui is going away23:04
falktxit's a good fast solution for when there's no UI types available23:04
drobillaWell, that specific extension would if there was a better alternative.  That's the point.23:04
falktxfor example, a macos Carbon UI23:04
falktxI don't think any reasonable lv2 host would want to work on an old API23:05
drobillaHaving a universal "widget" type that has show/hide commands AND an accessor for the window/whatever pointer23:05
falktxanyway, the currention situation is not so bad23:05
drobillaIt's quite bad, actually.23:05
falktxI'm waiting for wayland to reach debian testing and then I'll do some tests23:05
falktxdrobilla: could be worse ;)23:06
drobillaIt doesn't seem bad when you've already implemented everything, naturally.23:06
drobillaPart of my job is seeing these problems, and solving them with new things.23:06
drobillaPeople get grumpy about anything changing ever, sure, but c'est la vie.23:06
falktxdrobilla: that reminds me, could we have an option for the initial UI width+height?23:06
falktxdrobilla: that would avoid an extra UI resize before showing the UI23:07
drobillafalktx: I guess.  Can't hurt.23:07
drobilla"can't hurt."  properties are such wonderful things.23:07
drobillaokay, anyway, fuck, I need to get back to actually doing work23:07
falktxok, sorry, me too23:08
drobillabut I think solving all these problems in one widget type and/or extension_data API thingie is really blatantly The Solution, now that I think of it23:08
drobillaWhenever possible, embedders get their widget.  If not, there's show/hide commands.23:08
drobillaBoom.  rift healed.23:08
drobilla... come to think of it, why the hell was external-ui implemented as a widget type in the first place?23:09
falktxwon't that make the UIs "external" ?23:09
falktxdon't ask me...23:10
drobillaIt would make them optionally external.23:10
falktxthat sounds great23:10
drobillaWell, this entire discussion/solution would have happened years ago if Nedko actually bothered, but let's not go there.23:10
falktxas long as the UI is allowed to refuse to use embed. can I haz that?23:10
drobillafalktx: Either one is a pain in somebody's ass, so probably they'd be able to just not provide either23:11
drobillaI'd have to think about the most backwards compatible thing here, I dunno.23:12
drobilla6pm, fuck me.  more on that later :P23:13
drobillaToday on: How IRC Cost Me My PhD23:13
falktxjust one thing (and I'll shutup later): if an UI refuses to use embed, make it so that I can still get a handle to it23:16
drobillafalktx: ? they are the same thing23:16
falktxI like to have the handle directly so that I can tell X11 the transient hint23:16
drobillayou can either get a widget pointer, or not23:16
drobillathat handle is precisely the thing I want, and the reason I hate people falling back to external-ui23:17
falktxdrobilla: it's hard to explain. maybe an UI can get us a handle but not support embed23:17
drobillait is effectively equivalent to "possibly embeddable"23:17
drobillafalktx: Embedding is the host's problem, the way I see it23:17
falktxbut the plugin needs to support at least ui-resize for it to work properly23:17
drobillaI still doubt that part23:18
drobillabut 'support ui-resize' is a well-defined thing you can either do or not, so fine.23:18
falktxanyway, talk later, don't want to bother you much23:19
drobillais 'I don't support embedding for nebulous undefined reasons' going in the API?  well, no, clearly not.23:19
drobillaThis is infinitely better as a mailing list discussion anyway, but I always think that.23:20
* falktx hates mailing lists23:20
drobillaPeople with way too much free time generally do23:21
drobillaI remember that.  It was nice. :)23:21
drobillaI wish someone was working on a unified discussion bridge that wasn't also trying to ruin it for better profit margins23:22
drobillaBut failing that I'll stick to the thing that's worked for decades23:22
AnchakorI don't really see IRC<->mailinglist bridge working :)23:23
drobillaSuffice to say it's unbelievably shitty for me to effectively either have to be constantly so distracted and irritated that I can't get any work done whatsoever, OR, be completely in the dark about a project I maintain / benevolently dictate23:23
drobillaAnchakor: That's more of a forum/mailing list idea, admittedly23:23
drobillaIRC is in the exact same box of toxic shit as Facebook is for me.  Both occasionally useful, but net effect is crippling.23:24
drobillaThe irony of going on about it on a meta level like this makes it self-evident really :)23:25
AnchakorI'd prefer some decent forum software which works more IM-like, something like reddit which you can install on your own server, but without that downvote bullshit23:25
drobillaOn that, I noticed some project hosting a stack overflow -like thing23:25
drobillaIt would be great if people'd use something like this for LV2 stuff23:26
* drobilla loves him some downvotin'23:26
drobillaBasically ANYTHING non-real-time would be REALLY great23:26
falktxa phpbb forum!23:27
drobillaOkay, well, ANYTHING less lame than that23:27
drobilla:)23:27
falktxa reddit subreddit!23:28
drobillawhat the heck was that project...23:28
falktx /r/lv2 ?23:28
Anchakorphpbb is so bad23:28
drobillaI guess question things like http://askbot.org/en/questions/ don't really do discussion23:29
*** Gethiox has joined #lv223:30
drobillaI really think it would help LV2 to have more shiny and community going on.  Maybe the top level trac needs to die, even.23:30
drobillaWhat we need is sufficient popularity to be able to outsource this to quasi-hacker types who aren't about to write a bunch of C anyway :)23:31
drobillaI don't know.  I design archictures, not PR.  I am so mega bad at this.23:32
drobillaarchitectures*23:33
Anchakorwell such people aren't going to write some amazing dsp code anyway23:34
drobillaRight.  It's questionable whether a shinier public face would actually result in anything tangibly better anyway.23:35
drobillaUltimately LV2 was explicitly designed as a framework for Those Who Can to be able to do what they want23:36
drobillaWhich is more or less how it's used23:36
Anchakoryeah, mission successful so far23:38
drobillaMore or less.  Complainers always gonna complain :)23:38
drobillaWe didn't do everything right, that's for sure.23:38
drobilla... but we did it23:38
drobillaI guess if I hung around user lists and such more I'd get more enthusiasm and less constant criticism and hate23:39
drobillaThey don't care about the how at all23:39
Anchakorgroundbreaking would be if ingen was running on windows, inside windows DAWs and hosted lv2 plugins, this would make windows geeks make lv2 plugs to make their modular synths23:39
drobillaAnchakor: I do like the idea of briding into other plugin specs23:40
drobillaVST makes this way harder than AU though23:40
Anchakorhmm I thought VST was pretty dumb23:40
drobillaPortability is important, large part of the reason I've been trimming my external dependency fat23:41
falktxvst is very limited, which is a good thing sometimes23:41
Anchakorit probably needs fixed number of ports right?23:41
drobillaIIRC it's because AU has a dynamic discovery mechanism and VST does not, so you'd have to statically wrap23:41
drobillaI could make ingen talk over a socket and run as a VST easily enough though23:41
Anchakoryou could make 4x4 in/out ingen VST free and 12x12 paid for to finance your development :)23:42
drobillaYeah, I probably could have lived off it somehow if I actually tried23:42
Anchakorthough probably in windows DAWs you don't usually need more then 2 stereo inputs and 1 output and 1/1 midi in/out23:43
drobillaIf you want actual money, OSX is more lucrative23:43
drobillaPlenty of people use Windows........... in their mom's basement and aren't giving you shit23:44
falktxwindows is filled with piracy23:44
Anchakorthat's what I imagine too :)23:44
falktxeven big "musicians" use pirated software, it's very sad23:44
drobillaMac has a much more paying-friendly culture23:44
drobillaI'd rather crowdsource development than try to sell software though23:45
falktxwell, to get a mac you have to have good money  first23:45
drobillaUltimately I don't really agree with the latter anyway23:45
*** edogawa has quit IRC23:46
drobillaWell, sort of, but ultimately if you're going to drop $thousand-something on a computer, it can be a mac, and very often is.23:46
drobilla(and with anybody seriously producing music, very very very very very often is)23:46
drobillaAnyway, as far as Ingen goes, being released for Lignux first kind of needs to happen before any of that :)23:47
drobillaLAD doesn't pay me, grad school does, so grandiose full time efforts like that aren't happening.23:48
Anchakoryeah, good luck with that and hope you get more free time :)23:48
drobillaMaking an LV2 "SDK" by mashing all my libs into one tarball would probably help on other platforms quite a bit though23:48
drobillaWell, I have all the free time I want.  Spent all day today on this crap.23:49
drobillaIt just contributes to the washing out and/or never graduating bank account.23:49
drobillaI don't think I want an academic job to begin with.  It's hard to care.23:50
drobillaBuuuuuuuuuut making money on FLOSS gets back to the PR thing23:50
drobilla"Hi, community!  I'm that asshole you may have heard of!  Give me money!"23:51
drobillaMaybe Dr. Asshole would get more, heh23:51
AnchakorI'd rather get a job with flexible hours and good-enough-to-get-by pay23:54
drobillaAnyway, pretty sure focusing on actual deliverables is the correct approach to any and all of the above23:54
Anchakoryeah23:54
Anchakorshame the faust guys halted their efforts23:54
drobillahm?23:55
Anchakorthat looked promising23:55
drobillaAlbert was talking about moving to atom just the other day.  Is upstream faust itself dead now?23:56
Anchakorhmm maybe my impression is wrong23:56
AnchakorI thought I read someone say something about it being abandoned23:57

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