Idea: Convert Serum presets to Vital

Hello!

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.

Just throwing an idea out there!

Ps. Vital is amazing!

4 Likes

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:

You can copy the serum wavetable and sample files into your vital folders. Works fine

anyone share these Serum wavetables and sample files ??

I don’t have Serum would love to try it.

1 Like

I’ve got them in 3 zip folders in a cloud i couldn’t upload them here it said they were over 200,000kb but really they weren’t :stuck_out_tongue:

They’re Serum & Massive… I may have created multiple copies of the same folders also xD if so im sorry

https://mega.nz/file/kNYkQLiY#7tmGXLRY3IP7rvkVUrsZj04wkukbM2OnD8le6AtksQM

https://mega.nz/file/9NZGABQK#BGtby0zCCdjf5x7b-jETJnOtG--E9fnI1oR0Bt693AM

https://mega.nz/file/hBRAXDRR#WSHlXcAPgRvp7ZZjb7jKnkt9ZBqKYt0UkAv1Jy2Gs9k

Orrrr, you can just google it and find them on reddit or something

true but there is more to a preset than just the wavetable.

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

Yep, that seems to make it quite impossible then.

Hey thanks for posting this, the only set I see as a duplicate is Classic Synths so one can just delete that.

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.

2 Likes

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.

1 Like

Hopefully one day. So many good banks on Serum that I want on Vital

Two completely different synths. You can’t reproduce sounds made on one in the other. (different filters etc)

You may be able to get close but not exact. Better to make sounds in Vital than to try and imitate some other synth.

1 Like

I also just noticed this file in the Serum Demo AU Plugin package on macOS:

  • /Library/Audio/Plug-Ins/Components/Serum.component/Contents/Resources/SYParameters.txt
