Anacreon Synthesizer | Anacreon 2.5 Released

VST, AU, AAX, etc. plug-in Virtual Instruments discussion
User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Wed Aug 26, 2020 8:00 am

@all

Hey everybody, don't hate me - but I'm not going to have 2.5.3 done by Friday. My day job has been insane lately and this release has a decent amount of extra scope that I wasn't planning on initially, but really all ought to be done at the same time anyway. Namely, I'm fixing the modulation problems and switching over to CV so that the functionality more closely matches 1V/Octave standards found in real life modular synthesizers.

For instance, if you want to pitch mod an oscillator by one octave via an envelope, how the heck do you know what arbitrary % value for the gain knob on the envelope will get you there? Here's the plan:

For any module whose output voltage gain knob is set to X volts, the + output will go from 0 to X, the - output will go from 0 to -X, and the +- output will go from -0.5X to 0.5X.

All source modules will output between -10V and 10V with a maximum 10V voltage swing for any given output (env, osc, lfo)

All pitch/rate inputs will have 1V/Octave response (filter, osc, lfo)

All effect / non-generative modules that have some sort of clipping / saturation in the gain stage will start to clip around +-2.5V. (filter, limiter)

Considering that an oscillator's max output will be +-5V, this allows the same amount of saturation at the filter input as we have now when oscillators are cranked to max volume. (@bmanic, the sound isn't changing!)

All miscellaneous inputs (PWM, resonance) will be designed so that you can sweep the entire range with a 5V voltage swing, meaning that all generative modules will be capable of sweeping the entire range regardless of where the knob is at (width knob, resonance knob)

All gain-type inputs will take the sum of the input voltages plus whatever voltage the gain knob is set to to calculate the output gain. (Env, lfo, mults) In other words, if you set the ENV Gain to zero, set the LFO Gain to 1V, and connect them like this: LFO+ -> ENV Gain In, then your envelope's max value is going to be between 0V and 1V at the output.

For the above connection configuration, the following equation will hold true:
Envelope Range on + output = ENV Gain Knob Volts + LFO Gain Knob Volts

The whole point of all of this nonsense is to have actual output units, which became more of an issue when I started adding that modulation row to the top of the synth - I can't just have all those controls output arbitrary percent values, we really ought to be able to know something useful based on that number. Prior to this update, I sort of just tuned the modules until they sounded right and the filter / oscillators tracked together. Now we'll have actual standards.

User avatar
hesnotthemessiah
KVRian
902 posts since 6 Jun, 2003 from Reading UK. (U rrrrrrs)

Post Wed Aug 26, 2020 11:59 am

Anacreon sounds amazing and your plans (2.5.3 and 2.5.4, especially the GUI updates) will take it to the "loads in my default project" level for me. Thankyou for all your time and effort Erich :tu:
Windows 10. Asus X99-Pro i7 6950X 3GHz (Overclocked to 4GHz). Corsair DDR4 64GB Vengeance LPX 2400MHz. RME RayDAT. NVIDIA GeForce GTX 970. UAD2 Quad+Octo. Reaper. A couple of plugins.

User avatar
pough
KVRAF
3093 posts since 3 Jan, 2003 from Vancouver

Post Wed Aug 26, 2020 1:34 pm

Erich.Pfister wrote:
Wed Aug 26, 2020 8:00 am
Hey everybody, don't hate me - but I'm not going to have 2.5.3 done by Friday.
No problem. Take your time and do what you need to do.
This is a block of text that can be added to posts you make. There is a 255 character limit.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Thu Aug 27, 2020 9:02 am

@hesnotthemessiah and @pough,

Thanks for the encouragement and understanding, it means a lot. I'm really trying to clean up some of the "just make it work, I don't care what it looks like!!" code in Anacreon to make it more like "this is a thing of beauty and efficiency" code. It is time consuming, but I'm removing derelict scraps of unused logical structures and cutting out middlemen between modules and I'm really hoping we'll see some performance boost (@teacue)

@all

Regarding the math described in the last post with the whole "gain is the sum of the knob plus the sum of the modulation", I'm realizing that this could cause certain modulation schemes to invert the amplitude of the module in question / generally wouldn't be very intuitive to use. As such, I'm going to retain the current scheme where the gain level is the product of the voltages coming in. In this version, we're treating 5 volts like it's 1, so 5 volts times 5 volts equals... 5 volts. 10 volts times 5 volts will be 10 volts, and 2.5 volts times 2.5 volts will be 1.25 volts.

Does this make any sense? There's probably a math word for normalizing numbers this way, but I don't know it. At any rate - it will just work, I promise.

ahanysz
KVRist
86 posts since 14 Jun, 2020 from Adelaide, Australia

Post Fri Aug 28, 2020 1:50 am

Erich.Pfister wrote:
Thu Aug 27, 2020 9:02 am
Does this make any sense? There's probably a math word for normalizing numbers this way, but I don't know it.
Makes sense to me. I think the word you're looking for is "normalizing" :-)

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Fri Aug 28, 2020 6:38 am

@ahanysz LOL - good point. I'm tying myself in knots / confusing myself more than I need to. I've realized that all I need to do is represent 1.0 as being 5 volts and do everything normalized.

ahanysz
KVRist
86 posts since 14 Jun, 2020 from Adelaide, Australia

