| @@ -14,82 +14,148 @@ include_once("includes/header.php"); | |||
| </p> | |||
| <p> | |||
| 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> | |||
| <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> | |||
| <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> | |||
| 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> | |||
| OneKnob series WIP | |||
| goal for this, upcoming plans | |||
| <img src="/screenshots/news/ok-series-2021-07.png" alt="ok-series"/> | |||
| </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> | |||
| <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> | |||
| 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> | |||
| 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> | |||
| <hr/> | |||