| @@ -14,82 +14,148 @@ include_once("includes/header.php"); | |||||
| </p> | </p> | ||||
| <p> | <p> | ||||
| Hello all, another monthly report about the KXStudio project is here.<br/> | Hello all, another monthly report about the KXStudio project is here.<br/> | ||||
| I skipped last month as there was not much to report.<br/> | |||||
| A bit late this time, but let's ignore that. :)<br/> | |||||
| </p> | </p> | ||||
| <h3>DPF updates</h3> | |||||
| <p> | |||||
| <a href="https://github.com/DISTRHO/DPF" target="_blank"> | |||||
| DPF | |||||
| </a> | |||||
| got most of the attention again.<br/> | |||||
| Things are progressing, not as fast as I hoped, but there is progress. | |||||
| (I really underestimated the amount of time DPF would take)<br/> | |||||
| The main reason for the DPF attention and rework | |||||
| - updating its | |||||
| <a href="https://github.com/lv2/pugl" target="_blank">pugl graphics backend</a> | |||||
| to latest upstream with no patches - is complete.<br/> | |||||
| Only 1 small change is still custom, related to using | |||||
| <a href="https://github.com/x42/sofd/" target="_blank">sofd</a> | |||||
| as a fallback file browser dialog on Linux.<br/> | |||||
| After | |||||
| <a href="https://github.com/lv2/pugl/pull/49" target="_blank">some discussion with the author</a>, | |||||
| I realized such a change/patch doesn't belong in pugl. | |||||
| I will change this part of DPF at a later time.<br/> | |||||
| There are some small additions made on DPF-side of the code for pugl, but nothing that requires changing pugl itself. | |||||
| </p> | |||||
| <p> | |||||
| New stuff was added in DPF of course, first we have a complete | |||||
| <a href="https://github.com/DISTRHO/DPF/commit/495dcc4f03d6a2ed0d30c56c885e4eb7476f4488" target="_blank">port groups</a> | |||||
| implementation, based on an | |||||
| <a href="https://github.com/DISTRHO/DPF/pull/193" target="_blank">initial PR from Jean Pierre Cimalando</a>.<br/> | |||||
| It is supported on LV2, VST2 and JACK targets, wherever is possible on those anyway.<br/> | |||||
| For LV2, port groups are set in the meta-data for both audio/CV ports and parameters.<br/> | |||||
| For VST2, parameter groups are supported (named categories in VST world)<br/> | |||||
| For JACK, lv2-like meta-data is set on the audio and CV ports.<br/> | |||||
| </p> | |||||
| <p> | |||||
| Next, the JACK target can now always be built, by including | |||||
| <a href="https://github.com/DISTRHO/DPF/tree/develop/distrho/src/jackbridge" target="_blank">jackbridge</a> | |||||
| code from Carla (adapted to make fit DPF better, also liberally licensed).<br/> | |||||
| This makes it so that: | |||||
| </p> | |||||
| <ol> | |||||
| <li>JACK headers and libraries are not needed at build-time</li> | |||||
| <li>Compiled binaries to not link to libjack</li> | |||||
| <li>libjack is loaded dynamically at runtime, printing an error if not found</li> | |||||
| </ol> | |||||
| <p> | |||||
| As a 2nd step on top of this, | |||||
| <a href="https://github.com/thestk/rtaudio" target="_blank">RtAudio</a> | |||||
| is used as fallback in case JACK is not available or connecting to the JACK server fails | |||||
| (usually because it is simply not running)<br/> | |||||
| This has been requested a few times, and it is finally here.<br/> | |||||
| DPF will setup RtAudio so it opens the default audio input and output as needed. MIDI is not supported yet.<br/> | |||||
| In any case, such fallback makes testing of DPF plugins much easier, specially on systems that do not have JACK. | |||||
| </p> | |||||
| <p> | |||||
| Moving on, I started some | |||||
| <a href="https://github.com/DISTRHO/DPF/blob/develop/dgl/EventHandlers.hpp" target="_blank"> | |||||
| classes that simply do event handling</a>, | |||||
| split off from the ImageButton and ImageKnob into something generic.<br/> | |||||
| The idea here is to make it easier for developers to get a working widget from scratch.<br/> | |||||
| Maybe this will help DPF based plugins to be more consistent on their behaviour too.<br/> | |||||
| Note that this work is not yet finalized, so these classes are not yet documented.<br/> | |||||
| I am using them on a new set of plugins, coding on a as-needed basis, so this will keep evolving over time. | |||||
| </p> | |||||
| <p> | |||||
| More stuff was added too, though not as substantial, including (in no particular order): | |||||
| </p> | </p> | ||||
| <ul> | |||||
| <li>Allow UI_TYPE = generic, so UI can be opengl or cairo, whichever is available</li> | |||||
| <li>Initial work for VST3 compatible plugins, lots to do.. (nothing to see just yet)</li> | |||||
| <li>Implemented Window::openFileBrowser() fallback for state files, so you always get a file browser</li> | |||||
| </ul> | |||||
| <p> | <p> | ||||
| DPF is now at a point where I want to focus on stability and testing.<br/> | |||||
| Out of all feature requests, only SVG support is deemed important and "breakage-worthy" (if that makes sense).<br/> | |||||
| Once SVG support is in, there will be a feature freeze and then getting everything to work at least as good as before. | |||||
| </p> | |||||
| dpf update to upstream pugl finished (feature parity with old pugl) | |||||
| plus: | |||||
| - vst2 parameter groups | |||||
| - load libjack dynamically | |||||
| - Fallback to RtAudio when JACK fails | |||||
| - port groups | |||||
| - start of event handler helper code, now in use for internal image widgets and also blendish widgets (WIP) | |||||
| Allow UI_TYPE = generic, so UI can be opengl or cairo, whichever is available | |||||
| Initial work for VST3 compatible plugins, lots to do.. | |||||
| Implement Window::openFileBrowser() fallback for state files | |||||
| future plans: | |||||
| - ensure high-dpi works always and for all plugins in dpf-plugins suite | |||||
| - svg support | |||||
| - freeze features and begin all around bugfixing | |||||
| - slowly get vst3 to work | |||||
| - keep going at documentation | |||||
| <h3>One-Knob Series</h3> | |||||
| <p> | |||||
| As a way to stress-test the new DPF and also start having some usable | |||||
| <a href="https://github.com/DISTRHO/DPF-Widgets" target="_blank">DPF-Widgets</a> | |||||
| I began a | |||||
| <a href="https://github.com/DISTRHO/OneKnob-Series" target="_blank">new project called One-Knob Series</a> | |||||
| that is going to be slowly brewing for the upcoming months.<br/> | |||||
| I am not taking a rush on this one, its initial purpose is to test DPF but it so happens that it is also a nice, fun and useful project.<br/> | |||||
| The idea here is to make a collection of stupidly simple but well-polished and visually pleasing audio plugins, | |||||
| with as little controls as possible, often just one knob and a few options.<br/> | |||||
| Eventually they will be not just as a test for DPF, but also as a show-case of what it can do, plus give an example of good practices within DPF. | |||||
| </p> | </p> | ||||
| <p> | <p> | ||||
| OneKnob series WIP | |||||
| goal for this, upcoming plans | |||||
| <img src="/screenshots/news/ok-series-2021-07.png" alt="ok-series"/> | |||||
| </p> | </p> | ||||
| <p> | <p> | ||||
| carla new release incoming, in 15 days for the release pact once again. | |||||
| going to be bugfix release, more details later but these are the changes so far: | |||||
| - pipewire connections fixup attempt | |||||
| - vst2 paramter groups (linux vsts only) | |||||
| - Fix initial size for LV2 macOS UIs with no UI resize extension | |||||
| - allow canvas eyecandy for >= qt5.12 | |||||
| Fix canvas split/join action | |||||
| Remove favorite plugins from list when they fail to load | |||||
| Use posix_spawn for macOS bridge mode scanning | |||||
| Fix bridged plugin UIs appearing behind main carla window on macOS | |||||
| Fix default rack "skin" for a few plugins | |||||
| midipattern: always kill all notes on reposition | |||||
| Improve countDecimalPoints | |||||
| Make some macOS dialogs modal, hack around edit dialog on top | |||||
| The guidelines for the collection are: | |||||
| </p> | </p> | ||||
| <ul> | |||||
| <li>Must have one main control/knob (linear or logarithmic), with one auxiliary slider/knob allowed but discouraged</li> | |||||
| <li>Can have maximum 3 auxiliary options (list of values or toggles)</li> | |||||
| <li>Parameter changes must be click-free</li> | |||||
| <li>GUI must be cleanly scalable (no bitmaps allowed or blurred resources when scaled)</li> | |||||
| <li>GUI must follow the same style</li> | |||||
| </ul> | |||||
| <p> | <p> | ||||
| I have a few ideas for useful one-knob style of plugins, to slowly be put into action throughout the year.<br/> | |||||
| Before you ask, you can already build and use them yes.<br/> | |||||
| I don't recommend doing so right now though. | |||||
| </p> | |||||
| mod-live-usb mention | |||||
| done on free time, even though related to work, might be useful for other projects later on | |||||
| - based on archiso | |||||
| - single qt tool running fullscreen. | |||||
| using linux framebuffer, no x11 or wayland | |||||
| - puts cpu in performance mode, has RT kernel, other common tweaks for audio | |||||
| - has options for picking soundcard | |||||
| - spawns a container matching MOD system, so libs, jack, plugins, everything matches | |||||
| - different tabs for ..., main thing in 1st tab. can open terminal with ctrl+alt+t | |||||
| - very barebones, intentionally. no internet. | |||||
| - not optimized in size yet, problem coming from archlinux | |||||
| <h3>Other</h3> | |||||
| <p> | |||||
| A new Carla release is coming very soon, for the quarterly release pact once again.<br/> | |||||
| It is going to be a bugfix release, I will write more details about it in 13 days for the 15th of July.<br/> | |||||
| JACK2 will very likely see a new version too, pretty minimal but keeping with the spirit of doing regular releases. | |||||
| </p> | </p> | ||||
| <p> | <p> | ||||
| now, into personal notes... | |||||
| - a little frustrated, perhaps disappointed, that pushing for donations doesnt work. | |||||
| number of subcriptions has been going down, not up. | |||||
| while I want to keep doing these things, being realistic, it is really not sustainable. | |||||
| all the free time is basically spent on this, but it does not pay off. | |||||
| it seems that (opinion), in order to make it really pay off, a whole lot more effort would be needed. | |||||
| not just the coding, but more regular interaction with community, basically a whole lot of reporting and being present? | |||||
| or maybe is not feasible at all, this is all very very niche, so who knows. | |||||
| but it is clear that keeping this up is not possible, a lot of life stuff was ignored or put on hold (it was lockdown anyway, so not much of a problem). | |||||
| so going forward, for the next 6 months (rest of the year), plan is: | |||||
| - no more new-feature developments, bugfixes only (the svg and vst3 support in dpf being the exception, I feel like they are essential) | |||||
| - will restrict time spent working on floss stuff to whatever is left from main job, no more weekends | |||||
| - when bugfixes get boring, try packaging, website updates or writting user manual | |||||
| Now, into some personal notes...<br/> | |||||
| I am a little frustrated, perhaps disappointed, that pushing for donations doesn't work.<br/> | |||||
| The number of subcriptions has been going down, not up.<br/> | |||||
| While I want to keep doing these kinda of things, being realistic, it is really not sustainable.<br/> | |||||
| All the free time is basically spent on this, but it does not pay off.<br/> | |||||
| Perhaps that should have been expected..<br/> | |||||
| It seems that (in my opinion), in order to make it really pay off, a whole lot more effort would be needed.<br/> | |||||
| Not just with coding, but more regular interaction with community, basically a whole lot of reporting and being present.<br/> | |||||
| The projects that really succeed in such funding pretty much always have someone very "present" and visible within their community.<br/> | |||||
| It is tough, and maybe was just not feasible at all. We know audio development, specially on Linux or open-source, is very very niche. | |||||
| </p> | |||||
| <p> | |||||
| So it is clear that keeping this up as-is is not possible, a lot of my life stuff was ignored or put on hold (it was lockdown anyway, so not much of a problem).<br/> | |||||
| For the sake of sanity and balance, going forward for the next 6 months (so the rest of the year), plan is now: | |||||
| </p> | |||||
| <ul> | |||||
| <li>no more new-feature developments, bugfixes only (the svg and vst3 support in dpf being the exception, I feel like they are essential)</li> | |||||
| <li>will restrict time spent working on floss stuff to whatever is left from main job, no more weekends, max 40h/week</li> | |||||
| <li>when bugfixes get boring, will do packaging, website updates or writting user manuals</li> | |||||
| </ul> | |||||
| <p> | |||||
| And that's all for now.<br/> | |||||
| Obviously I will still keep working on these things, don't worry.<br/> | |||||
| Specially Carla and DPF have my main attention, but will be on a more reasonable pace from now on.<br/> | |||||
| As always, if you appreciate the kind of work I do, please | |||||
| <a href="https://kx.studio/Donations">consider a donation</a>.<br/> | |||||
| Thank you in advance for your support, and stay safe out there! See you soon!<br/> | |||||
| </p> | </p> | ||||
| <hr/> | <hr/> | ||||