As Serum and Vital seem to share quite a lot of common ground, I was thinking - would it be possible to write a script that converts Serum presets and wavetables to Vital?
I don’t know if something like this has ever made between any other two synths/plugins, but would be cool if it’s possible.
They are only similar in spirit. Exact algorithm details differ between wavetable synthesizers so there is no trivial way to do it.
There might be ways for some extremely motivated AI programmers to do something like try to train a network to learn vital patches from audio, but :shrug:
I have tried to convert some, but vital lacks an effect device like the expander/unison tool in Serum.
also, remapping and reverb lfos which Serum patches make use of alot, do not exist in Vital yet.
vital sounds very warm somehow, whereas Serum is crisp by default. two very different souls of equal beauty
I had a similar thought, but after I tried to implement several Serum patches manually on Vital, I came to the conclusion that many items are not a simple conversion, due to several differences which could not be realized on one synth or the other. The other problem is the saved preset format. Vital presets are saved as text files with all the parameters listed out in human readable form. Serum presets are saved in a binary format, which are machine readable, and unless someone on the net has a map to how this is done, you would have to reverse engineer it yourself - which is a big project. But, I’ll tell you how I would start: save an Init patch, then begin by changing one knob at a time, save the preset and inspect the values in the preset file. You will begin to see what the pattern is, then you would have to write a program to convert the Serum preset into text. Once you had most of the parameters covered, you could begin to correlate the values of one synth against the other. Then, you could start devising a method to import that preset text into Excel or some spread sheet program. Some of the values do not have a one to one correlation between each other, so you would need to come up with formulas to convert Serum values to the similar Vital values. There are many parameters that translate easier than others. Osc and filter values are pretty easy to figure out, except for exclusive features, and others like the effects, as noted in another post, are just different and cannot be done. A few of the complex filters in Serum can be realized by cascading the 2 filters in Vital, but not all of them. Try converting a well documented Serum patch to Vital yourself, and you’ll likely begin to see the problems. My bottom line is I’m going to have to buy Serum if I want to make those sounds easily - Still $10 a month on Splice last time I checked.
One person I can think of immediately is Dylan Tallchief. He’s poured so much time into making audio tools similar to this I’m sure he may consider it at some point.
In file: documentation/Symbiosis Documentation.html
See below for more info
Also mentioned in 2 other files, but they seemed less interesting
Here is the relevant info on this file format extracted from the Symbiosis Documentation.html docs:
Advanced Porting Options
Symbiosis creates two configuration files inside your AU bundle the first time it is launched: SYParameters.txt and SYFactoryPresets.txt. It will also create .aupreset files for all the VST programs in the initial startup bank. All these files are created directly under Contents/Resources/ in your bundle.
It is a good idea to edit at least SYParameters.txt and you should include all the created files in the final distribution of your Audio Unit. (Please read an important note concerning this under ‘Running Your AU for the First Time’.) If you are using wrapping alternative 3, 4, or 5 (including Symbiosis.mm etc into your VST project) you can simply drop the files into your project and they will be copied in the build process.
Finally, if you are serious about creating a fully featured Audio Unit you might want to look into supporting Symbiosis’ optional ‘Vendor-Specific Extensions’ below.
SYParameters.txt
This file is a tab-separated table with parameter information. One line per parameter with an extra header line at the top. You may choose to exclude certain parameters from the AU version by simply removing the corresponding lines from this file.
The columns in this file are as follows:
Column
Description
vst param #
The VST parameter number (zero-based), which is also the unique identifier for the parameter.[^1]
name
The parameter name as shown to the end user.[^2]
min
The minimum parameter value.[^3]
max
The maximum parameter value.[^3]
display
A string that defines how the parameter is displayed to the end user. Use one of the following:
= for linear scaling (within the min to max range).
b for boolean switch (0 is off, 1 is on)
i for integer (scaled from min to max)
a|b|c|d for discrete parameter settings, e.g. sine|tri|saw|pulse
? to convert the value with the ‘Vendor-Specific Extensions’ (described below).
unit
The parameter suffix / unit.
default
The initial default setting. (Scaled according to min and max range.)
[^1]: If changes to this parameter will automatically modify other parameters you need to suffix this column with +. This information is important for AU hosts.
[^2]: You may wish to edit this column as AU can handle longer parameter names than VST.
[^3]: VST parameter values are always between 0 and 1, but AU parameters have arbitrary range. The min and max values are used to scale and normalize the AU parameter range from/to the 0 and 1 range. For discrete parameters (those having |-delimited lists in the display column) the min value must be 0 and the max value should be the count of discrete options minus one, e.g. 3 if there are four choices.
SYFactoryPresets.txt
This file simply contains a list of factory preset files (one file name per row). You can edit this file to remove or add factory presets. Symbiosis expects to find the factory preset files under Contents/Resources/ (as always).