Tuesday, 2015-03-03

* drobilla wonders how an X11-free framebuffer pugl would work00:11
badosusurprised you expose your personal and dev email publicly, dont you receive lots of spam?00:17
drobillaPretty much every developer does.  How else could anyone contact you?00:18
drobillaNot really.  Not much that gets through the filter, anyway.00:18
badosuwell, usually via mailing lists00:19
badosufor example, if I did not know about you via IRC I'd try sending the patch to lv2 mailing list00:20
badosuand then hope the mantainer reads it :-)00:20
badosufor example, abduco and dvtm are not suckless projects, but Marc uses the mailing list as the medium for collaboration00:21
drobilla"usually"... go to your favourite directory full of source code and do grep Copyright | grep '@'00:21
badosuok, just did this on lv2 project00:23
drobillaTrying to hide an email address is pretty much a lost cause anyway, unless you use an account per service setup00:23
badosuthe output was not really helpful00:23
badosuI am not trying to hide an email address00:23
drobillaWell, you seem surprised that I don't00:24
badosuyeah, but I am not advocating for this00:24
drobillaMy point is, I literally do not know of a single developer who does00:24
drobillaMight as well be surprised that the sky is blue :)00:24
badosuok drobilla I was just commenting00:24
*** gianMOD_ has joined #lv200:33
*** gianMOD has quit IRC00:36
*** gianMOD_ has quit IRC00:37
badosudrobilla: I am having a weird problem with lilv_port_get_name01:20
*** badosu has quit IRC01:22
*** badosu has joined #lv201:23
*** Anchakor_ has quit IRC03:16
drobillabadosu: did you try turning it off then back on again?04:40
badosuI don't know what the issue05:04
badosusometimes it return the name of the port, sometimes it complains that: lilv_port_get_name(): warning: Plugin <http://bado.so/bad-amp> port has no (mand05:04
badosuatory) doap:name05:05
badosusorry for the paste05:05
badosusometimes this function will return null05:06
badosuand print the following message to stdout05:06
badosulilv_port_get_name(): warning: Plugin <http://bado.so/bad-amp> port has no (mandatory) doap:name05:06
badosuwhich makes no sense, because I declared doap:name05:06
badosuwhat I am doing is fairly trivial, see: https://gist.github.com/badosu/e58c99e421c474bd2c9f#file-gistfile1-cpp-L136-L13805:07
badosuthis is what I am doing05:07
badosuit's fairly trivial, just iterateing through the ports and printing their name05:08
*** badosu has left #lv205:09
*** badosu has joined #lv205:09
drobillaYou suuuuuuuuuuuuuuuure that port has a name?05:12
drobillacheck lv2info and/or paste ttl05:12
badosuhttps://github.com/badosu/BadAmp/blob/master/amp.ttl05:13
badosualso, lv2info shows the name for the port accurately05:14
drobillaHm, that message is wrong.  It's lv2:name, not doap:name05:18
drobilla(How this ended up such a mess is beyond me, we use 3 different name/label predicates...)05:18
badosuoh, but why this indeterministic behaviour?05:18
drobillabadosu: er... you are casing a pointer to Jalv's internal port struct to LilvPort05:19
drobillaand needlessley copying it to boot05:19
badosuwell, I was reading the gtk code but I guess I am deumb05:19
drobillaGenerally best to check before casting something to the thing you need to make it compile, that it actually is that thing ;)05:20
badosuso, on gtk code you store it as Port05:20
badosubut when you retrieve it you cast to LilvPort05:21
badosu:-(05:21
drobillaSure don't05:21
badosuOk, so forget about it05:21
drobillaconst Port* port = lilv->ports[i];05:21
drobillalilv_whatever(port->lilv_port, ...)05:21
drobillaPort is a struct in jalv_internal.h05:21
drobillanot a lilv thing05:21
badosuok, so could you bother explaining this to me?05:22
badosuYou do this: g_array_append_vals(control_ports, &jalv->ports[i], 1);05:22
badosubut then you do this later: const LilvPort* port  = g_array_index(control_ports, LilvPort*, i);05:23
drobillaThat's admittedly a bit nasty05:23
drobillaBut you can cast a Port to a LilvPort* because that's the first field05:23
badosuhmmm....05:23
drobillaYou can't cast a Port* to a LilvPort*, which is what you're doing05:23
badosuOk, pointer math confusion on my side05:23
badosuthanks for the patience to help me05:24
drobillaBasically just don't do any ugly casts05:24
badosuSorry about that :-)05:24
badosuLOL how did this work in the first place?05:24
badosuok, now I got it05:25
* drobilla didn't write that array code, for the record :)05:25
badosuI am not talking about that code, but mine05:26
badosuHow can this work sometimes and sometimes not05:26
drobillaThat every working is strange indeed05:26
badosufunny05:26
badosugreat, it works flawlessly now05:27
badosuthanks for the help05:27
drobillay/w05:27
badosuI guess the first code was working gue to the use of g_functions05:28
badosubecaus it's not possible, I can't even understand05:29
drobillaThe gtk code?05:29
badosuyep05:30
drobillaThat works because e.g. if you have struct Foo { int bar; }, you can cast Foo* to int*05:31
drobillafirst thing in the struct, so the address of the Foo and the int are the same05:31
badosuyeah, but I thought I was doing the same thing05:32
badosuanyway, I already can list all the controls inside a plugin05:32
badosuthat's nice05:32
drobillabadosu: Updated the gtk code to avoid that confusing cast-via-garray stuff05:45
badosunice! gonna pull it05:45
badosuso is every control in lv2 a float?05:46
drobillaWell, every ControlPort is, anyway05:48
drobillaProperties tell you if it should be treated as integer, or an enumeration, etc05:49
badosuyep, is just that jalv.gtk has that weird slider floating between 0.000-2.000 for example on an enum with 3 values05:50
badosuwow, svn update pulls and merge changes silently05:51
badosudifferently from git, which complain if your index is dirty before git pull05:51
drobillaIt shows a combo box for enumerations05:51
drobillaIt will show a slider with ticks for a port with scale points that is not an enumeration05:52
drobillalv2:portProperty lv2:enumeration ;05:52
badosuin this case calf vintage delay should change it's ttl05:52
drobillaMDA Combo has an enumeration and a toggle05:53
badosubecause it just uses lv2core#integer05:53
drobillaYeah, some hosts treat anything with scale points as an enum, but this is wrong05:53
badosuok, so now that I am implementing a host I'll see all sorts of garbage on ttls05:53
drobillaWeeeeeeelll it's not so bad05:54
drobillaI need to make validation easier and more well-known to combat this05:54
drobillaThough that wouldn't catch things like this, it's valid to have that property or not05:54
badosustill, I don't understand why an integer could have a floating value05:55
badosuas it's implemented on jalv.gtk05:55
badosuIt would make sense for it to be a knob with 3 fixed values05:55
badosuin that case where there are 3 scale points05:55
* drobilla installs git in Windows VM05:56
drobillaugh, soooo slow05:56
badosugit on windows is reportedly slower05:56
drobillaNo sure what you mean by that.  "integer could have a floating value"?05:56
badosujalv.gtk uses a slider that can set a non-integer value05:57
badosuthe scale points are only used as the markers on top of the slider05:57
badosudrobilla: any reason for using svn? You like svn more than git?05:58
drobillabadosu: I think that repo predates git's existence.  If not, close.05:59
badosujust out of curiosity05:59
drobillabadosu: Migrating will be incredibly painful due to all the sub-projects, so I haven't done it yet05:59
badosuI am having a hard time using svn :P06:00
drobillaI will when the libs move to lv206:00
badosuif you want help let me know06:00
badosuI was almost mirroring it to git and uploading to git.bado.so06:01
badosuso that I could send patches using http06:01
drobillaI think you can do that locally with git-svn06:01
drobillaThe trouble with that migration is, I don't know how the dep situation works WRT packaging06:02
drobillaBunch of libraries, one tarball, bunch of different pkg-config files as currently, but... pkg-config deps not mapping to packages, kinda weird06:02
drobillaWeird concerns me.06:03
drobillaGah, cairo really should not depend on glib crap06:45
drobillaugh, pkg-config on windows + spaces in paths => boom06:56
*** edogawa has joined #lv207:01
* drobilla gives up07:02
*** Anchakor_ has joined #lv207:36
badosudrobilla: why are you developing on windows?07:37
*** ddom has joined #lv208:38
*** gianMOD has joined #lv209:20
bgoladrobilla: what i mean is: if I send patch:Patch using the REST API it doesnt change the property i am trying to change. but when I send a patch:Set it works. dumping all the data my patch:Patch message looks ok.09:23
*** ricardocrudo has joined #lv209:37
*** falktx has joined #lv210:03
*** edogawa has quit IRC10:18
*** gianMOD has quit IRC10:30
*** ricardocrudo has quit IRC11:07
*** gianMOD has joined #lv211:31
bgoladrobilla: also, is it the desired behaviour that the engine broadcasts the message all clients including the client that sent it? there is no Response msg anymore?11:36
bgolato all clients*11:36
*** gianMOD has quit IRC11:37
*** sigma6 has quit IRC11:51
*** gianMOD has joined #lv212:11
*** gianMOD has quit IRC12:25
*** ricardocrudo has joined #lv212:29
*** falktx has quit IRC12:32
*** rncbc_jolla has joined #lv212:43
*** rncbc_jolla has quit IRC12:54
*** gianMOD has joined #lv213:25
*** gianMOD has quit IRC13:30
*** gianMOD has joined #lv214:26
*** gianMOD has quit IRC14:31
*** gianMOD has joined #lv214:41
*** edogawa has joined #lv214:48
*** falktx has joined #lv214:51
*** falktx has quit IRC14:59
*** sigma6 has joined #lv215:10
*** gianMOD has quit IRC15:19
*** gianMOD_ has joined #lv215:24
*** falktx has joined #lv215:26
*** gianMOD_ has quit IRC15:49
*** gianMOD has joined #lv215:50
*** falktx has quit IRC15:53
*** gianMOD has quit IRC15:55
*** gianMOD has joined #lv216:36
*** gianMOD has quit IRC16:38
*** falktx has joined #lv216:42
*** falktx has quit IRC16:45
*** falktx has joined #lv216:52
*** ddom has quit IRC17:25
*** gianMOD has joined #lv217:53
*** gianMOD has quit IRC18:04
*** sigma6 has quit IRC18:16
*** falktx has quit IRC18:39
*** gianMOD has joined #lv218:49
*** gianMOD has quit IRC18:52
*** ricardocrudo has quit IRC18:59
*** aombk2 has joined #lv219:10
*** aombk has quit IRC19:13
*** gianMOD has joined #lv219:17
*** falktx has joined #lv219:29
*** gianMOD has quit IRC20:16
*** gianMOD has joined #lv220:29
*** gianMOD has quit IRC20:48
*** gianMOD has joined #lv221:05
*** ricardocrudo has joined #lv221:08
badosudrobilla: http://bado.so/2015-03-03-183928_1312x274_scrot.png21:47
*** gianMOD has quit IRC21:49
drobillabadosu: nice.  is knob a default qt widget?21:56
drobillabadosu: what's with the different sizes?21:56
drobillabadosu: I would put the value label next to or below the name label, this placement dissociates them too much21:56
badosudrobilla: this is the most basic setup, so still needs adjusting the alignment/padding/layout21:59
badosudrobilla: the knob is a QDial: http://qt-project.org/doc/qt-4.8/qdial.html21:59
badosudrobilla: it's reptty clunky as it handles integer values, so I don't know if I'll still use it21:59
badosudrobilla: for now I am more concerned about being able to control all the possible controls appropriately22:00
badosudrobilla: then i'll make it prettier22:00
* drobilla looks22:03
drobillaHuh.  Surely all sliders in Qt aren't integer constrained, that's insane22:03
badosudrobilla: what do you mean?22:04
drobillaI mean...... that?22:07
badosu"Surely all sliders in Qt aren't integer constrained"22:09
badosuwhat integer constrained means, that is my question22:09
drobillaI honestly can not come up with a way of restating that sentence22:09
drobillacontrained to only work on integers?22:09
badosubecause you can simply pass setRange(min, max)22:09
drobillalike.... they use integers?22:09
badosuwell, it's quite the opposite22:10
badosuthey are always integer constrained22:10
drobillaif by "opposite" you mean "exactly"22:10
badosuok22:10
drobillaBizarre, what a useless design22:10
badosuso, I think I am in an alternate reality where up mean down and left means right22:11
badosubut it's fine, as long as I am able to make that host work22:11
badosuit's really sad that we can't communicate though :-(22:12
drobillaI don't get it.  Is this a language thing or something?22:12
drobillaIf someone says "surely <seemingly insane scenario>" it means they can't believe that is actually the case.22:12
badosuoh, ok. I interpreted that literally22:13
drobillaI guess you can make it 0..INT_MAX and map it to float yourself22:13
badosuenglish is not my native language, and I pretty much don't use it outside technical discussions22:13
drobillafair enough22:13
badosuso some ironical expressions I don't understand22:14
badosudrobilla: yeah, it's pretty annoying to create the step handling by yourself22:14
AnchakorI think the Qt dev didn't consider that somebody would want to use a dial for precise input, there are other widgets for that (where you can enter exact number)22:14
badosuAnchakor: on the Qt lib?22:15
Anchakorre QDial being integer based22:15
drobillaI'd assume it's floating point internally, you can even set 'pixels between steps' in float22:15
falktxbadosu: rncbc has custom knob classes for qt in his plugins22:15
falktxit handles floats and proper up/down drag22:15
badosufalktx: I'd imagine that, but I really wanted to make as close to vanilla qt as possible22:16
falktxit's a single header+file afaik22:16
falktxyou can join it into a single header22:16
badosufalktx: this makes it more interesting, thanks for the heads up22:16
*** ricardocrudo has quit IRC22:18
*** falktx has quit IRC22:50
rgareusbadosu: I don't think you'll find a major toolkit that is suitable for audio-plugins23:12
rgareusneither QT, nor gtk nor OSX Cocoa,... are really suitable.23:13
rgareusthe big kitchen-sink for audio is JUCE23:13
drobillajalv.pugl FTW23:14
rgareusyeah - though thats not a TK, is it?23:14
drobillaWell, no23:14
rgareusdrobilla: cont'd the discussion re x11 embeddeding. I get XGetGeometry() 1,1 for the parent23:17
drobillageneric UI builder thingie makes me wonder how much intersection with Ingen there it here23:17
drobillait'd work for that, but probably some kind of actual builder or "presentation model" dealey is needed for that to be a decent 'plugin dev kit'23:17
drobillargareus: weird23:17
rgareusI dimly remember that there is a /bug/ ie first request always returns 1,123:17
rgareusfalktx worked around this callit it 3 or 4 times until it returns something >  1,123:18
drobillahah, lovely23:18
rgareusyeah he can be pragmatic.23:18
rgareusgtk window not realized..  uhm blame suil design...23:18
badosurgareus: I know, I've heard this discourse from drobilla already23:19
badosurgareus: my motivation to develop jalv.qt is because it will be important for LMMS later on23:19
badosurgareus: at least the stuff I'll have to learn23:20
rgareusdrobilla: taking a leaf out or his book, how aboutI sui/ X11 just sending a ConfigureNotify ?23:20
drobillaThat "suil design" stuff seems to be a whole lot of "I have no idea what I'm talking about", frankly23:20
rgareusbadosu: well, that's the host end, right?23:20
rgareusbadosu: so if you want to provide 'generic guis' for plugins that have none, yes you're on the right track.23:21
badosurgareus: yep, this is the idea23:21
drobillaHis thing just makes a top level Gtk window, I don't get how this is even related, or why so much gymnastics are needed23:21
drobillargareus: Sending an appropriate event at some level (gtk or X11, whichever works) seems reasonable23:21
rgareusdrobilla: It /works/ in ardour if I   edit,  edit with generic UI, edit   a configure notify is sent in that case.23:22
rgareusthough in both cases ardour tears down and reinitiates the plugin GUI. but only in the latter a Configure is sent. odd23:23
rgareusmaybe gtk size-request/allocate related due to actually changing things inside the window23:23
drobillargareus: I'm guessing x_window_is_valid returns false preventing the existing attempt at this from working23:23
badosurgareus: I need this generic interface for 2 reasons23:24
badosu1. I can't trust lv2 ui developers that they'll always make usable GUIs23:24
badosu2. LMMS has some nice usability funcionalities that require access to the control widgets23:25
badosure: that QDial discussion, I've decided that for now I'll handle step calculations myself with 0.1% precision23:30
badosuif drobilla finds this unsuitable for jalv.qt it will be easy to switch later23:33
drobillawhy 0.1%23:40
drobillaJust use the full range of int (or maybe +'ve int), just as easy23:41
badosudrobilla: I don't want to bother with this for now. Also, after a threshoul the precision does not make any difference23:47
drobillabadosu: "bother with this"... it's exactly the same thing regardless of what the max is23:48
drobillafloat normal = int_val / (float)max;23:48
drobillafloat val = normal * (max - min) + min;23:49
badosudrobilla: QDial usability is mostly incompatible with audio users expectation, that's why I am not bothering for now23:50
drobillawell... okay23:50
badosudrobilla: for example, on QDial you have to move the mouse *around* the widget instead of up/down23:50
badosudrobilla: I'll only tweak QDial if there's no alternative that won't increase the size of jalv_qt4 very much23:51
drobillaMust be poorly written code for this even to be a thing23:51
badosudrobilla: it's not porrly writen code, it's UI for non audio users23:52
drobillajalv.qt should probably just use sliders, too, if QDial sucks23:52
drobillaI mean your code that somehow involves 0.1%23:52
badosudrobilla: probabyl, but until I release it for review, this only concerns to me23:53
badosuthis integer restricion is present on the QSlider class which  QDIal inherits23:54
badosuso any slider on vanilla qt will have this behaviour23:54
drobillaintegers have a whole lot more than 1000 possible values23:54
badosudrobilla: I know :-)23:54

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