vst param #	name	min	max	display	unit	default
0	MasterVol	0	100	=	%	70
1	A Vol	0	100	=	%	75
2	A Pan	-50	50	=	-	0
3	A Octave	-4	4	=	Oct	0
4	A Semi	-12	12	=	semitones	0
5	A Fine	-100	100	=	cents	0
6	A Unison	0	16	=	-	0
7	A UniDet	0	1	?	-	0.5
8	A UniBlend	0	100	=	-	75
9	A Warp	0	1	?	-	0
10	A CoarsePit	0	1	?	-	0.5
11	A WTPos	1	256	?	-	1
12	A RandPhase	0	100	=	%	100
13	A Phase	0	1	?	° 	0.5
14	B Vol	0	100	=	%	75
15	B Pan	-50	50	=	-	0
16	B Octave	-4	4	=	Oct	0
17	B Semi	-12	12	=	semitones	0
18	B Fine	-100	100	=	cents	0
19	B Unison	0	16	=	-	0
20	B UniDet	0	1	?	-	0.5
21	B UniBlend	0	100	=	-	75
22	B Warp	0	1	?	-	0
23	B CoarsePit	0	1	?	-	0.5
24	B WTPos	1	256	?	-	1
25	B RandPhase	0	100	=	%	100
26	B Phase	0	1	?	° 	0.5
27	Noise Level	0	100	=	%	25
28	Noise Pitch	0	100	=	%	50
29	Noise Fine	-1	1	=	%	0
30	Noise Pan	-50	50	=	-	0
31	Noise RandPhase	0	100	=	%	0
32	Noise Phase	0	100	=	%	0
33	Sub Osc Level	0	100	=	%	75
34	Sub Osc Pan	-50	50	=	%	0
35	Env1 Atk	0	1	?	ms	0.11
36	Env1 Hold	0	1	?	ms	0
37	Env1 Dec	0	1	?	s	0.5
38	Env1 Sus	0	1	?	dB	1
39	Env1 Rel	0	1	?	ms	0.215
40	OscA>Fil	0	1	!	-	1
41	OscB>Fil	0	1	!	-	0
42	OscN>Fil	0	1	!	-	0
43	OscS>Fil	0	1	!	-	0
44	Fil Type	0	1	?	-	0.0113636
45	Fil Cutoff	0	1	?	Hz	0.5
46	Fil Reso	0	100	=	%	10
47	Fil Driv	0	100	=	%	0
48	Fil Var	0	100	=	%	0
49	Fil Mix	0	100	=	%	100
50	Fil Stereo	0	100	=	%	50
51	Env2 Atk	0	1	?	ms	0.11
52	Env2 Hld	0	1	?	ms	0
53	Env2 Dec	0	1	?	s	0.5
54	Env2 Sus	0	100	=	%	100
55	Env2 Rel	0	1	?	ms	0.215
56	Env3 Atk	0	1	?	ms	0.11
57	Env3 Hld	0	1	?	ms	0
58	Env3 Dec	0	1	?	s	0.5
59	Env3 Sus	0	100	=	%	100
60	Env3 Rel	0	1	?	ms	0.215
61	LFO1Rate	0	1	!	-	0.5
62	LFO2Rate	0	1	!	-	0.5
63	LFO3Rate	0	1	!	-	0.5
64	LFO4Rate	0	1	!	-	0.5
65	PortTime	0	1	?	ms	0
66	PortCurve	-100	100	=	%	0
67	Chaos1 BPM	0	1	?	-	0
68	Chaos2 BPM	0	1	?	-	0
69	Chaos1 Rate	0	1	?	-	0.251189
70	Chaos2 Rate	0	1	?	-	0.251189
71	A curve1	0	100	=	%	50
72	D curve1	0	100	=	%	67
73	R curve1	0	100	=	%	67
74	A curve2	0	100	=	%	50
75	D curve2	0	100	=	%	67
76	R curve2	0	100	=	%	67
77	A curve3	0	100	=	%	50
78	D curve3	0	100	=	%	67
79	R curve3	0	100	=	%	67
80	Mast.Tun	0	0	=	-	0
81	Verb Wet	0	100	=	%	33
82	VerbSize	0	100	=	%	33
83	VerbPDly	0	1	?	ms	0.12
84	VerbLoCt	0	100	=	%	0
85	VerbDamp	0	100	=	%	28
86	VerbHiCt	0	100	=	%	50
87	VerbWdth	0	100	=	%	100
88	EQ FrqL	0	1	?	Hz	0.333
89	EQ FrqH	0	1	?	Hz	0.666
90	EQ Q L	0	100	=	%	60
91	EQ Q H	0	100	=	%	60
92	EQ VolL	-24	24	=	dB	0
93	EQ VolH	-24	24	=	dB	0
94	EQ TypL	0	1	?	-	0
95	EQ TypH	0	1	?	-	0
96	Dist_Wet	0	100	=	%	100
97	Dist_Drv	0	100	=	%	25
98	Dist_L/B/H	0	100	=	%	0
99	Dist_Mode	0	1	?	-	0
100	Dist_Freq	0	1	?	Hz	0.5
101	Dist_BW	0	1	?	-	0.5
102	Dist_PrePost	0	1	?	-	0
103	Flg_Wet	0	100	=	%	100
104	Flg_BPM_Sync	0	1	?	-	0
105	Flg_Rate	0	1	?	Hz	0.25
106	Flg_Dep	0	100	=	%	100
107	Flg_Feed	0	100	=	%	50
108	Flg_Stereo	0	360	=	° 	180
109	Phs_Wet	0	100	=	%	100
110	Phs_BPM_Sync	0	1	?	-	0
111	Phs_Rate	0	1	?	Hz	0.25
112	Phs_Dpth	0	100	=	%	50
113	Phs_Frq	0	1	?	Hz	0.5
114	Phs_Feed	0	100	=	%	80
115	Phs_Stereo	0	360	=	° 	180
116	Cho_Wet	0	100	=	%	50
117	Cho_BPM_Sync	0	1	?	-	0
118	Cho_Rate	0	1	?	Hz	0.25
119	Cho_Dly	0	1	?	ms	0.5
120	Cho_Dly2	0	1	?	ms	0
121	Cho_Dep	0	1	?	ms	1
122	Cho_Feed	0	1	?	%	0.1
123	Cho_Filt	0	1	?	Hz	0.5
124	Dly_Wet	0	100	=	%	30
125	Dly_Freq	0	1	?	Hz	0.5
126	Dly_BW	0.8	8.2	=	-	6.8
127	Dly_BPM_Sync	0	1	?	-	1
128	Dly_Link	0	1	?	-	0
129+	Dly_TimL	0	1	?	-	0.625
130+	Dly_TimR	0	1	?	-	0.625
131	Dly_Mode	0	1	?	-	0
132	Dly_Feed	0	100	=	%	40
133+	Dly_Off L	0	1	?	-	0.5
134+	Dly_Off R	0	1	?	-	0.5
135	Cmp_Thr	0	1	?	dB	0.5
136	Cmp_Rat	0	1	?	-	0.75
137	Cmp_Att	0	1	?	ms	0.3
138	Cmp_Rel	0	1	?	ms	0.3
139	CmpGain	0	1	?	dB	0
140	CmpMBnd	0	1	?	-	0
141	FX Fil Wet	0	100	=	%	100
142	FX Fil Type	0	1	?	-	0
143	FX Fil Freq	0	1	?	Hz	0.5
144	FX Fil Reso	0	100	=	%	0
145	FX Fil Drive	0	100	=	%	0
146	FX Fil Var	0	100	=	%	0
147	Hyp_Wet	0	100	=	%	50
148	Hyp_Rate	0	1	?	%	0.4
149	Hyp_Detune	0	100	=	%	25
150	Hyp_Unison	0	1	?	-	0.571429
151	Hyp_Retrig	0	1	?	-	0
152	HypDim_Size	0	100	=	%	50
153	HypDim_Mix	0	100	=	%	0
154	Dist Enable	0	1	?	-	0
155	Flg Enable	0	1	?	-	0
156	Phs Enable	0	1	?	-	0
157	Cho Enable	0	1	?	-	0
158	Dly Enable	0	1	?	-	0
159	Comp Enable	0	1	?	-	0
160	Rev Enable	0	1	?	-	0
161	EQ Enable	0	1	?	-	0
162	FX Fil Enable	0	1	?	-	0
163	Hyp Enable	0	1	?	-	0
164	OscAPitchTrack	0	1	?	-	1
165	OscBPitchTrack	0	1	?	-	1
166	Bend U	-24	24	=	semitones	2
167	Bend D	-24	24	=	semitones	-2
168	WarpOscA	0	1	?	-	0
169	WarpOscB	0	1	?	-	0
170	SubOscShape	0	1	?	-	0
171	SubOscOctave	-4	4	=	Oct	0
172	A Uni LR	0	100	=	-	100
173	B Uni LR	0	100	=	-	100
174	A Uni Warp	-100	100	=	-	0
175	B Uni Warp	-100	100	=	-	0
176	A Uni WTPos	-100	100	=	-	0
177	B Uni WTPos	-100	100	=	-	0
178	A Uni Stack	0	1	?	-	0
179	B Uni Stack	0	1	?	-	0
180	Mod 1 amt	-100	100	=	-	0
181	Mod 1 out	0	100	=	-	100
182	Mod 2 amt	-100	100	=	-	0
183	Mod 2 out	0	100	=	-	100
184	Mod 3 amt	-100	100	=	-	0
185	Mod 3 out	0	100	=	-	100
186	Mod 4 amt	-100	100	=	-	0
187	Mod 4 out	0	100	=	-	100
188	Mod 5 amt	-100	100	=	-	0
189	Mod 5 out	0	100	=	-	100
190	Mod 6 amt	-100	100	=	-	0
191	Mod 6 out	0	100	=	-	100
192	Mod 7 amt	-100	100	=	-	0
193	Mod 8 out	0	100	=	-	100
194	Mod 8 amt	-100	100	=	-	0
195	Mod 8 out	0	100	=	-	100
196	Mod 9 amt	-100	100	=	-	0
197	Mod 9 out	0	100	=	-	100
198	Mod10 amt	-100	100	=	-	0
199	Mod10 out	0	100	=	-	100
200	Mod11 amt	-100	100	=	-	0
201	Mod11 out	0	100	=	-	100
202	Mod12 amt	-100	100	=	-	0
203	Mod12 out	0	100	=	-	100
204	Mod13 amt	-100	100	=	-	0
205	Mod13 out	0	100	=	-	100
206	Mod14 amt	-100	100	=	-	0
207	Mod14 out	0	100	=	-	100
208	Mod15 amt	-100	100	=	-	0
209	Mod15 out	0	100	=	-	100
210	Mod16 amt	-100	100	=	-	0
211	Mod16 out	0	100	=	-	100
212	Osc A On	0	1	?	-	1
213	Osc B On	0	1	?	-	0
214	Osc N On	0	1	?	-	0
215	Osc S On	0	1	?	-	0
216	Filter On	0	1	?	-	0
217	Mod Wheel	0	100	=	%	0
218	Macro 1	0	100	=	%	0
219	Macro 2	0	100	=	%	0
220	Macro 3	0	100	=	%	0
221	Macro 4	0	100	=	%	0
222	Amp.	0	100	=	%	0
223	LFO1 smooth	0	100	=	-	0
224	LFO2 smooth	0	100	=	-	0
225	LFO3 smooth	0	100	=	-	0
226	LFO4 smooth	0	100	=	-	0
227	Pitch Bend	0	1	?	-	0.5
228	Mod17 amt	-100	100	=	-	0
229	Mod17 out	0	100	=	-	100
230	Mod18 amt	-100	100	=	-	0
231	Mod18 out	0	100	=	-	100
232	Mod19 amt	-100	100	=	-	0
233	Mod19 out	0	100	=	-	100
234	Mod20 amt	-100	100	=	-	0
235	Mod20 out	0	100	=	-	100
236	Mod21 amt	-100	100	=	-	0
237	Mod21 out	0	100	=	-	100
238	Mod22 amt	-100	100	=	-	0
239	Mod22 out	0	100	=	-	100
240	Mod23 amt	-100	100	=	-	0
241	Mod23 out	0	100	=	-	100
242	Mod24 amt	-100	100	=	-	0
243	Mod24 out	0	100	=	-	100
244	Mod25 amt	-100	100	=	-	0
245	Mod25 out	0	100	=	-	100
246	Mod26 amt	-100	100	=	-	0
247	Mod26 out	0	100	=	-	100
248	Mod27 amt	-100	100	=	-	0
249	Mod27 out	0	100	=	-	100
250	Mod28 amt	-100	100	=	-	0
251	Mod28 out	0	100	=	-	100
252	Mod29 amt	-100	100	=	-	0
253	Mod29 out	0	100	=	-	100
254	Mod30 amt	-100	100	=	-	0
255	Mod30 out	0	100	=	-	100
256	Mod31 amt	-100	100	=	-	0
257	Mod31 out	0	100	=	-	100
258	Mod32 amt	-100	100	=	-	0
259	Mod32 out	0	100	=	-	100
260	LFO5Rate	0	1	!	-	0.5
261	LFO6Rate	0	1	!	-	0.5
262	LFO7Rate	0	1	!	-	0.5
263	LFO8Rate	0	1	!	-	0.5
264	LFO5 smooth	0	100	=	-	0
265	LFO6 smooth	0	100	=	-	0
266	LFO7 smooth	0	100	=	-	0
267	LFO8 smooth	0	100	=	-	0
268	FXFil Pan	0	100	=	%	50
269	Comp_Wet	0	100	=	%	50
270	Gain L	0	200	=	%	100
271	Gain M	0	200	=	%	100
272	Gain H	0	200	=	%	100
273	LFO1 Rise	0	1	!	-	0.0
274	LFO2 Rise	0	1	!	-	0.0
275	LFO3 Rise	0	1	!	-	0.0
276	LFO4 Rise	0	1	!	-	0.0
277	LFO5 Rise	0	1	!	-	0.0
278	LFO6 Rise	0	1	!	-	0.0
279	LFO7 Rise	0	1	!	-	0.0
280	LFO8 Rise	0	1	!	-	0.0
281	LFO1 Delay	0	1	!	-	0.0
282	LFO2 Delay	0	1	!	-	0.0
283	LFO3 Delay	0	1	!	-	0.0
284	LFO4 Delay	0	1	!	-	0.0
285	LFO5 Delay	0	1	!	-	0.0
286	LFO6 Delay	0	1	!	-	0.0
287	LFO7 Delay	0	1	!	-	0.0
288	LFO8 Delay	0	1	!	-	0.0

After a little digging around, I found that the SYParameters.txt file seems to relate to the symbiosis-au-vst lib:

  • https://code.google.com/archive/p/symbiosis-au-vst/
    • https://code.google.com/archive/p/symbiosis-au-vst/wikis/Introduction.wiki
    • https://code.google.com/archive/p/symbiosis-au-vst/wikis/SymbiosisInUse.wiki
    • https://groups.google.com/g/symbiosis-au-vst

Symbiosis seems to be an old software library allowing VST’s to easily convert to/interact with the AU format.

In particular, I was looking deeper at this fork of the code, and noticed it mentions SYParameters.txt in a few places:

  • https://github.com/blurkk/symbiosis-au-vst-2
    • https://github.com/search?q=repo%3Ablurkk%2Fsymbiosis-au-vst-2+SYParameters.txt&type=code
      • In file: Symbiosis.mm, mentioned in function:
        • void SymbiosisComponent::readParameterMapping(const ::FSRef* fsRef)
      • 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).

Download the demo. All wavetables are there.