Post Fri Aug 28, 2020 5:21 pm

Erich.Pfister wrote:
Thu Aug 27, 2020 9:02 am
\Regarding the math described in the last post with the whole "gain is the sum of the knob plus the sum of the modulation", I'm realizing that this could cause certain modulation schemes to invert the amplitude of the module in question / generally wouldn't be very intuitive to use. As such, I'm going to retain the current scheme where the gain level is the product of the voltages coming in. In this version, we're treating 5 volts like it's 1, so 5 volts times 5 volts equals... 5 volts. 10 volts times 5 volts will be 10 volts, and 2.5 volts times 2.5 volts will be 1.25 volts.
Actually, the more I look at this, the more confused I get. (Perhaps it's because I haven't actually tried the software yet. Still hanging out for that Linux version!) If you use an envelope for pitch mod, when the envelope is at zero, multiplication means the frequency will drop all the way to zero: probably not what was intended. And multiplying an amplitude by a negative number will still cause the sign to flip.

It seems to me that some controls should work better with multiplication, and some with addition. I think most non-modular softsynths actually do it additively across the board. Fathom has selectors on each modulator for whether you want to add/subtract/multiply, unipolar or bipolar, but it's a pretty complicated interface, and you may not want to copy that part.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Wed Sep 02, 2020 12:27 pm

@ahanysz, missed your post - my apologies. Pitch inputs are relative - 0v means everything stays the same, -1v means go down one octave, +5v means go up 5 octaves, all relative to resting pitch of oscillator.

Examigan
KVRAF
5365 posts since 15 Sep, 2005 from East Coast of the USA

Post Thu Sep 03, 2020 2:32 am

Erich.Pfister wrote:
Mon Aug 24, 2020 6:04 am
@resistent,

The new system in 3.5.4 will allow you to make your own layouts and use them - I'm looking forward to seeing what you and others end up doing with it. This layout makes some sense to me. I like having the modulation sources on top and the main signal path below. I should be able to make it more compact in a few places. Mults in the middle is a interesting choice, I like the symmetry.
Sorry if I missed it somewhere on another page, but will the layout feature include color choices and/or presets for layouts? I like what I am reading about the synth but it is just a bit tough on my eyes with the high contrast of yellow and black.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Thu Sep 03, 2020 6:58 am

@Examigan - yes! Layout, element size, and colors will be altered via config file. Plan is for window to have fixed aspect ratio, but be resizable. Just working through a major rewrite that will hopefully boost performance going into version 2.5.3.

2.5.4 is the next major release after that and will contain the GUI updates.]

Edit You specify the starting window dimensions in the config file and then it will keep that aspect ratio.

User avatar
resistent
KVRian
781 posts since 14 Apr, 2008 from Berlin

Post Tue Sep 15, 2020 4:45 am

Any news on this? Can't wait to get my hands back on Anacreon.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Tue Sep 15, 2020 7:04 am

@resistent: Sorry this has been taking so long - here's where I'm at:
  • complete overhaul of core processing - many small loops instead of one big loop, better vectorization
  • automatic voice management in array data - less room for human error / bugs
  • removed extra copy step between modules to hopefully speed things up a bit
  • oscillator now has pan/thru-zero-gain instead of 2 separate gain knobs
  • everything's on a volt-per-octave standard now
  • still sounds the same - no sound was changed, but the math was made more efficient.
  • currently working on oscillators to improve polyphony CPU load
  • successfully made filters use less CPU in polyphonic patches
As you can see, this update is suffering from a bit of "feature creep", but I'm hoping it will result in a much more usable and efficient synthesizer.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Tue Sep 15, 2020 2:04 pm

@all:

I have successfully reduced CPU usage in the oscillator and filter sections such that you should be able to do 50% more work for the same CPU usage on this synth.

Test case:
(qty 2) 64 voice supersaw
(qty 1) 64 voice superpulse
(qty 1) LFO modulating superpulse PWM
(qty 1) LFO modulating vibrato on one of the supersaws
(qty 2) Filters with all outputs processing simultaneously
(qty 1) Envelope modulating filter cutoff

Results:
2.5.2.3
5 voice polyphony before crackling

2.5.3(alpha)
Full 8 voice polyphony
I was able to cause crackling when by switching another one of the supersaws to superpulse (50% more CPU intensive than supersaw), so this patch pretty much couldn't take any more.

I was also running the entire Microsoft Office Suite, Firefox, and a PDF reader at the same time, so "your mileage may vary".

Now that this architecture update is done, I can focus on buttoning up the rest of the synthesizer, this should probably take a week or so from today.

User avatar
Erich.Pfister
KVRist
120 posts since 24 Jul, 2020

Post Fri Sep 18, 2020 8:58 am

@all:

My todo list has shrunk considerably due to a couple of fairly manic / inspired days of programming. Here's what I have left to do:
  • Debug LFO (just finished unlocking frequency limit and adding 64b LFO setting)
  • Debug External Modulation Sources (something's gone wrong with them, not sure what yet)
  • Make the GUI look "nice" again (messed up the oscillators by adding fade / gain knobs, I think I know how to fix it)

User avatar
resistent
KVRian
781 posts since 14 Apr, 2008 from Berlin

Post Mon Sep 21, 2020 3:47 am

Nice work. Look really forward to the release. Thanks Erich.

Return to “Instruments”