Wednesday, 2014-12-10

HarryHaarendrobilla, puglPoseExpose( view, x, y, w, h) will get called for every pixel of movement during a drag00:10
HarryHaarenits *much* slower in reacting than the way its currently running.00:10
HarryHaarennote that Cairo is still drawing all of the surface, so there's improvemnt to be had there00:11
HarryHaarenquestion I'm asking is, is this designed to work for every pixel of movement, or should there be some filter on speed in puglEventExpose() calls00:11
HarryHaarenalso, PuglDisplayFunc() only has a view, no rectangle, so I can't make Cairo redraw only a critical area00:13
drobillaHarryHaaren: Why is post expose being called?00:14
drobillaHarryHaaren: An expose will happen, for sure, because it's literally an expose, but the (e.g.) X11 backend posts that00:15
drobillai.e. that should have been the case before as well00:15
drobillaand yes, the display function needs to be able to request a specific region for this to have any point at all00:15
HarryHaarenpuglPostExpose() is the function to redraw just a region, the one I added?00:16
drobillaYes, but that's for the UI to call if it explicitly wants to invalidate a region00:17
drobillaHow is it being called when the mouse moves?00:17
HarryHaarentake a slider for example00:17
HarryHaarenthe widget needs to expose the region it lives in on mouse-drag event00:17
HarryHaareni have a widget hier-archy here, and it calls puglPostExpose() with the redraw rectangle in pixels00:18
drobillaThat would have been happening before, too, though00:18
drobillaBasically everything is the same except you're adding a more constrained region, so I don't see how it could get worse00:18
HarryHaarenyep. Sorry I don't see what you're asking.00:18
drobillaWell, let me put it this way.  Previously: *bunch of stuff happens, to redraw entire window*  Now: *bunch of stuff happens, to redraw just a portion*00:19
drobillaThe *bunch of stuff happens* is the same00:19
drobillaSo how could it get slower?00:19
HarryHaarenbecause before the view->redisplay flag was being checked, and I have a usleep() in the processEvents() loop. Now we don't check a flag, but *immidiatly* draw00:19
drobillaah.00:20
HarryHaarenthe immidiate draw causes it to *never* skip a pixel or two of movement, while before it would skip some pixels movement00:20
drobillaSo somebody needs to actually keep a list of rectangles around00:20
HarryHaarenactually a single rectangle: just the "biggest common rectangle" or whatever00:21
drobilla(or maybe be lazy and just merge them into one possibly ridiculously imprecise one)00:21
HarryHaarenyes00:21
HarryHaaren:)00:21
HarryHaarencairo has a clip() function, which can be used to only have cairo redraw a given rect00:22
drobillaAlthough system-originated exposes will not benefit from this currently00:22
HarryHaarenits user-originated ones that occur most frequently (and are most important) though right?00:22
drobilla........... this is getting tookit-ey and I don't like it00:22
HarryHaarenaka, mouse drag on slider -> slider moves00:22
HarryHaarendrobilla, I'm building a toolkit *on* PUGL, not *in* PUGL00:23
drobillaWell, swing the mouse across the window, and you get the same00:23
HarryHaarenits AVTK v2 essentially, and yes its toolkit-y00:23
drobillaUnless the window system is clever about this with hardware cursors, I suppose00:23
drobillaWhich is quite likely the case but I'm dumb00:23
HarryHaareni think that's the case yeah..00:23
HarryHaarennot you being dumb, the mouse thing :D Sorry.00:23
drobillaSo swing a window across your window would be it00:23
drobillaHm.  So, basically, instead of a flag, we keep a rectangle00:24
HarryHaareni think the solution is to use the flag just like the "normal" expose event00:24
HarryHaarenyeah, or a flag + rectangle00:24
drobillapuglPostRedisplay will just set it to the whole window00:24
HarryHaarenyes00:24
drobillathe precise one is, well, more precise00:24
drobillaand maybe the expose events from the system should do likewise but we can ignore that00:24
HarryHaarenyep sounds good.00:25
drobillapretty much, but non-empty rectangle can probably serve as a flag too00:25
HarryHaarenso moving the PuglEventExpose instance might be good to have in the impl struct?00:25
HarryHaarenrather than a const one in the actual redraw-code?00:25
drobillaSeems sketchy to re-use an event for not-an-event, but maybe not00:26
HarryHaarenuse the same one, set the rectangle to 0,0,width,height for "normal", and set to custom precies rect otherwise?00:26
HarryHaarenthis is literally the event that will be sent00:26
drobillaactually, I notice that puglProcessEvents already does this.  it handles the flag by firing off an event00:26
HarryHaarenonly it won't be on the stack, but in the impl struct00:26
HarryHaarenyes.00:26
drobillaSeems reasonable00:26
HarryHaarenthat's the issue, my crude version of postExpose() doesn't.00:27
HarryHaarencool, I'll do that then... and see if things speed up over "normal" mode.00:27
HarryHaarenright, bedtime too, that's for tomorrow. Laters, enjoy the evening!00:27
drobilla'night00:28
*** HarryHaaren has quit IRC00:29
*** NickSB has quit IRC01:08
*** NickSB has joined #lv201:15
*** ricardocrudo has joined #lv201:20
*** ricardocrudo has quit IRC01:56
*** velho has joined #lv202:19
*** velho has quit IRC02:32
*** velho has joined #lv202:33
*** velho has quit IRC03:48
*** velho has joined #lv203:54
*** velho has quit IRC04:09
*** gabrbedd has quit IRC04:14
*** velho has joined #lv204:45
*** velho_ has joined #lv204:48
*** velho has quit IRC04:51
*** velho_ has quit IRC05:01
*** velho has joined #lv205:04
*** velho has quit IRC05:25
*** grejppi has quit IRC05:28
*** edogawa has joined #lv207:30
*** edogawa_ has joined #lv208:04
*** edogawa has quit IRC08:07
*** edogawa_ is now known as edogawa08:17
*** edogawa has quit IRC09:36
*** edogawa has joined #lv209:39
*** edogawa has quit IRC10:27
*** edogawa has joined #lv210:54
*** NickSB2 has joined #lv211:24
*** grejppi has joined #lv211:43
*** ricardocrudo has joined #lv211:53
bgoladrobilla: is it possible to save / export a graph in ingen using the rest api?12:32
*** rncbc_jolla has joined #lv212:40
*** gianMOD has joined #lv213:10
*** p0nce has joined #lv213:49
p0ncehi, trick question13:50
p0nceis there a market for commercial LV2 plugins?13:50
p0nceI'd like to know if implementing LV2 worth it13:50
p0ncein a format-abstracting library13:50
*** NickSB2 has quit IRC13:51
Joeboyp0nce: At a guess, probably not. Linuxdsp just stopped selling lv2 plugins largely on the basis of lack of demand. Other than that I don't think there's much data to go on.13:56
Joeboyp0nce: Of cource it would be great if you did it anyway.13:57
Joeboyp0nce: The mod duo might possibly open the market up a bit when released.13:57
gianMODhi Joeboy14:04
gianMODyep. we hope so :-)14:04
gianMODI've been talking to developers about it14:04
gianMODeven LinuxDSP is interested14:04
gianMODbut it is clear that their interest is just because the MOD is not a Desktop environment14:05
gianMODin the Desktop Environments VST seems to hold supremacy14:05
JoeboyYeah, the mod is in a very good position in the realm of ultra-flexible hardware fx boxes14:06
gianMODsure14:06
Joeboywhich seem like an idea whose time probably should have come a while ago already14:06
gianMODi'm lucky it didn't :-)14:07
gianMODwe intend to shoot in both fields14:07
JoeboygianMOD: I had a crazy plan to do a baremetal lv2 host a while ago, which you have saved me from.14:07
p0nceinteresting project, since the Owl is ARM, will the mod duo be x86?14:08
gianMODas we'll release the MOD softwares for desktop as well14:08
Joeboyp0nce: It's arm iirc14:08
gianMODas it will be all open source and free, maybe people adopt it due to the easiness of the GUI14:08
gianMODthe current MOD, the Quadra , is Intel14:09
gianMODthe MOD Duo is ARM, but we didn't ship it yet14:09
gianMODwe're still to decide wether we will continue to offer the intel platform14:09
gianMODI'm in China right now14:09
p0nceI have an owl and never used it :| ARM + only big jacks delayed it14:10
gianMODand one of my acquisitions is an ARM OctaCore 2.0 GHz board14:10
p0nceXLR would be great14:10
gianMODif this beast is as powerfull as it seems I believe the MOD Intel days are over14:10
gianMODXLR is way too big14:10
JoeboygianMOD: I think the duo will live or die according to how stable it is (or how buggy it isn't). The kind of people you need to get excited about it won't put up with random crashes / glitches. I've heard positive things in this regard though.14:10
gianMODwe have XLR on the Qaudra14:11
gianMODthe  Quadra is pretty stable14:11
p0ncedidn't know about the quadra, but looks more interesting :)14:11
p0ncethan owl or mod duo14:11
p0ncethat's just me14:11
gianMODis depends much more on the plugins than anything else14:11
gianMODthe Quadra is a great machine14:12
gianMODthe reason to buy this ARM OctaCore is exactly to targer a New Quadra14:12
gianMOD*target14:12
gianMODi believe that eight cores running at 2.0GHz might do the job14:12
gianMODbut I can only believe when I see14:13
gianMODthe intel platform is too cumbersome for emnedding14:13
gianMODembedding14:13
gianMODBIOS sucks14:13
gianMODCooler sucks14:14
gianMODNo USB Device sucks14:14
gianMODno GPIOs Sucks14:14
gianMODno I2S sucks14:14
p0nceI'm only talking from a plugin developer pov14:14
p0ncex86 is well known for us14:14
gianMODyep. the CPU horsepower does not suck at all :-)14:15
gianMODwell. so far all our job to port to ARM has been on reconfiguring makefiles14:15
gianMODbut I reckon that at some point we'll have to really go into the code of some plugins in order to extract the most form the CPU14:16
gianMODspecially in order to use the NEON and the Floating point units14:16
p0ncereally what I'd like is a VST host in a box, cheaper than a muse receptor14:19
*** rncbc_jolla has quit IRC14:19
p0ncebut I guess it's way different internally14:19
gianMODp0nce: it surely is14:20
JoeboyI think there's some version of VST that's designed for hardware applications14:20
Joeboyembedded applications I mean14:20
JoeboyI don't know if anybody uses it14:20
gianMODhave yo ever tried V-MAchine ?14:20
JoeboyNot me14:20
gianMODor the V-Ped14:21
p0nceinteresting, thx14:21
gianMODthey are both VST hardware hosts14:23
JoeboyCompetition for the MODs?14:24
gianMODkind of14:24
gianMODbut they already existed14:24
gianMODbefore us14:24
gianMODi've never used none of them14:24
gianMODbut reviews aren't that good14:24
p0nceok thanks for informations14:32
p0nceit seems VST has made inroads on linux too14:32
p0ncedespite being VST14:32
gianMODp0nce: what do you mean?14:35
*** HarryHaaren has joined #lv214:36
p0ncethere are more commercial VST for linux from what I see14:36
p0ncethan LV214:36
gianMODbut what about VST support?14:37
p0ncedunno14:37
gianMODAFAIK there still no official support14:38
gianMODguess this poses a kind of a drawback14:38
HarryHaarenp0nce, is there anything in particular that you're missing in LV2 land?14:49
p0nceI was wondering about the size of the plugin market there14:50
p0ncenothing is missing, I can read the header and se it's well done14:50
HarryHaarenp0nce, well its a "growing market", and there's a lot of serious improvements in plugins in the last 1/2 year alone14:55
HarryHaarenp0nce, are you a developer? Or what is your interest14:56
p0nceI've done some VST/AU plugins (hobby) considering to do it fulltime14:56
HarryHaarenp0nce, cool. What type of plugins have you written?14:57
p0ncesmall effects14:57
p0ncea small synth14:57
HarryHaarensounds cool, any links / demos?14:57
p0ncegamesfrommars.fr/plugins/14:58
p0nceI used WDL to have AU/VST wrapper, now writing own wrapper14:58
p0ncelooks reasonable to be intested in all formats14:58
HarryHaarenp0nce, so LV2 is amazing as it can be extended transparently: no API / ABI breakage, hosts can choose to support specific extensions or not14:59
HarryHaarenan example is perhaps the "worker-thread", a host allows the plugin to do work in a non-RT thread14:59
p0nceas I see it, LV2 only deals with the audio thread?15:00
HarryHaarenvery useful for loading samples etc, and it saves the plugin from having to do x-thread comms15:00
p0nceis there a list of extensions somewhere?15:00
p0nceI don't see it in the sdk15:01
HarryHaarenthese are the "official" ones, but any plugin-author can release thier own extensions: lv2plug.in/ns/15:02
p0ncehow would I manage the GUI?15:03
p0ncedo I have a parent window to attach to? or LV2 let me do anything15:03
HarryHaarenp0nce, there's a few different ways of doing this: how do you currently do the UI->DSP communication for the knobs on eg Koch?15:04
HarryHaarendoes the UI have an "instance pointer" of the DSP, and communicate directly?15:04
*** gabrbedd has joined #lv215:05
p0ncein VST, the host makes all things UI-related from its UI thread, UI -> DSP is usually handled through locked/lockfree queues15:05
p0nceUI has a pointer to the DSP object15:06
*** gabrbedd has quit IRC15:06
p0nceI don't remember it if signals param change to just DSP or also the host15:06
p0ncealso. in VST/AU you get a window handle to draw into, and I believe AAX/VST3 is around the same15:07
p0nces/to draw into/to derive from15:07
*** gabrbedd has joined #lv215:08
p0nceHarryHaaren: what makes you think it's a growing market?15:08
p0ncesorry to be annoying15:08
HarryHaarenp0nce, right so in LV2 the UI and DSP *should be* *totally* seperated, and *all* communications done using control ports, or else Atom messages15:08
HarryHaarenp0nce, please ask questions :) I'm proud to be a member of the LV2 community, and I'm also currently trying to make some money writing plugins etc15:09
p0nceHarryHaaren: that's why advanced audio companies do from what I've seen, they have cleanly separated UI and dsp it with ports15:09
p0nce-it15:10
p0nceHarryHaaren: links?15:10
HarryHaarenI've been releasing LV2 plugins for the year and a half, and its easier to get people to financially support now than when I started.15:10
p0ncefantastic15:10
HarryHaarenthat said, I'm not yet making a full-time living from this15:10
HarryHaarenso its not a "lots-of-money available" situation15:10
HarryHaarenI'm http://openavproductions.com/15:10
p0ncenice15:12
HarryHaarenp0nce, what I was going to say was that LV2 has these "Atom" objects to communicate, and that they make a very clean and nice seperation between UI and DSP15:15
HarryHaarenthat basically means that the current code you have might need to be "seperated" into UI and DSP more than it currnetly is15:16
HarryHaarenthe advantage is that the UI can run on another computer, networked, tablet, or the host can generate one15:16
p0nceindeed, JUCE and IPlug/WDL are known for tight coupling of UI and DSP15:17
p0ncein the move to AAX, some companies rewrote the JUCE plugin client15:17
p0nceI'm not sure of all the reasons of course15:18
HarryHaarenp0nce, the LV2 distribution has some example plugins, they're good learning resources15:25
HarryHaarenp0nce, but if you want to "write-once" and "deploy everywhere", then DISTRHO is your man: distrho.sourceforge.net15:26
p0ncethanks15:26
HarryHaarenp0nce, check this out too, its LV2 software in a hardware pedal-box: portalmod.com/home15:27
HarryHaarendrobilla, I've reduced the number of widgets in my double-buffering test UI (a lot), and without partial redraws it responds really fast. Wonder what I'll be like once partial-exposes works!15:32
*** Haskellfant has quit IRC15:46
*** Haskellfant has joined #lv215:46
*** ricardocrudo has quit IRC17:00
*** falktx has joined #lv217:06
*** zth has joined #lv217:08
*** ricardocrudo has joined #lv217:08
*** ricardocrudo has joined #lv217:08
drobillabgola: No.  Saving happens client-side17:20
drobillabgola: I need to move it to the server to support saving plugin state...17:20
bgoladrobilla: hm, nice :) im doing some tests with mod-ui controlling ingen... and maybe use ingen instead of mod-host.. do you think it makes sense?17:27
drobillaHarryHaaren: I guess you can simply clip with cairo and "drawing" all the stuff outside the rect is "free enough"...17:27
bgolai don't see a reason to keep supporting / developing our own host if ingen can be controlled via socket (as mod-host)17:27
drobillabgola: Need to do some things to make it be able to do some 'ingeney' things to replace the current UI, but a web UI for Ingen would be awesome17:28
drobillaI wish there was a clearly good JS serialisation... the possibility of URI values, and datatypes, means objects for the values which is pretty ugly :/17:28
drobillabgola: Keep me posted.  I can make changes to the server as necessary, though time's running a taaaaaad thin lately...17:30
*** gianMOD has quit IRC17:31
falktxbgola: the same can be done via carla engine with some tweaks17:31
falktxI have full osc support in place not sockets. but shouldn't be too hard to get it working17:32
falktxbgola: is there a list of required API calls somewhere?17:42
*** p0nce has left #lv217:59
*** gianMOD has joined #lv218:07
*** falktx has quit IRC18:09
*** rncbc has joined #lv218:17
*** falktx has joined #lv218:29
*** mlpug has joined #lv218:40
*** rncbc has quit IRC18:46
drobillaTook nearly 10 years for anybody to notice loading files with spaces doesn't work19:42
drobillaHow delightfully Unix of us :)19:42
falktxdrobilla: it was working before in lilv19:43
drobillafalktx: Partially19:43
falktxI remember having pianoteq working fine at some time19:44
drobilla(also invalidly, for the ttl part)19:44
drobillaOh well19:44
Anchakorspaces like space instead of tabs?19:46
drobillaAnchakor: in URIs19:47
Anchakorah19:48
Anchakordoes loading files with '%20' work? :)19:49
falktxnot in URIs, in paths19:50
falktxas in: lv2:binary <this file.so>;19:51
falktxor: rdfs:seeAlso <that file.ttl>19:51
Anchakoryeah19:52
*** zth has quit IRC19:55
*** Anchakor_ has quit IRC19:56
*** Anchakor_ has joined #lv220:00
drobillafalktx: that *is* a URI20:05
drobillaAnchakor: it does now20:05
drobillafalktx: i.e. that's invalid20:06
falktxwell, then I have to say using URIs for that was a mistake20:06
drobilla... yeah, okay20:06
falktxdrobilla: so I assume absolute paths must be handled as "<file:///...>" ?20:06
drobillafalktx: depends what the base URI is, but that aside, yes20:07
drobilla</foo/bar> would be /foo/bar in the bundle20:07
drobillaI can make the parser lax to handle spaces, but see now way around the latter20:07
*** NickSB2 has joined #lv220:11
drobillaI will try to make it print an error, but still parse20:25
drobillaif it's a printable character, anyway20:25
drobillaI can't imagine passing through escapes and stuff is at all a good idea...20:25
drobillaheh, which works, but one of the turtle conformance tests fails, it explicitly is a bad test for this20:28
drobillaSo I guess I need to add to the API so you can toggle strict :/20:29
*** mlpug has quit IRC20:37
drobillaBleh, well, kinda messy.. reader lax by default, serdi strict by default, but this preserves old behaviour (but with proper error messages on invalid input) without bumping lilv's serd dependency or sprinkling set_strict(false) throughout the code20:52
drobillaUnfortunately -e (tolerate errors) as in raptor is already taken20:53
*** ricardocrudo has quit IRC22:04
*** wumpus has joined #lv222:11
*** wumpus has joined #lv222:13
*** gianMOD has quit IRC23:15
*** edogawa has quit IRC23:19

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