*** gianMOD has joined #lv2 | 00:01 | |
*** gianMOD has quit IRC | 00:18 | |
badosu | http://bado.so/2015-03-05-225832_1671x939_scrot.png | 02:05 |
---|---|---|
drobilla | badosu: pretty nice | 02:05 |
drobilla | (I still think the labels should be on the same side of the knob, though) | 02:06 |
badosu | drobilla: working on that | 02:16 |
badosu | I gave up and included FLowLayout inline | 02:16 |
badosu | still has less loc than jalv_gtk anyway | 02:17 |
badosu | the groups look messy because my desktop has a flat style, next screenshot I'll post with different style | 02:18 |
badosu | drobilla: you mean the value labels? By same side you mean closer? | 02:22 |
drobilla | badosu: I mean either both above, or both below | 02:29 |
drobilla | e.g. master vol is way up there, then the value for it way down there | 02:30 |
drobilla | These should be closely associated, and it looks kinda clumsy this way anyway IMO | 02:30 |
drobilla | Hmm, Gtk has GtkFlowBox, but only in 3 | 02:35 |
badosu | drobilla: got it, I don't mind the label below, but if you say so | 02:43 |
badosu | http://bado.so/2015-03-05-233909_1884x931_scrot.png | 02:45 |
badosu | the whole FlowLayout code is about ~200 loc, not too bad for what it does | 02:47 |
drobilla | badosu: Better. I'd keep the boxes around groups but probably not individual knobs, while we're nitpicking | 02:48 |
drobilla | Now I have to be bothered by the Qt one being a better layout than the Gtk one, damnit :) | 02:48 |
drobilla | badosu: That's fine. As long as it's even remotely reasonable to be a single file thing, whatever | 02:49 |
badosu | drobilla: this should be a problem with most plugins, as they dont have groups | 02:49 |
drobilla | (I'm generally more concerned about the rest of Jalv serving as a cleanish example than the UIs) | 02:49 |
drobilla | badosu: I don't see why that's a problem WRT boxes | 02:49 |
badosu | drobilla: well, I prefer the box because it groups everything visually for me | 02:50 |
badosu | let me share you 12-band without the boxes | 02:50 |
drobilla | Frames 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 panels | 02:50 |
drobilla | (Though I can just barely see these) | 02:50 |
badosu | drobilla: well, audio gui's are particular because they have this skeuomorphic design focused on what an audio engineer would see on a rack | 02:51 |
drobilla | More importantly, using a knob for enumerations? | 02:51 |
drobilla | badosu: Highly overrated idea if you ask me, but yes | 02:51 |
badosu | drobilla: works fine, it has well-defined state | 02:52 |
badosu | states | 02:52 |
badosu | for example if you drag it, it will jump from one state to another | 02:52 |
badosu | not the best UI but since this is a minimal approach, it works fine | 02:52 |
drobilla | Def. not, you have to skip through all the values and scroll around to find the value you're looking for | 02:53 |
drobilla | But whatever | 02:53 |
badosu | drobilla: I agree | 02:53 |
badosu | drobilla: but I am not very intelligent, you know | 02:53 |
badosu | drobilla: It's a pain in the ass to define an interface to deal with different widget classes | 02:54 |
drobilla | Nobody intelligent thinks they are :) | 02:54 |
badosu | drobilla: for now I am trying to mantain my sanity | 02:54 |
drobilla | I'd expect all Qt widgets with some idea of "value" would emit a similar signal? | 02:54 |
badosu | on gtk you did fine because you can send those nice callbacks with generic data | 02:54 |
badosu | on Qt you have to subclass stuff (ugh) | 02:55 |
drobilla | It'd be a lot nicer in Gtkmm but I was doing the C thing | 02:55 |
drobilla | Random 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 automagically | 02:57 |
drobilla | Probably would not be very good at filling space, though | 02:57 |
badosu | on QT you have http://qt-project.org/doc/qt-4.8/qwidget.html#changeEvent | 02:57 |
badosu | but that's not so nice | 02:57 |
drobilla | No changed signal? weird | 02:58 |
badosu | drobilla: the interface changes | 02:58 |
badosu | QABstractSlider has valueChanged(int), QComboBoc has indexChanged(int) or editTextChanged(string) or something like this | 02:58 |
badosu | valueChanged(void*) would be cool | 02:59 |
drobilla | Different callbacks wouldn't be so bad, as long as you don't have to subclass | 03:00 |
badosu | drobilla: I really would like to understand what you told above about Ingen | 03:00 |
drobilla | ramming stuff through void* isn't the most elegant situation in the world | 03:00 |
badosu | I guess so :-) | 03:00 |
drobilla | badosu: If you have Ingen or Patchage around, hit Ctrl-G. that. | 03:00 |
badosu | there's no ingen on arch's canonical repos | 03:01 |
badosu | but there's patchage | 03:01 |
drobilla | (assuming it's built with graphviz anyway. there's also "spring layout" (C-t), a different animated take on it) | 03:02 |
badosu | ok, I hit C-G on Patchage, the only thing I say was an interface similar to Catia's | 03:03 |
drobilla | That's because falktx shamelessley ripped off my interfaces ;) | 03:04 |
badosu | hahahaha | 03:04 |
drobilla | C-g should auto-arrange it nicely | 03:04 |
badosu | yep, it did | 03:04 |
drobilla | That's all I was talking about | 03:05 |
drobilla | So 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 things | 03:05 |
badosu | that is a nice idea | 03:06 |
badosu | but you would have to have metadata about what is what | 03:06 |
drobilla | yep. | 03:06 |
drobilla | Probably more relevant to a Max-esque "presentation mode" in Ingen than laying out panels in general for that reason. | 03:07 |
drobilla | This (jalv) is more of a 2D packing problem | 03:07 |
badosu | anyway, something that is really important is also the ability of setting user defined input for jalv.qt | 03:10 |
badosu | analogue to LMMS double click should open a dialog for user input | 03:10 |
badosu | on enums/integers the user should see a combobox | 03:10 |
drobilla | I prefer to avoid window hell whenever possible | 03:13 |
drobilla | But yes. jalv.gtk lacks ability to enter precise values too | 03:13 |
drobilla | Someone asked for a command prompt for this, which is a slightly insane take on achieving the same goal | 03:13 |
badosu | jalv.gtk has SpinButton that you can edit | 03:16 |
badosu | the rest is comboboxes, how's that not precise? | 03:16 |
drobilla | ... did I already do that? | 03:16 |
* drobilla checks | 03:16 | |
drobilla | Yep, sure did. | 03:16 |
* drobilla works on too many things, has generally no idea what's what | 03:39 | |
drobilla | Prompt request was for the console client, of course. Easy enough | 03:39 |
* drobilla implements | 03:39 | |
badosu | wasnt this already implemented? | 03:43 |
badosu | jalv.gtk has this | 03:43 |
drobilla | hm? | 03:44 |
drobilla | jalv.gtk has numeric entries, yes | 03:44 |
drobilla | but no prompt | 03:44 |
drobilla | the console version has no way to set controls at all | 03:44 |
badosu | oh, you mean to set at runtime | 03:45 |
badosu | I thought you where talking about the --control flag | 03:45 |
drobilla | yeah, they all support it as a cmd line arg | 03:46 |
drobilla | (reminds me of the rather glaring lack of a GUI plugin selector, but nevermind that...) | 03:46 |
drobilla | Poor lil' jalv's getting ever fatter | 03:50 |
badosu | :-( sorry | 03:54 |
badosu | do we compile with C++11? | 03:56 |
drobilla | Nope. | 03:58 |
drobilla | Can, if really necessary, but I prefer Jalv to err on the side of conservative | 03:58 |
badosu | ok | 03:58 |
drobilla | I didn't really mean just what you're doing. | 03:59 |
drobilla | No matter. Incentive for better library support. If jalv is too much code then the libraries should support more | 03:59 |
badosu | I know, I am just kidding :-) | 03:59 |
badosu | drobilla: really would like to see a lv2 plugin using rdfs:comment | 03:59 |
drobilla | I think lilv is going to have to start doing a lot more for run-time support to make some future LV2 things possible | 03:59 |
drobilla | badosu: The MDA ones do | 03:59 |
badosu | drobilla: nice! so I can test some features | 04:00 |
badosu | this doubleClick event is getting terrible, thinking of aborting it | 04:00 |
drobilla | I need to fix the tooltip for comboboxes in jalv.gtk | 04:00 |
badosu | it's feasible, but I don't know | 04:00 |
drobilla | badosu: You could put a spinbutton instead of the label and just always leave it there | 04:00 |
badosu | If I had a svn server myself I could share my progress, but I am not used to it | 04:01 |
badosu | drobilla: then I would have to put a combo when it's enum/integer with scale | 04:01 |
drobilla | badosu: Of dubious value for enums anyway. | 04:02 |
drobilla | The MDA ones have values like 0.333333333333........ | 04:02 |
badosu | it's an enum? | 04:02 |
drobilla | yes | 04:02 |
badosu | oh crap, this will brak my logic | 04:02 |
drobilla | precise entry doesn't really have any point for enums. It's for numeric things | 04:02 |
drobilla | I already told you that part when you asked if enum meant integer :) | 04:03 |
badosu | let me see | 04:03 |
drobilla | (yes, it's kind of odd) | 04:03 |
drobilla | What it really means is "the scale points are the only reasonable values for this control", that's all | 04:03 |
badosu | yeah, I get it | 04:04 |
badosu | it's just that for me it's kinda odd, although I can see use case for it | 04:04 |
badosu | for example if the plugin author does not care for fine-tuning of a partiular control and want to label each step | 04:04 |
drobilla | Realistically it's pretty much for "show a combo box" | 04:05 |
badosu | if he uses an enum without integers he does not need to bother with converting values | 04:05 |
badosu | I mean, with floats | 04:05 |
drobilla | Yeah, if the value have some numerical meaning I can see it making sense | 04:05 |
badosu | for example a control which obeys a gaussian scale | 04:05 |
badosu | any function that saturates anywayh | 04: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 |
badosu | it's fine | 04:06 |
badosu | At least I separated the logic to deal with this kind of stuff | 04:06 |
badosu | I did not want to subclass QDial to FQDial, LQDial or any of this bullshit | 04:07 |
badosu | so I just put a function on the whole control to deal with this which has awareness of it's properties | 04:07 |
badosu | in particular: setRange, getValue, setValue and refresh | 04:08 |
drobilla | Yeah, they all have to do with the value anyway | 04:08 |
badosu | everything is compatible with float, that's a thing that I thought bad of LV2 at first | 04:08 |
badosu | but I am seeing a use for it now | 04:08 |
drobilla | Not necessarily true | 04:09 |
badosu | what is not necessarily true? | 04:09 |
drobilla | Though for ControlPort, yes | 04:09 |
drobilla | Having a bunch of different types is a PITA anyway. For numbers at least, everything-is-float is a lot more convenient | 04:10 |
badosu | I am only dealing with ControlPorts | 04:10 |
badosu | is there any use for dealing with something other than controltypes on the plugin GUI? | 04:11 |
drobilla | badosu: LADSPA equivalent | 04:11 |
drobilla | badosu: Not something you really have to worry about | 04:11 |
drobilla | jalv.gtk has preliminary support for file properties (controlled via a message) | 04:11 |
drobilla | you can see this with eg-sampler | 04:11 |
badosu | hmm.. I saw a file-choose | 04:11 |
badosu | Also, still need to make presets work | 04:12 |
drobilla | This 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 now | 04:12 |
badosu | Also, preset loading is very slow | 04:12 |
badosu | specifically for amsynth wich has hundreds of presets | 04:12 |
drobilla | Need hierarchical menu, too | 04:14 |
drobilla | I'm guessing it puts them all in one file, so loading any preset means parsing the whole thing | 04:14 |
drobilla | I'll look into this (later) | 04:14 |
badosu | I thought this was easier when I started | 04:17 |
drobilla | Well, you took a pretty ambitious route with it | 04:19 |
drobilla | Which is awesome, don't get me wrong. Just saying, coulda been easy if you did a shitty one :) | 04:20 |
drobilla | GUIs are always....... "fun" | 04:20 |
badosu | drobilla: well, you know, I hate C++ | 04:21 |
badosu | why 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 |
drobilla | Everyone hates C++ | 04:22 |
drobilla | Yeah, range-based for loops are worth the price of admission for C++11 alone | 04:22 |
badosu | QT is pretty cool, and has a very nice usage of C++ classes | 04:23 |
* drobilla seriously ponders trying to write some LAD stuff in Rust, but some questions with strict RT-ness there still | 04:23 | |
badosu | but still, it's difficult | 04:23 |
badosu | drobilla: me too, my next project is to make amp.rs | 04:23 |
badosu | I already have bindings from lv2 to rust | 04:24 |
drobilla | Qt 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 |
drobilla | badosu: awesome | 04:24 |
badosu | it's not published, so if you want me to paste it somewhere, let me know | 04:25 |
drobilla | As 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 neophite | 04:25 |
drobilla | badosu: Well, keep me posted | 04:26 |
drobilla | Since I'm on an official bindings kick, official ones would be nice, but still need to finish C++... | 04:26 |
badosu | there it is: https://gist.github.com/badosu/465d5b025c159a533af6 | 04:27 |
badosu | it's basically cxx2rs on lv2.h | 04:27 |
drobilla | badosu: Got a plugin? | 04:27 |
badosu | drobilla: still working on it, have to finish jalv.qt first | 04:28 |
drobilla | k | 04:28 |
drobilla | I wonder how nice I could do atom bindings | 04:28 |
drobilla | Handling messages with pattern matching would be super nice | 04:29 |
badosu | drobilla: super excited about how a DAW on rust would be easier to develop and still mantain performance | 04:30 |
badosu | without dangling or null pointers, without allocation | 04:30 |
drobilla | Start small :) | 04:31 |
badosu | drobilla: I can't do it by myself :-) | 04:31 |
drobilla | Well, cross-thread comm without alloc (i.e. RT safe) seems to be a gap right now | 04:31 |
badosu | really? hmm, I thought this was kinda covered | 04:31 |
drobilla | I don't think so. RT safety really isn't on the radar for Rust | 04:32 |
drobilla | A function annotation for this, so things statically fail if you call a non-RT-safe function from an RT safe one would be awesome | 04:32 |
drobilla | Someone was actually tinkering with doing this for clang but C++ makes it pretty rough. C is kinda doable, but never made it upstream IIRC | 04:33 |
* drobilla is so tired of shitty type systems | 04:33 | |
badosu | hmmm, got it | 04:35 |
badosu | is this too terrible? | 04:35 |
badosu | http://bado.so/2015-03-06-012857_1920x1080_scrot.png | 04:35 |
* drobilla cringes :) | 04:37 | |
drobilla | I guess it's fine, if making the value label an editable widget is that much harder | 04:38 |
badosu | you mean, if I cliecked the label it popped up a surprise control? | 04:39 |
drobilla | I mean literally just make the label a combo box | 04:39 |
drobilla | or spinbutton, for the numbers | 04:39 |
badosu | or checkbox for toggle | 04:39 |
drobilla | right. | 04:39 |
drobilla | both have the handy property of showing the value anyway | 04:40 |
badosu | ok, so I'll bother with this later, gonna delete the doubleClick handler | 04:40 |
drobilla | knob for toggles is even weirder than knob for enums, but I see how not-knobs would be a problem here | 04:40 |
badosu | yeah :-(. It would work even using a QDial, you would just switch the graphics to be a switch | 04:41 |
badosu | QDial for {0,1} behaves surprisingly close to a switch design | 04:42 |
badosu | but the graphics is misleading | 04:42 |
drobilla | Fair enough. With a value widget it'd be pretty good anyway | 04:44 |
badosu | nice there's mda-lv2 on AUR | 04:48 |
drobilla | badosu: Whoah, yeah, the preset menu is completely useless for amsynth | 04:49 |
badosu | do you remember which one had the float enum? | 04:49 |
drobilla | badosu: combo has one | 04:50 |
drobilla | badosu: http://pastebin.com/dhASZ0Zb | 04:50 |
badosu | amsynth made a nice job grouping the presets into banks though | 04:50 |
badosu | just fired up combo | 04:51 |
drobilla | Yeah, except they aren't... | 04:51 |
drobilla | Guess I can use this as my test case for preset banks | 04:51 |
badosu | ok, I thought so | 04:51 |
badosu | it was just the name of the preset that made me think so | 04:52 |
badosu | LOL @ Combo's Model scale points | 04:53 |
drobilla | yyyyyyyep. | 04:53 |
badosu | deciding if I handle long scale point names or not | 05:33 |
badosu | amazing, everything on the control side is done, apart from precise tuning | 05:46 |
*** gabrbedd has quit IRC | 07:20 | |
*** edogawa has joined #lv2 | 07:27 | |
*** sigma6 has joined #lv2 | 08:11 | |
*** falktx has joined #lv2 | 09:07 | |
*** gianMOD has joined #lv2 | 09:15 | |
*** gianMOD has quit IRC | 09:24 | |
*** ricardocrudo has joined #lv2 | 09:30 | |
*** gianMOD has joined #lv2 | 09:40 | |
*** gianMOD has quit IRC | 09:57 | |
*** ricardocrudo has quit IRC | 10:42 | |
*** falktx has quit IRC | 10:46 | |
*** ricardocrudo has joined #lv2 | 10:50 | |
*** ricardocrudo has quit IRC | 10:55 | |
*** curlymorphic has quit IRC | 11:05 | |
*** falktx has joined #lv2 | 12:05 | |
*** falktx has quit IRC | 12:19 | |
*** falktx has joined #lv2 | 13:04 | |
*** curlymorphic has joined #lv2 | 13:35 | |
*** ricardocrudo has joined #lv2 | 13:58 | |
*** gabrbedd has joined #lv2 | 15:10 | |
*** edogawa_ has joined #lv2 | 16:52 | |
*** sigma6 has quit IRC | 16:54 | |
*** edogawa has quit IRC | 16:55 | |
*** ddom has joined #lv2 | 17:12 | |
*** falktx has quit IRC | 17:44 | |
*** ricardocrudo has quit IRC | 18:17 | |
*** aombk2 has joined #lv2 | 19:10 | |
*** aombk has quit IRC | 19:13 | |
drobilla | Implemented banks and a hierarchical preset menu in jalv.gtk | 19:14 |
LAbot | drobilla: Sent 3 hours and 42 minutes ago: <badosu> Check your inbox, I sent the patch | 19:14 |
drobilla | like I just wouldn't check my email today otherwise :P | 19:15 |
*** falktx has joined #lv2 | 19:23 | |
*** rncbc has joined #lv2 | 20:36 | |
*** falktx has quit IRC | 21:36 | |
*** rncbc has quit IRC | 21:53 | |
*** sigma6 has joined #lv2 | 22:29 | |
*** mlpug has joined #lv2 | 22:43 | |
*** mlpug has quit IRC | 22:50 | |
*** NickSB2 has joined #lv2 | 22:50 | |
*** NickSB2__ has quit IRC | 22:54 | |
drobilla | Anyone 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!