Welcome/Blog/6 June 2024 - VividShaper v1.2 is released
It is finally here. Only the iOS version has been accepted in the moment of writing, but I expect the Mac version to get accepted within the next day as well.
So many things are new, including bug fixes of course. The most apparent change is the oscillator view. By default, it now works as an oscilloscope, where you get to see the output from all the oscillators instead of just one. This helps a lot when creating layers of oscillators, like supersaw. However, you can still go in and look at each oscillator if you like and then get back the old view. You do this by setting the variable waveview = x, where x is the oscillator you would like to view (default was 1 before). If you set wavesview = 0 you will get the new oscilloscope view (which is default).
Another big change is the patch organiser. In the previous version, you would get a list of all patches in alphabetic order in one huge list. In version 1.2, you can tag each patch by adding #tags in the patch name. For instance, the above “Super Saw #supersaw #lead” will then be added to both the #supersaw category and #lead category. If you add a tag that doesn't exist as category, it will be automatically created for you and if you delete all patches with a certain tag that category will also get removed automatically.
There are many new functions that comes with v1.2. Some of them do things that you would otherwise have to code yourself, like LFOs, but some are new features that wasn't available in v1.2. You can now both ring and sync modulate an oscillator. You can also use VividShaper as a MIDI effect unit. This works in apps that allow AUv3 plugins to send MIDI (Logic on Mac does but Ableton does not).
Another new small thing is that you can change the number of generators to 16. Eight generators is still the default number, but by writing “generators=16” you can double them (or set anything between 1-16 of course).
Then there are some changes “under the hood”. The synth engine has been improved, with added cross fading between notes within a generator (removes that annoying “clicking” sound when a generator has to quickly change amplitude), and the code is now properly using locks between threads allowing for better compiler optimisation. You will hopefully notice that VividShaper is now slightly less CPU intensive.
However, VividShaper is still very CPU hungry. It is, after all, running eight generators by default and each generator is running its own Lua interpreter about 90 times per second. I am still amazed that this even works, so 30% CPU load isn't that bad I would say. Still, it would be great if you could turn off the generators if they are not doing anything. I thought about doing this automatically, but realised that it is difficult to tell when the developer of a patch wants it turned off or not. Therefore, I leave it up to you as patch developer. There is a new variable called “active”. If you set this to false, the generator will immediately turn itself off. By looking for a time point when all oscillators volume are below a certain threshold, you can easily just turn them off yourself (as you can see in the screenshots above):
active = VSMax(vol) > 0.00001
That simple line is looking at the max volume across all oscillators, then testing if this value is above 0.00001. If it is, it remains active. If not, it turns itself off. You don't want to do this trick if you have an LFO controlling the volume, but then there are other ways for you to determine if it should be turned off. Nevertheless, that line works in most situations.
Finally, a new feature is that you can now update the patches online. I plan to release new patches regularly (aiming for weekly, on Fridays, with some exceptions). In the Patch menu, you can now click on “Update factory patches”. It will then look for new patches.