This month I’ve worked a bit on HourGlass 1.5. So there is still hope a public release will eventually happen. The multichannel/surround stuff sure has been a big mess to implement, with bugs and CPU performance problems popping up at every turn. However, with some private testing generously done by Jean-Marc Duchenne with his extreme multichannel audio system (with dozens of channels and loudspeakers), some of the problems have been at least partially fixed.
The longer term plans definitely involve rewriting HourGlass from scratch, based on JUCE. Using the rather ancient Qt4 toolkit is beginning to feel quite miserable, but I will grudgingly persist in getting a few versions of HourGlass 1.5.x done with it for now.
Still no news on the HourGlass 1.5 release.😦 Been occupied with all kinds of more or less relevant stuff lately.
However the release is still in the plans. (Well, I’ve been writing that for the past 6 months so maybe this isn’t so convincing anymore…)
I again did some testing with how to allow entering panning paths graphically…Curves can be added to the path and the path then “scanned” with the usual HourGlass envelope. (Click the image to get a larger animation.)
While this is neat, it does currently have the downside that the added curves can’t be edited later. I need to look into some solutions for that…
Qt has a nice class named QPainterPath that made this easy so far. Various shapes can be added to path and the path can later be evaluated according to a percentage value. This in turn allows creating look up tables that the audio code can use to obtain the panning positions. Hopefully Juce has something similar for the future…(And yes, this similar system could be used to implement the fragment internal panning too, but I will still have to see if it’s worth it doing that.)
I am only now again looking into the HourGlass 1.5.x code.
If things go well, an initial beta release will happen during this month. For Windows I will probably need to require the users to install the C++ runtimes separately. A big and long sigh, but what can I do. That crappy way of doing it is what Microsoft wants.😦
Some progress (click image for bigger animation) :
Finally did some work on HourGlass so as to not forget about it all.
The multichannel stuff for the VST plugins is just about getting actual multichannel plugins to run more properly. I bumped into crash issues trying to use the GRM Tools Spaces plugin, which has 32 inputs and 32 outputs. Well…Of course the HourGlass code has had just 8 channels worth of buffers allocated for VST plugins for many years. (Even before doing work on the multichannel stuff, I bumped into some plugin that wanted 8 I/O channels by default, so I provided that many back then already…)
It’s another matter making mono or stereo only plugins run as pseudo multichannel. I will try to make that happen at some point…
The latest commit for OS-X is a nice bonus. I wanted to myself see the ini files for HourGlass on OS-X and it was quite a hunt! The default location the Qt framework gives for them is quite irritating. So I finally made the ini files be located in /UserName/Library/Application Support/Xenakios. Should be somewhat easier to get access to them now!
I’ve been busy making a new composition during August (based on water sounds…) and haven’t done any work on the HourGlass code. I will be busy with the composition during September too, so a release of HourGlass 1.5 even as a beta isn’t likely soon.
The Microsoft runtime library issue still seems unclear. There isn’t an official update on the issue but some comments in the Microsoft C++ compiler blog indicate it might now be possible to deploy applications with the needed libraries with the application itself without the need to install the libraries first. This isn’t a HUGE issue but it sure is annoying me a lot on principle. Especially considering there have been reports the separate library install may also require a reboot of the computer. I would completely hate having to install something like that myself when trying/updating a software. There is still the possibility to go back to VS2013 too, but I’d rather not, since VS2015 has the newer C++ compiler and standard library. (For the technically inclined : static linking of the C++ runtime is problematic because HourGlass uses the Qt library which has had mentions in the past that static linking isn’t really supported. There may also be licensing implications mixing LGPL licensed code with Microsoft’s code.)
I’ve also started thinking there should probably be more comprehensive support for multichannel operation in HourGlass. The code still has some limitations on the number of channels supported and the fragment spatialization still can only pan to 4 channels. I’ve done some experimenting with a 5th loudspeaker in my set up and have started to like that so much that I’d like HourGlass to be able to do something with it (and more channels in the future) too.
Also I’ve realized there are hardly any 3rd party plugins that support multichannel operation, so having some solution in HourGlass to use those plugins at least in “pseudo multichannel” mode seems essential now…Technically that should be pretty simple to implement but I just haven’t got to that yet. (I feel a bit ashamed about this, since even damn Pro Tools implemented that in the first version that supported multichannel operation back in 2001 or so! On the other hand, Reaper still doesn’t have a convenient solution for it…)