Xhip Synthesizer v8.1 (alpha & RC)

VST, AU, AAX, etc. plug-in Virtual Instruments discussion
User avatar
KVRAF
4524 posts since 17 Jun, 2013 from very close to Paris, France

Post Fri Nov 01, 2019 10:03 am

Thanks a lot for these quite deep explanations ! I now understand why that kind of feature must be thought from the very start of the design. And in the DAWs as well as in the plugins.
:tu:
Build your life everyday as if you would live for a thousand years. Marvel at the Life everyday as if you would die tomorrow.
I'm now severely diseased since September 2018.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Sat Nov 02, 2019 3:59 am

Even Reaper doesn't seem to support re-mapping automation lanes. I should ask about this on the forum and post a feature request.

Getting additional VST "opcodes" added is a bit more trouble but a deprecated code could be reused along with a plug-in "can do" message to enable it. Something like can_do("get/set string data"), and using the "pin connected" opcode 4 for set_string(id, data) and opcode 5 for get_string(...).

Such a feature is a very core element and could be used to replace all the other get/set string opcodes if applied to the plug-in interface too.

I use such a system internally in Xhip, so for example the GUI can call set_string("synth.effects.global.dirty", "true"). The overhead is small enough that for infrequently used functions it works very well... after all, modern web browsers use similar string databases via CSS to handle 100% of webpage configuration as well as all data in JS code.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

User avatar
KVRAF
4524 posts since 17 Jun, 2013 from very close to Paris, France

Post Sat Nov 02, 2019 6:49 am

It goes way beyond my knowledge in programming :oops: but I think I have understood the sense of what you wrote... thanks to the parallel you made with webpage programming regarding the final user browsers by the use of JS and/or CSS to match their specifities.
Build your life everyday as if you would live for a thousand years. Marvel at the Life everyday as if you would die tomorrow.
I'm now severely diseased since September 2018.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Sat Nov 02, 2019 9:45 am

It's mostly "thinking out loud" anyway :) I think I'll ultimately need to apply work-arounds to v9 to allow me to escape from the "VST parameter prison". Without going into too much detail, I can say no need to worry, I know exactly how to solve it for v9... I just wish I didn't have to :D

I've updated the alpha "todo" page which now makes what I need to do for v8.1 a lot clearer. I should focus on getting 8.1 done before I worry about 9! :hyper: Always good to be mindful, but rarely useful to go overboard and lose focus.

http://xhip.net/alpha/ (click to expand the to do section.)
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

User avatar
KVRAF
4524 posts since 17 Jun, 2013 from very close to Paris, France

Post Sat Nov 02, 2019 9:58 am

All in good time.
:)
Build your life everyday as if you would live for a thousand years. Marvel at the Life everyday as if you would die tomorrow.
I'm now severely diseased since September 2018.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Mon Nov 04, 2019 7:08 am

edit: try to trim down rantiness

I've uploaded a new alpha r1191 + a bunch of individual preset files.

http://xhip.net/alpha/

Note the "to do" list and that some of the effects (follower, compressor, ?) are still in a work-in-progress incompatible state in this alpha version. It looks like this version saves the preset effects correctly in all cases when saving projects, presets, banks, states, switching presets, adjusting voices and so on. I've also improved my filter kernel generator and oscillator aliasing + noise floor should be much better in this version, down to -120 dB.

There are some presets I've uploaded to the alpha page. I've been wanting to update and expand the "factory" banks. The support for reduced modulation rates means you can in many cases use 1/16th rate (in the control section) and see no timbre difference and ~4x faster rendering and performance. This means you can get ~320 oscillators on a single core of my older CPU or ~170 full dual-osc + filter voices. I've considered defaulting this parameter to 1/16th (saved in init state). For basic sounds like pads it doesn't make any difference at all, so you get most of your sounds for ~1/4 the cost!

I'm not sure if I'm forgetting anything, but there are tons of under-the-hood tweaks that just make everything work better or more efficiently but shouldn't have too much influence from the user perspective.
Last edited by aciddose on Mon Nov 04, 2019 7:37 am, edited 1 time in total.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

KVRAF
3474 posts since 9 Oct, 2004 from Poland

Post Mon Nov 04, 2019 7:25 am

