Saturday, 2014-02-08

*** HarryHaaren has quit IRC00:48
drobillaBlergh, zero motivation today.01:14
drobillaMaybe I'll just commit the show()/hide() interface part and leave it at that01:14
drobilla10 Internet Points to someone who actually wants to make a UI that uses it :)01:15
drobillaSuper annoying that run() was the first method in lv2_external_ui, or it could (perhaps) conveniently be castable01:15
drobillaWell, it uses a different 'this' pattern than LV2 stuff anyway, I guess, so whatever01:16
* drobilla is having one of those days where you should have just accepted from the outset that you weren't going to get anything done and just gone with it01:18
rgareusdrobilla: nice job on the 5th plugin02:46
rgareusdrobilla: did you check what happens if you send a note with pitch > 120 ?  does it wrap?02:46
drobillargareus: It just doesn't bother sending a fifth02:46
rgareusdrobilla: fifth.msg[1] = msg[1] + 7;  // Pitch up 7 semitones02:47
drobillargareus: Did I actually test this? no. :)02:47
drobillargareus: if (note < 127 - 7) {02:47
rgareusmsg is a uint8_t so it will produce invalid midi-data, value > 12702:47
rgareus(or a &0x7f02:47
rgareus  = (msg[1] + 7) & 0x7f;02:47
rgareusdrobilla: small detail really. but producing illegal midi-data shoud be discouraged.02:48
drobilla...02:49
drobillaSee above02:49
* rgareus head -> keyboad02:50
drobilla:)02:51
rgareusmmh. that should be <= 127 - 7    or  < 128 - 702:51
drobillatrue02:51
rgareusand it does not explain how to come up with an event from scratch.  here:  fifth.event  = *ev;02:53
rgareustake care of this02:53
drobillameh.02:53
rgareusdrobilla: well I'm just reviewing code. nothing personal.02:53
drobillaI guess since it's an example that rather clunky might be appropriate02:54
drobillargareus: Appreciated.  meh isn't personal.  Go fuck yourself is personal :)02:54
drobillaApathy: Where everyone gets along because the alternative is just too much botherâ„¢02:54
drobillaThis 64 bit time stamp thing was pretty silly.  Oh well.02:55
rgareusright. good enough for an example. and events are well documented at http://lv2plug.in/doc/html/structLV2__Atom__Event.html02:56
rgareus2^32 is not enough if I want to feed 1 minute of intersetall communication sampled at 72MSPS into my marscomunicationdecoder.lv203:00
drobillargareus: Heh.  Well, there was 64-bits regardless for alignment03:00
rgareuss/intersetall/interstellar/03:00
drobillaframes and subframes ala even may have been more appropriate03:00
drobillaala event*03:00
drobillaGet signed to unsigned conversion errors with hyper warnings on03:01
drobillaThe fifth thing was rev 909, heh03:17
drobillaShould have made it a beat repeat or something :)03:17
drobillargareus: thanks http://lv2plug.in/changeset/91003:17
rgareusdrobilla: nice.03:18
drobillaI'm too lazy to write a UI03:21
drobillaVelocity scale of the fifth is the obvious control, I suppose03:22
rgareusit does not need one, does it?03:22
rgareuseven velocity scale can get away with a simple float control port03:22
drobillaNeed one what?03:24
rgareusUI03:24
drobillaWell, no.  Few things do ;)03:24
rgareusdrobilla: what was your comment "I'm too lazy to write a UI" about, then?03:24
drobillaI need a simple preferably pugl example to do the external degrade thing03:24
drobillaHopefully in the process winning my freedom from that shit for as long as possible.03:24
rgareusdrobilla: an on screen keyboard03:25
drobillaI'm /way/ too lazy for that03:25
rgareusdrobilla: and degration would be hard03:25
drobillaWhy?03:25
rgareusdrobilla: what would it degrate to?03:25
drobillargareus: external UI03:26
drobillavia an additional interface for that03:27
rgareusin libsuil?03:27
drobillaas discussed in my ML post nobody contributes to and yammered on about here in the past several days03:27
drobillaSince there seems to be no reasonable way to not give a host the widget it's expecting, probably not anything in suil at all, no.03:29
rgareusI don't yet have anything constructive to contribute to that thread (much like Harry).03:30
drobillaThen don't make me repeat myself on IRC :P03:31
rgareusdrobilla: it wasn't clear to me that you planned to fall back to externalUI.03:31
drobillaIn operation, not literally.03:31
drobillaThe whole reason external UI is a huge problem is it is a different UI type, to the exclusion of others.03:32
drobillaThe very opposite of graceful, and a big clusterfuck of fragmentation.03:32
drobillaI haven't yet thought of any reason why putting the same stuff in an extension_data interface isn't just completely better in every way03:33
drobillaHost doesn't know how to deal with a WtfTkUI?  Okay, no embedding for you, call show() on it.03:34
rgareusthe UI type of external UI is toolkit independent. What is the problem with that?03:36
drobillaThe problem is that it's a separate UI type03:36
drobillaWhich just causes pointless fragmentation, wars about embedding, hosts and UIs clashing with each other over what's supported03:37
drobillaYou yourself were complaining about having to provide a bunch of different UI types03:37
drobillaThe separate UI mechanism was intended for actually different UIs03:37
drobillaNot 40 versions of the same damned thing in a slightly different form for compatibility, which is clearly shit03:37
rgareusOk I now understand what you meant03:37
drobillaThe other part, allowing UIs to provide multiple types (maybe Gtk or X11, or even X11 or Wayland) is more questionble03:39
rgareusspeaking of different UI types;  could there be a UI:PuGL  type (that is identical on all platforms, libpugl chooses the right backend)03:40
drobillaCould there really?  Ultimately Pugl just uses magic GL context03:40
drobillaThere's not really a meaningful handle of any use to a host.03:40
drobillaand anyway, as discussed yesterday, I think that's just more of the problem.03:41
rgareuscurrently I use pugl+gtk and in the Makefile use sed to set  CocoaUI  vs X11UI03:41
drobilla'system' window handles are the sensible thing03:41
drobillathey don't add library compatibility problems to the host:UI interface03:41
rgareusuhm scratch that +gtk03:41
drobillayes, the multi thing is an idea to make having to list cocoa, X11, blah blah separately03:42
drobillaAll of which is why fifths "needs" a UI03:42
rgareuspugl can work on the three major platforms with different backend, so the host need not really worry03:42
drobillaA *single* pugl UI that works in every single one of the above mentioned scenarios03:42
rgareusdrobilla: do you know what harrison does?03:43
drobillargareus: Not really.  IIRC they've waffled on embedding vs external03:43
rgareusdrobilla: they have GL LV2 plugins that work on all 3 platforms03:43
rgareusand there's pugl in there03:44
drobillargareus: Not really.  As far as LV2 is concerned they have 3 UIs03:44
drobillaI meah, yeah, as far as actually implementing it, pugl works on all 3.  That's the whole point of it.03:45
drobillaThe mess is at the host:ui interface03:45
rgareusdrobilla: and they use externalUI.03:46
drobillaHooray, no embedding even if the host totally can and wants to03:47
drobilla^ the problem.03:47
rgareusyeah03:47
rgareusui:Pugl could facilitat that03:48
rgareusfacilitate, even03:48
drobillaI see literally no advantage to doing that and plenty of disadvantages.03:48
drobilla(The main one being a Gtk style library version compatibility clusterfuck)03:48
drobillaWhat is the hadle for a PuglUI anyway?  PuglView?  Of no use to the host.03:49
drobillaIf the UI is running off system windows events anyway (which is what Pugl does), just... let it.03:50
drobillaGL is weird, for embedding of GL in GL literally we'd need to invent an interface to set up the bounds and projection and whatnot03:51
rgareusindeed. I have not thought about that.03:52
rgareushigh time for bed, I suppose. my brain is already sleeping03:52
drobillaWhich would be cool, but pragmatic solutions to real problems first :)03:52
rgareusdrobilla: speaking of gtk-style. I've fixed the button+dial gradient issues in robtk. (already in meters.lv2, other projects will follow soon)03:54
drobillargareus: What meter has widgets?03:56
rgareusdrobilla: ebur128, goniometer, phase-wheel, 1/3octave spectrum analyser.03:57
rgareusdrobilla: https://github.com/x42/meters.lv2#screenshots03:57
drobillayeah, buttons in goniometer look ok03:58
rgareusdrobilla: strictly speaking the calibration screw is also a widget (at least it's auto-aligned when the UI is resized)03:58
* rgareus likes scalable UIs04:01
rgareushttp://robin.linuxaudio.org/tmp/bbcmeter.jpg04:01
drobillaMm.  Audio plugins in general have a severe fixed size problem.04:02
* drobilla wonders if easily stealable piano keyboard drawing+event mapping code exists somewhere04:03
rgareusdrobilla: for just black/white keys, it's easier to whip up something from scratch than steal.04:04
drobillaMeh, 11pm, whatever.  I need to do some real work anyway04:05
* drobilla is trying to retain a vaguely normal human being sleep schedule04:05
rgareusdrobilla: ./gtk2_ardour/gtk_pianokeyboard.c has a gtk+cairo variant.04:07
rgareusthe expose_event() and draw_note() is < 100 LOC04:07
rgareus< 50, even04:07
drobillaCairo pugl is another thing I'd like to do04:08
drobillaShit, I forgot to try to install OSX today04:08
drobillaClearly infeasible to maintain Pugl without being able to test myself04:08
rgareusspeaking of pugl-merge-mess: one thing that I've changed in pugl is to make puglDisplay() not  call glClear() nor glLoadIdentity();04:14
rgareusthat's a show stopper for partial exposure04:14
drobillaIt probably just needs to not mess with GL context at all.04:14
drobillaAny GL program is responsbile for that stuff anyway.04:15
rgareusdrobilla: +1;  but then there needs to be an abstraction for glXMakeCurrent() and similar on other platforms04:15
rgareusanyway. tomorrow. or later04:16
drobillaor pervasive EGL support, which would be nice04:17
drobillargareus: Well, not make current, but clear and identity and setting projection and whatnot04:17
drobillargareus: 'night04:17
*** awilliams has joined #lv204:22
*** timbyr has quit IRC04:29
*** timbyr has joined #lv204:30
*** Gethiox has quit IRC07:10
*** falktx has joined #lv207:24
*** mlpug has joined #lv208:11
*** falktx has quit IRC09:47
*** mlpug has quit IRC10:08
*** falktx has joined #lv211:04
*** rncbc has joined #lv212:52
*** Gethiox has joined #lv213:00
*** rncbc has quit IRC13:44
*** HarryHaaren has joined #lv213:54
HarryHaaren+1 for the fifths plugin: its really clear for understanding MIDI through14:03
*** falktx has quit IRC14:37
*** mlpug has joined #lv214:48
*** falktx has joined #lv215:04
*** NickSB2 has quit IRC15:10
rgareusls /tmp/jalv-* | wc -l   # returns   128515:29
rgareuswhat are all those tmpdirs doing there?15:29
rgareus(they're all empty)15:29
*** awilliams has quit IRC15:33
rgareusdoes that mean I had 1285 jalv crashes? or more likley  gdb jalv -> just quit; sessions since last reboot!?15:36
rgareusdoes anyone else have a large amount of tmpfiles there?15:36
HarryHaarenrgareus, yep. I guess one tmp dir per instance15:37
falktx ls /tmp/jalv* | wc -l15:37
falktx315:37
rgareusfalktx: 3 only?15:38
falktxI only ran jalv a couple of times15:38
falktxrunning it again increases to 515:38
falktxnow 7...15:38
rgareuswell my uptime is several month. but /tmp is cleaded every reboot or files oder than 1 month.15:39
rgareusfalktx: do they go away when you quit jalv?15:39
rgareusthey should --  remove(jalv.temp_dir); at the end.15:39
falktxrgareus: they don't if I use ctrl+c15:40
falktxexiting cleanly is ok (count doesn't increase)15:40
rgareusok. so it was /me using ctrl+c or gdb quit  > 1K times. wow15:41
falktxBUT using ctrl+c with an external UI is fine15:41
falktxrgareus: > 500 times. it increases the value by 2 each time15:41
*** falktx has quit IRC15:44
rgareusnot here. only one.15:44
HarryHaarenuptime of months? I have a kernel panic every few weeks :D15:45
rgareusHarryHaaren: that's whay I'm still on 3.2 :)15:46
rgareusHarryHaaren: works reliably15:47
HarryHaarenrgareus, I'm planning on buying a new SSD, and doing a performance-only install on it: 3.2 is Debian + custom config, or AvLinux?15:48
rgareusHarryHaaren: it's a custom kernel based on debian's RT-preempt15:50
HarryHaarenright. I'm going to get back to you when the SSD arrives, because my best RT audio experience was on 64Studio 2.1 when it came out!15:50
rgareusHarryHaaren: I used debian's RT-kernel for a while -- until I started writing ALSA drivers.15:50
rgareusHarryHaaren: 64studio. aah, those were the days :)15:51
HarryHaarenthey were! I've been waiting for 3.0 for *years* :D15:51
rgareusHarryHaaren: SSD setup is quite orthogonal. has little to do with the kernel.15:55
HarryHaarenrgareus, yep i know. But it gives me a clean slate to do a fresh install, without having to re-do my current developing install. I'll probably install AvLinux: assuming the kernel is -RT and stable15:57
rgareusHarryHaaren: it has a RT kernel. but I don't know if it includes tweaks for SSD15:58
rgareusHarryHaaren: (e.g make /tmp a tmpfs, redirect firefox's cache to /tmp etc, etc)15:58
HarryHaarenthat's fine.. i shouldn't be using firefox on stage anyway  :D16:00
HarryHaarenI got a sound-techie job doing live sound, so I'm going to be in Germany / Holland area for the LAC time. Might try arrive a bit earlier.. if there's things to do?16:01
rgareusHarryHaaren: swappiness is another one  and  elevator=noop16:01
rgareusHarryHaaren: you could share a ride with Glen (avlinux) from Holland16:02
HarryHaarenyes, he pinged me about that a few weeks ago: at the time there was no talk of this work yet16:02
HarryHaarenthanks for reminding me, i'll get in touch with him :)16:02
rgareusHarryHaaren: as for stuff to organize @ZKM pre LAC, I don't know, yet.16:03
HarryHaarenrgareus, that's cool, i'll post on LAC-team or something once I know myself what's going on. And if I'm going down with Glen, then perhaps it'll only be for the pre-conf Pizza16:04
rgareusHarryHaaren: I'm planning to do the same, arrive sometime Wednesday afternoon.16:05
HarryHaarenrgareus, awesome. I'm looking forward to it! Going to do a little video for the new ArtyFX distortion plugin now, see you!16:07
*** Gethiox has quit IRC17:20
*** Gethiox2 has joined #lv217:21
*** awilliams has joined #lv217:35
*** rncbc has joined #lv217:51
rgareusdrobilla: around?18:17
rgareusdrobilla: libsuil's qt4_in_gtk2  does not allow to open multiple QT GUIs at the same time. QApplication is a singleton.18:18
rgareusdrobilla: I did a quick test and found a workaround/solution: http://pastebin.com/bx9iEMCU18:18
rgareusdrobilla: though I'd like to discuss/clean it up before submitting a patch18:18
*** wrl has joined #lv218:21
rgareusdrobilla: I did a quick check w/ reference count; but it looks like one must only ever call  new QApplication  once per process18:21
rgareusrncbc: do you know the semantics of QApplication ?18:21
rgareusrncbc: can one  a = new QApplication;  delete a;  a = new QApplication;   without issues?18:22
rncbcrgareus: a guess not. use qApp() to check if an instance is already up18:23
rncbcrgareus: i use something similar on the vee-ones wrt. lv2_external_ui18:25
rgareusrncbc: qApp  is a good hint.18:27
rncbcrgareus: i use to check whether qApp is not null and ++refcount on lv2_ui_instantiate; if QApp is null then new QApplication()18:30
rncbcqApp18:30
rncbcrgareus: on lv2_ui_cleanup:: --refcount; when zero => delete QApplication()18:31
drobillargareus: Yeah, that part was clearly wrong, but a QApplication was needed somehow IIRC, so..18:31
drobillastatic anything in a dynamically loaded module makes me uneasy18:32
drobillaI duno, do whatever rncbc, I don't know anything about Qt :)18:33
rgareusdrobilla: yeah, I've just changed it to use qApp;  but that's just a Macro to access QT's static QCoreApplication::instance ()18:34
drobillargareus: Yeah, just read that bit.18:34
drobillargareus: Well, since this should only be used in a Gtk app anyway, it's probably Safe Enoughâ„¢18:34
rgareusref-counting and deleting QApplication instance  with the last plugin UI  and re-creting it with the next, kind of works18:36
rgareusthe probem is QStyle18:36
rgareusthe host does not crash but the plugin GUI looks completely odd.18:36
rgareusand I get lots of warnings in the terminal18:36
rgareusthe problem is QGtkStyle::QGtkStyle18:37
* drobilla finds it odd that none of this has come up before18:37
rgareusso http://pastebin.com/3q8fVK4k sees to be the right thing to do18:38
drobillaNot a lot of people using Q* plugins in Ardour I suppose18:38
rgareusdrobilla: ...or ingen18:39
rgareusdrobilla: rui's plugins are external-ui18:39
rgareusdrobilla: and I think it's only qmidiarp that currently has a QT gui18:39
rgareusdrobilla: shall I submit the patch to your tracker?  or can you pick it up from pastebin?18:40
drobillaThere's not a lot of people using Ingen period, and it doesn't support external-ui18:41
drobillaoh, right.18:41
drobillaThat whole problem.18:42
drobillargareus: Does it work?18:42
rncbcrgaureus: my plugins are dual lv2_external_ui and lv2_qt4_ui18:43
*** edogawa has joined #lv218:43
rgareusdrobilla: yes18:44
rgareusdrobilla: it works18:44
rgareusdrobilla: tested by me and dharanamrs (qmidiarp's author)18:44
rgareusdrobilla: it has the side-effect of keeping the QApplication around until application exit... which is not nice. but I currently see no other solution.18:45
rgareustheoretically one should be able to ref-count it.18:46
rgareusbut pratically it takes a QT master to get this right.18:46
drobillargareus: can't apply patch from pastebin, mangled somehow.  send me directly somehow18:47
rgareusdrobilla: will do.18:48
drobilla(this always happens and I don't get why, surely patch is smart enough to deal with line end mangling and such)18:48
rgareusFWIW, here's the ref-count experiment, with asserts() in QGtkStyle::QGtkStyle   http://pastebin.com/7CavmFqq18:48
rgareusdrobilla: your trac is dead slow :( http://dev.drobilla.net/attachment/ticket/96118:52
drobillaYeah, I am not impressed with Dreamhost lately but I don't know what to do about it18:57
drobillaor want to spend the time dealing with it18:57
drobillargareus: thanks18:59
*** awilliams has quit IRC19:01
rgareusdrobilla: how to you pronounce 'ingen'  ?  is that a 'g' as in ingenuity ?19:02
drobillargareus: It's kind of a pseudo-pun on "engine" and/or "instrument generator", so yeah, soft g19:03
*** falktx has joined #lv219:17
*** HarryHaaren has quit IRC19:27
*** rncbc has quit IRC19:40
*** mlpug has quit IRC20:21
falktxdrobilla: I tried to build pugl with strict flags for fun20:23
falktxdrobilla: here's the needed changes: https://github.com/falkTX/Carla/commit/2a857b0529c7032125b31bb28da669a8ac160602 :)20:23
falktxsetModifiers arg was set to long because otherwise all calls to it would need a uint32_t cast20:24
falktxless changes this way20:24
drobillafalktx: I do not use long, and neither should you.20:26
falktxthe x11 api does though20:26
drobillafair enough.20:27
drobillawhy the hell does pugl have signed width anyway20:28
drobillabecause glut does20:28
falktxI'd welcome a change to that20:28
falktxI use uint internally here, have to cast everytime20:28
drobillawell, puglInit is going to completely change anyway20:28
*** awilliams has joined #lv220:49
*** Gethiox2 has quit IRC21:15
*** Gethiox2 has joined #lv221:16
*** HarryHaaren has joined #lv221:18
HarryHaarendrobilla, can you forsee any backwards-compat issues by moving plugins from individual .so files into one collective .so? (Related to OpenAV ArtyFX)21:35
drobillaHarryHaaren: I don't think that shouls cause any problems21:42
HarryHaarencool. I'd like to clean up the source & refactor code & build system. Seems cleaner to have a single .so "artyFX" instead of a bunch of files. Thanks!21:43
rgareusHarryHaaren: the problems here are/were not the .so but the huge .ttl22:20
drobillaYes, that you should not do.22:20
rgareusHarryHaaren: but drobilla did an update to lilv to mitigate the effect22:20
drobillaThough lilv handles it better now.22:20
rgareusI know some of harry's plugins have > 100 ports.22:21
HarryHaarengot it yeah, one manifest.ttl, with "links" to each plugins .ttl:   roomy.ttl, ducka.ttl etc22:21
HarryHaarenonly Fabla so far.. and that was to allow the automation of the vol/pan/pitch/ADSR, 16x 7 dials really adds up!22:22
rgareusI'm planning to break out various meters into their own .ttl, too.  But, for now it's a good lilv performance test :) 62 plugins in 5K lines TTL22:25
drobillaThe mode is probably the slow part by a long shot, serd will plow through data as fast as most I/O systems can feed it.22:26
drobillaBut it's fast enough to not be noticeable again so I don't care.22:26
rgareusdrobilla: the effective size and # of plugins won't shrink.22:27
rgareusdrobilla: is the file still scanned N times (once per plugin)?22:28
drobillargareus: For hosts that load everything about all plugins at startup, sure.22:28
drobillaThat is not the only use case, which is why data is split up.22:28
drobilla(e.g. jalv won't)22:29
drobillargareus: No, that was the fix.22:29
rgareusdrobilla: well, opening 64 files (or 32 if I group it) instead of just one is also overhead.22:29
rgareusdrobilla: the CPU parsing one file repetedly may be faster than disk i/O for small chunks22:29
drobillargareus: Unlikely, but irrelevant anyway since the point is to not force hosts to load a bunch of unnecessary data22:30
drobillaIt's a bit crap that so many do in the first place since it's often just for a type and label, but whatever.22:32
*** edogawa has quit IRC23:14
*** falktx has quit IRC23:24

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