Friday, 2015-03-06

*** gianMOD has joined #lv200:01
*** gianMOD has quit IRC00:18
badosuhttp://bado.so/2015-03-05-225832_1671x939_scrot.png02:05
drobillabadosu: pretty nice02:05
drobilla(I still think the labels should be on the same side of the knob, though)02:06
badosudrobilla: working on that02:16
badosuI gave up and included FLowLayout inline02:16
badosustill has less loc than jalv_gtk anyway02:17
badosuthe groups look messy because my desktop has a flat style, next screenshot I'll post with different style02:18
badosudrobilla: you mean the value labels? By same side you mean closer?02:22
drobillabadosu: I mean either both above, or both below02:29
drobillae.g. master vol is way up there, then the value for it way down there02:30
drobillaThese should be closely associated, and it looks kinda clumsy this way anyway IMO02:30
drobillaHmm, Gtk has GtkFlowBox, but only in 302:35
badosudrobilla: got it, I don't mind the label below, but if you say so02:43
badosuhttp://bado.so/2015-03-05-233909_1884x931_scrot.png02:45
badosuthe whole FlowLayout code is about ~200 loc, not too bad for what it does02:47
drobillabadosu: Better.  I'd keep the boxes around groups but probably not individual knobs, while we're nitpicking02:48
drobillaNow I have to be bothered by the Qt one being a better layout than the Gtk one, damnit :)02:48
drobillabadosu: That's fine.  As long as it's even remotely reasonable to be a single file thing, whatever02:49
badosudrobilla: this should be a problem with most plugins, as they dont have groups02:49
drobilla(I'm generally more concerned about the rest of Jalv serving as a cleanish example than the UIs)02:49
drobillabadosu: I don't see why that's a problem WRT boxes02:49
badosudrobilla: well, I prefer the box because it groups everything visually for me02:50
badosulet me share you 12-band without the boxes02:50
drobillaFrames are generally frowned upon since.... well, the 90's, but groups of audio controls seem to be one area they really have their place.  Just as on physical control panels02:50
drobilla(Though I can just barely see these)02:50
badosudrobilla: well, audio gui's are particular because they have this skeuomorphic design focused on what an audio engineer would see on a rack02:51
drobillaMore importantly, using a knob for enumerations?02:51
drobillabadosu: Highly overrated idea if you ask me, but yes02:51
badosudrobilla: works fine, it has well-defined state02:52
badosustates02:52
badosufor example if you drag it, it will jump from one state to another02:52
badosunot the best UI but since this is a minimal approach, it works fine02:52
drobillaDef. not, you have to skip through all the values and scroll around to find the value you're looking for02:53
drobillaBut whatever02:53
badosudrobilla: I agree02:53
badosudrobilla: but I am not very intelligent, you know02:53
badosudrobilla: It's a pain in the ass to define an interface to deal with different widget classes02:54
drobillaNobody intelligent thinks they are :)02:54
badosudrobilla: for now I am trying to mantain my sanity02:54
drobillaI'd expect all Qt widgets with some idea of "value" would emit a similar signal?02:54
badosuon gtk you did fine because you can send those nice callbacks with generic data02:54
badosuon Qt you have to subclass stuff (ugh)02:55
drobillaIt'd be a lot nicer in Gtkmm but I was doing the C thing02:55
drobillaRandom pseudo-related crazyville thoughts: in Ingen, I already have relatively good graph layout stuff.  I have been wondering if drawing an invisible graph with ports grouped into a node, and edges between "related" groups (ideally related to signal flow), then layout that out as a graph would do to make a decent control panel automagically02:57
drobillaProbably would not be very good at filling space, though02:57
badosuon QT you have http://qt-project.org/doc/qt-4.8/qwidget.html#changeEvent02:57
badosubut that's not so nice02:57
drobillaNo changed signal?  weird02:58
badosudrobilla: the interface changes02:58
badosuQABstractSlider has valueChanged(int), QComboBoc has indexChanged(int) or editTextChanged(string) or something like this02:58
badosuvalueChanged(void*) would be cool02:59
drobillaDifferent callbacks wouldn't be so bad, as long as you don't have to subclass03:00
badosudrobilla: I really would like to understand what you told above about Ingen03:00
drobillaramming stuff through void* isn't the most elegant situation in the world03:00
badosuI guess so :-)03:00
drobillabadosu: If you have Ingen or Patchage around, hit Ctrl-G.  that.03:00
badosuthere's no ingen on arch's canonical repos03:01
badosubut there's patchage03:01
drobilla(assuming it's built with graphviz anyway.  there's also "spring layout" (C-t), a different animated take on it)03:02
badosuok, I hit C-G on Patchage, the only thing I say was an interface similar to Catia's03:03
drobillaThat's because falktx shamelessley ripped off my interfaces ;)03:04
badosuhahahaha03:04
drobillaC-g should auto-arrange it nicely03:04
badosuyep, it did03:04
drobillaThat's all I was talking about03:05
drobillaSo e.g. if you had a (conceptual) graph that said "oscillator control group comes before filter control group" and so on, graph layout could give you a decent ordering of things03:05
badosuthat is a nice idea03:06
badosubut you would have to have metadata about what is what03:06
drobillayep.03:06
drobillaProbably more relevant to a Max-esque "presentation mode" in Ingen than laying out panels in general for that reason.03:07
drobillaThis (jalv) is more of a 2D packing problem03:07
badosuanyway, something that is really important is also the ability of setting user defined input for jalv.qt03:10
badosuanalogue to LMMS double click should open a dialog for user input03:10
badosuon enums/integers the user should see a combobox03:10
drobillaI prefer to avoid window hell whenever possible03:13
drobillaBut yes.  jalv.gtk lacks ability to enter precise values too03:13
drobillaSomeone asked for a command prompt for this, which is a slightly insane take on achieving the same goal03:13
badosujalv.gtk has SpinButton that you can edit03:16
badosuthe rest is comboboxes, how's that not precise?03:16
drobilla... did I already do that?03:16
* drobilla checks03:16
drobillaYep, sure did.03:16
* drobilla works on too many things, has generally no idea what's what03:39
drobillaPrompt request was for the console client, of course.  Easy enough03:39
* drobilla implements03:39
badosuwasnt this already implemented?03:43
badosujalv.gtk has this03:43
drobillahm?03:44
drobillajalv.gtk has numeric entries, yes03:44
drobillabut no prompt03:44
drobillathe console version has no way to set controls at all03:44
badosuoh, you mean to set at runtime03:45
badosuI thought you where talking about the --control flag03:45
drobillayeah, they all support it as a cmd line arg03:46
drobilla(reminds me of the rather glaring lack of a GUI plugin selector, but nevermind that...)03:46
drobillaPoor lil' jalv's getting ever fatter03:50
badosu:-( sorry03:54
badosudo we compile with C++11?03:56
drobillaNope.03:58
drobillaCan, if really necessary, but I prefer Jalv to err on the side of conservative03:58
badosuok03:58
drobillaI didn't really mean just what you're doing.03:59
drobillaNo matter.  Incentive for better library support.  If jalv is too much code then the libraries should support more03:59
badosuI know, I am just kidding :-)03:59
badosudrobilla: really would like to see a lv2 plugin using rdfs:comment03:59
drobillaI think lilv is going to have to start doing a lot more for run-time support to make some future LV2 things possible03:59
drobillabadosu: The MDA ones do03:59
badosudrobilla: nice! so I can test some features04:00
badosuthis doubleClick event is getting terrible, thinking of aborting it04:00
drobillaI need to fix the tooltip for comboboxes in jalv.gtk04:00
badosuit's feasible, but I don't know04:00
drobillabadosu: You could put a spinbutton instead of the label and just always leave it there04:00
badosuIf I had a svn server myself I could share my progress, but I am not used to it04:01
badosudrobilla: then I would have to put a combo when it's enum/integer with scale04:01
drobillabadosu: Of dubious value for enums anyway.04:02
drobillaThe MDA ones have values like 0.333333333333........04:02
badosuit's an enum?04:02
drobillayes04:02
badosuoh crap, this will brak my logic04:02
drobillaprecise entry doesn't really have any point for enums.  It's for numeric things04:02
drobillaI already told you that part when you asked if enum meant integer :)04:03
badosulet me see04:03
drobilla(yes, it's kind of odd)04:03
drobillaWhat it really means is "the scale points are the only reasonable values for this control", that's all04:03
badosuyeah, I get it04:04
badosuit's just that for me it's kinda odd, although I can see use case for it04:04
badosufor example if the plugin author does not care for fine-tuning of a partiular control and want to label each step04:04
drobillaRealistically it's pretty much for "show a combo box"04:05
badosuif he uses an enum without integers he does not need to bother with converting values04:05
badosuI mean, with floats04:05
drobillaYeah, if the value have some numerical meaning I can see it making sense04:05
badosufor example a control which obeys a gaussian scale04:05
badosuany function that saturates anywayh04:06
drobilla(MDA is just that way because the VST 0..1 controls were and I retained their interface, wouldn't do it that way myself for such things)04:06
badosuit's fine04:06
badosuAt least I separated the logic to deal with this kind of stuff04:06
badosuI did not want to subclass QDial to FQDial, LQDial or any of this bullshit04:07
badosuso I just put a function on the whole control to deal with this which has awareness of it's properties04:07
badosuin particular: setRange, getValue, setValue and refresh04:08
drobillaYeah, they all have to do with the value anyway04:08
badosueverything is compatible with float, that's a thing that I thought bad of LV2 at first04:08
badosubut I am seeing a use for it now04:08
drobillaNot necessarily true04:09
badosuwhat is not necessarily true?04:09
drobillaThough for ControlPort, yes04:09
drobillaHaving a bunch of different types is a PITA anyway.  For numbers at least, everything-is-float is a lot more convenient04:10
badosuI am only dealing with ControlPorts04:10
badosuis there any use for dealing with something other than controltypes on the plugin GUI?04:11
drobillabadosu: LADSPA equivalent04:11
drobillabadosu: Not something you really have to worry about04:11
drobillajalv.gtk has preliminary support for file properties (controlled via a message)04:11
drobillayou can see this with eg-sampler04:11
badosuhmm.. I saw a file-choose04:11
badosuAlso, still need to make presets work04:12
drobillaThis is where things are probably going to go in the future for other controls, since ControlPort is pretty crap at the end of the day, but not something pressing right now04:12
badosuAlso, preset loading is very slow04:12
badosuspecifically for amsynth wich has hundreds of presets04:12
drobillaNeed hierarchical menu, too04:14
drobillaI'm guessing it puts them all in one file, so loading any preset means parsing the whole thing04:14
drobillaI'll look into this (later)04:14
badosuI thought this was easier when I started04:17
drobillaWell, you took a pretty ambitious route with it04:19
drobillaWhich is awesome, don't get me wrong.  Just saying, coulda been easy if you did a shitty one :)04:20
drobillaGUIs are always....... "fun"04:20
badosudrobilla: well, you know, I hate C++04:21
badosuwhy the fuck I would downgrade from C to C++ and still not be able to get all values from a std::map without 10 lines of boilerplate?04:22
drobillaEveryone hates C++04:22
drobillaYeah, range-based for loops are worth the price of admission for C++11 alone04:22
badosuQT is pretty cool, and has a very nice usage of C++ classes04:23
* drobilla seriously ponders trying to write some LAD stuff in Rust, but some questions with strict RT-ness there still04:23
badosubut still, it's difficult04:23
badosudrobilla: me too, my next project is to make amp.rs04:23
badosuI already have bindings from lv2 to rust04:24
drobillaQt would be a lot better if it dropped the moc insanity and used some fancy new C++11 signals and whatnot, but what can you do...04:24
drobillabadosu: awesome04:24
badosuit's not published, so if you want me to paste it somewhere, let me know04:25
drobillaAs long as you don't alloc it's probably fine.  I think you can suppress box/gc stuff with annotations somehow, but I'm still a 100% Rust neophite04:25
drobillabadosu: Well, keep me posted04:26
drobillaSince I'm on an official bindings kick, official ones would be nice, but still need to finish C++...04:26
badosuthere it is: https://gist.github.com/badosu/465d5b025c159a533af604:27
badosuit's basically cxx2rs on lv2.h04:27
drobillabadosu: Got a plugin?04:27
badosudrobilla: still working on it, have to finish jalv.qt first04:28
drobillak04:28
drobillaI wonder how nice I could do atom bindings04:28
drobillaHandling messages with pattern matching would be super nice04:29
badosudrobilla: super excited about how a DAW on rust would be easier to develop and still mantain performance04:30
badosuwithout dangling or null pointers, without allocation04:30
drobillaStart small :)04:31
badosudrobilla: I can't do it by myself :-)04:31
drobillaWell, cross-thread comm without alloc (i.e. RT safe) seems to be a gap right now04:31
badosureally? hmm, I thought this was kinda covered04:31
drobillaI don't think so.  RT safety really isn't on the radar for Rust04:32
drobillaA function annotation for this, so things statically fail if you call a non-RT-safe function from an RT safe one would be awesome04:32
drobillaSomeone was actually tinkering with doing this for clang but C++ makes it pretty rough.  C is kinda doable, but never made it upstream IIRC04:33
* drobilla is so tired of shitty type systems04:33
badosuhmmm, got it04:35
badosuis this too terrible?04:35
badosuhttp://bado.so/2015-03-06-012857_1920x1080_scrot.png04:35
* drobilla cringes :)04:37
drobillaI guess it's fine, if making the value label an editable widget is that much harder04:38
badosuyou mean, if I cliecked the label it popped up a surprise control?04:39
drobillaI mean literally just make the label a combo box04:39
drobillaor spinbutton, for the numbers04:39
badosuor checkbox for toggle04:39
drobillaright.04:39
drobillaboth have the handy property of showing the value anyway04:40
badosuok, so I'll bother with this later, gonna delete the doubleClick handler04:40
drobillaknob for toggles is even weirder than knob for enums, but I see how not-knobs would be a problem here04:40
badosuyeah :-(. It would work even using a QDial, you would just switch the graphics to be a switch04:41
badosuQDial for {0,1} behaves surprisingly close to a switch design04:42
badosubut the graphics is misleading04:42
drobillaFair enough.  With a value widget it'd be pretty good anyway04:44
badosunice there's mda-lv2 on AUR04:48
drobillabadosu: Whoah, yeah, the preset menu is completely useless for amsynth04:49
badosudo you remember which one had the float enum?04:49
drobillabadosu: combo has one04:50
drobillabadosu: http://pastebin.com/dhASZ0Zb04:50
badosuamsynth made a nice job grouping the presets into banks though04:50
badosujust fired up combo04:51
drobillaYeah, except they aren't...04:51
drobillaGuess I can use this as my test case for preset banks04:51
badosuok, I thought so04:51
badosuit was just the name of the preset that made me think so04:52
badosuLOL @ Combo's Model scale points04:53
drobillayyyyyyyep.04:53
badosudeciding if I handle long scale point names or not05:33
badosuamazing, everything on the control side is done, apart from precise tuning05:46
*** gabrbedd has quit IRC07:20
*** edogawa has joined #lv207:27
*** sigma6 has joined #lv208:11
*** falktx has joined #lv209:07
*** gianMOD has joined #lv209:15
*** gianMOD has quit IRC09:24
*** ricardocrudo has joined #lv209:30
*** gianMOD has joined #lv209:40
*** gianMOD has quit IRC09:57
*** ricardocrudo has quit IRC10:42
*** falktx has quit IRC10:46
*** ricardocrudo has joined #lv210:50
*** ricardocrudo has quit IRC10:55
*** curlymorphic has quit IRC11:05
*** falktx has joined #lv212:05
*** falktx has quit IRC12:19
*** falktx has joined #lv213:04
*** curlymorphic has joined #lv213:35
*** ricardocrudo has joined #lv213:58
*** gabrbedd has joined #lv215:10
*** edogawa_ has joined #lv216:52
*** sigma6 has quit IRC16:54
*** edogawa has quit IRC16:55
*** ddom has joined #lv217:12
*** falktx has quit IRC17:44
*** ricardocrudo has quit IRC18:17
*** aombk2 has joined #lv219:10
*** aombk has quit IRC19:13
drobillaImplemented banks and a hierarchical preset menu in jalv.gtk19:14
LAbotdrobilla: Sent 3 hours and 42 minutes ago: <badosu> Check your inbox, I sent the patch19:14
drobillalike I just wouldn't check my email today otherwise :P19:15
*** falktx has joined #lv219:23
*** rncbc has joined #lv220:36
*** falktx has quit IRC21:36
*** rncbc has quit IRC21:53
*** sigma6 has joined #lv222:29
*** mlpug has joined #lv222:43
*** mlpug has quit IRC22:50
*** NickSB2 has joined #lv222:50
*** NickSB2__ has quit IRC22:54
drobillaAnyone know of any other plugins out there with lots of presets that could be organized into banks?23:59

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