aciddose wrote:
Mon Nov 04, 2019 7:08 am
and ~4x faster rendering and performance
:tu: :party: :tu:
[====[\\\\\\\\]>------,

Ay caramba !

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Mon Nov 04, 2019 7:43 am

Oh yeah! The "steal voices" switch lets you disable active voice stealing completely. So you can use 6 voices to get a "roland juno" sound, the junos like many old poly synths didn't steal voices and if you played more than 6 notes, any others would be ignored until you released some. This doesn't completely disable inactive voice stealing, so it doesn't solve the issue of routing with velocity changes on stolen voices... solving that is a bit more complicated.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

User avatar
KVRAF
4524 posts since 17 Jun, 2013 from very close to Paris, France

Post Mon Nov 04, 2019 7:52 am

Great update ! Thanks a lot !
:tu:
Build your life everyday as if you would live for a thousand years. Marvel at the Life everyday as if you would die tomorrow.
I'm now severely diseased since September 2018.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Mon Nov 04, 2019 8:12 am

https://soundcloud.com/xhip/quinker-qfx-qixen-quop

Made with r1191_presets/with_fx/qlinker_qfx.xhippreset
Image

If control codes are used note that v8 won't work "correctly", as the colored text will display but the width for text won't be computed correctly, so won't line up. It also doesn't strip the control codes from strings it passes to the host, so a host like reaper will display a bunch of garbage content in the preset name. It does "work"... but it isn't really backward compatible. There is no way to fix a few of the issues with v8, so all newer presets will require v8.1 for everything to work right.

I've tweaked the xhip_factory_bank_v8p1.xhipbank presets slightly and I'll eventually finish up and add effects to most of them. Before I do that I've wanted to add a preset effects bypass switch. That's next on the to do list.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Mon Nov 04, 2019 11:33 am

Mutant wrote:
Mon Nov 04, 2019 7:25 am
aciddose wrote:
Mon Nov 04, 2019 7:08 am
and ~4x faster rendering and performance
:tu: :party: :tu:
That generally won't be the case since that relies on situations where a lot of modulation processing is happening vs. audio processing. In some situations like with a single envelope + square wave, no modulators, no modulation via routing and only env to amplitude with nothing else, modulation/audio is about 50+50. So in such a case you might normally get N voices and if you use moddiv, it'll apply to the modulation side of the total. So with 1/16 you get 50/16+50 = 53.125, which is almost but not quite 2x (1.94x).

If you turn on absolutely all modulation you can get the expense of modulation quite a lot higher. If I do that I get 70vcs/240vcs with 1/1 and 1/16th ratios. That's ~3.43x higher performance with a 1/16th modulation rate. That's of course without any activity on the route page, which means no parameter filters are active making a significant difference.

I haven't bothered to test the absolute highest I can get by maxing out route/automation/modulation, but my guess is it's probably around 4x in situations where you're using heavy modulation. In most ordinary sounds you'll end up somewhere between slightly less than 2x and 4x, and if you really max out the modulation you might get more than 4x.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

KVRist
490 posts since 12 Mar, 2013 from Russia, Vladivostok

Post Fri Nov 15, 2019 4:16 am

I see new Windows build 1191. Do You plan to compile new Linux version?

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Fri Nov 15, 2019 4:55 pm

It might take a little work, no.

You should ask "I'd be interested in a 64-bit Linux compile, would that be possible if not too difficult?" :D

Sure! I'll try and let you know.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

User avatar
KVRAF

Topic Starter

12450 posts since 7 Dec, 2004

Post Fri Nov 15, 2019 5:33 pm

Looks like GCC is going overboard on strict limitations for c++14 and c++17 rules (or doesn't yet implement them correctly), so there is a lot of work I need to do to make the current code compile correctly under GCC.

Really weird error here:

Code: Select all

./library/ad/smart_array:148:10: warning: argument 1 value '18446744073709551615' exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=]
      p = new T[length];
Seems GCC is stupidly trying to resolve a run-time variable's value during compile time? I have no idea how to fix such stupidity.

18446744073709551616 = 2^64, so it appears it doesn't like the fact I'm passing a size via size_t type in new T[int(size_t arg)]. This is some kind of really dumb compiler bug. (Nope, not due to size_t, deleting that overload does nothing.)

It's a known bug in GCC's optimizer that's currently marked "wontfix".
https://gcc.gnu.org/bugzilla//show_bug.cgi?id=85783

The workaround is something like:

Code: Select all

... = new T[length & PTRDIFF_MAX];
I seem to have discovered a new case where it appears that doesn't involve overloading operator new[].
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

KVRist
490 posts since 12 Mar, 2013 from Russia, Vladivostok

Post Fri Nov 15, 2019 6:28 pm

Oh, sorry, I don't try to push You :)
Maybe gcc9 has this bug fixed?

Return to “Instruments”