Plugins that save plain text (human readable) presets?
-
- KVRian
- Topic Starter
- 582 posts since 23 Dec, 2002
Hi,
I'm considering a crazy project using machine learning to help in sound design.
Do you know of any plugins that save plain text (human readable) presets?
I know Helm does (JSON no less).
Any others?
I know that .fxp (which is somewhat of an standard) is not easy to read outside the plugin that generated it, so that's a bit of a show stopper. Most other plugins I have save in proprietary formats.
Thanks!
I'm considering a crazy project using machine learning to help in sound design.
Do you know of any plugins that save plain text (human readable) presets?
I know Helm does (JSON no less).
Any others?
I know that .fxp (which is somewhat of an standard) is not easy to read outside the plugin that generated it, so that's a bit of a show stopper. Most other plugins I have save in proprietary formats.
Thanks!
-
- KVRAF
- 2746 posts since 13 Feb, 2012 from Amsterdam
The Valhalla presets themselves are also saved as xml, which I assume is readable enough for your purposes. The Madronalabs presets use the same xml system. So... At least Aalto and Kaivo are usable
On second thought, Kaivo uses samples, which may not be a good fit after all.
On second thought, Kaivo uses samples, which may not be a good fit after all.
-
- KVRAF
- 5716 posts since 8 Jun, 2009
u-he's h2p format kicks off with a text section that contains a list of parameters and settings, but there's an "ugly compressed section, do not touch" section at the end – I have no idea if this contains information that isn't in the first section or whether it's simply a compressed copy.
TokyoDawn's recent plugins use an XML-style format as well for sharing presets.
TokyoDawn's recent plugins use an XML-style format as well for sharing presets.
-
- KVRAF
- 5716 posts since 8 Jun, 2009
One option is FM synths that handle DX7 sysex. It ain't text but the format is well documented. And FM is the kind of synthesis that lends itself to some kind of machine analysis.
- KVRian
- 1325 posts since 17 Aug, 2012 from Old Zealand
Aalto and Kaivo
It looks like this:
{
"delay_input": 0,
"seq_trig": 0,
"key_voices": 1,
"key_mod": 1,
"key_bend": 7,
"key_unison": 0,
"key_glide": 0.010000,
"seq_wave": 0,
"seq_local": 1,
"seq_host": 0,
"seq_loop": 1,
"seq_rate": 0.250000,
"seq_ratio": 1,
"seq_rate_p": 0,
"seq_steps": 16,
"seq_steps_p": 0,
"seq_offset": 0,
"seq_offset_p": 0,
"seq_range": 12,
"seq_quantize": 1,
"seq_glide": 0,
"seq_pw": 50,
"seq_value_delay": 0.662030,
"seq_pulse_delay": 0,
"seq_value0": 0,
"seq_value1": 0,
"seq_value2": 0.177778,
"seq_value3": 0,
"seq_value4": 0,
"seq_value5": 0,
"seq_value6": 0,
"seq_value7": 0.344444,
"seq_value8": 0,
"seq_value9": 0,
"seq_value10": 0,
"seq_value11": 0,
"seq_value12": 0.233333,
"seq_value13": 0.644444,
"seq_value14": 0,
"seq_value15": 0,
"seq_pulse0": 1,
"seq_pulse1": 0,
"seq_pulse2": 1,
"seq_pulse3": 1,
"seq_pulse4": 0,
"seq_pulse5": 0,
"seq_pulse6": 1,
"seq_pulse7": 1,
"seq_pulse8": 0,
"seq_pulse9": 0,
"seq_pulse10": 0,
"seq_pulse11": 0,
"seq_pulse12": 1,
"seq_pulse13": 1,
"seq_pulse14": 0,
"seq_pulse15": 0,
"lfo_freq": 1,
"lfo_noise": 0,
"lfo_level": 0,
"lfo_level_p": 0,
"lfo_freq_p": 0,
"env1_attack": 0.005000,
"env1_decay": 1,
"env1_sustain": 0.500000,
"env1_release": 1.490000,
"env1_level": 1,
"env1_xvel": 1,
"env1_trig_select": 2,
"env1_attack_p": 0,
"env1_decay_p": 0,
"env1_release_p": 0,
"env2_repeat": 0.429688,
"env2_delay": 0,
"env2_attack": 0.001000,
"env2_sustain": 0,
"env2_release": 0.010000,
"env2_xvel": 0,
"env2_trig_select": 1,
"env2_xenv1": 1,
"env2_delay_p": 0,
"env2_attack_p": 0,
"env2_repeat_p": 1,
"osc_noise": 0,
"osc_ratio": 1,
"osc_offset": 0,
"osc_index": 0,
"osc_timbre": 0,
"osc_pitch": 220,
"osc_waveshape": 0,
"osc_noise_p": 0,
"osc_ratio_p": 0,
"osc_offset_p": 0,
"osc_index_p": 0,
"osc_timbre_p": 0,
"osc_pitch_exp_p": 1,
"osc_pitch_lin_p": 20000,
"osc_waveshape_p": 0,
"osc_carrier_out": 0.500000,
"osc_mod_out": 0,
"gate_level": 0,
"gate_mode": 0,
"gate_decay": 1,
"gate_level_p": 1,
"delay_peakfreq": 1000,
"delay_drive": 0.500000,
"delay_peakres": 0,
"delay_feedback": 0.520000,
"delay_freq": 110,
"delay_input_p": 0.500000,
"delay_peakfreq_p": 1,
"delay_drive_p": 0,
"delay_peakres_p": 0,
"delay_feedback_p": 0,
"delay_freq_p": 1,
"delay_output_wet": 2,
"delay_output_dry": 1,
"filter_cutoff": 20000,
"filter_q": 0,
"filter_mix": -1,
"filter_cutoff_p": 1,
"filter_q_p": 0,
"filter_mix_p": 0,
"output_input_gain": 1,
"output_reverb": 0,
"output_pan": 0,
"output_reverb_p": 0,
"output_pan_p": 0,
"patcher_matrix": {
"type": "signal",
"width": 14,
"height": 31,
"depth": 1,
"data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
"key_scale": "12-equal",
"preset": "Ego_Aalto_Presets_from Default/low high Blip_1",
"maker_name": "Madrona Labs",
"app_name": "Aalto",
"app_version": 67328
}
It looks like this:
{
"delay_input": 0,
"seq_trig": 0,
"key_voices": 1,
"key_mod": 1,
"key_bend": 7,
"key_unison": 0,
"key_glide": 0.010000,
"seq_wave": 0,
"seq_local": 1,
"seq_host": 0,
"seq_loop": 1,
"seq_rate": 0.250000,
"seq_ratio": 1,
"seq_rate_p": 0,
"seq_steps": 16,
"seq_steps_p": 0,
"seq_offset": 0,
"seq_offset_p": 0,
"seq_range": 12,
"seq_quantize": 1,
"seq_glide": 0,
"seq_pw": 50,
"seq_value_delay": 0.662030,
"seq_pulse_delay": 0,
"seq_value0": 0,
"seq_value1": 0,
"seq_value2": 0.177778,
"seq_value3": 0,
"seq_value4": 0,
"seq_value5": 0,
"seq_value6": 0,
"seq_value7": 0.344444,
"seq_value8": 0,
"seq_value9": 0,
"seq_value10": 0,
"seq_value11": 0,
"seq_value12": 0.233333,
"seq_value13": 0.644444,
"seq_value14": 0,
"seq_value15": 0,
"seq_pulse0": 1,
"seq_pulse1": 0,
"seq_pulse2": 1,
"seq_pulse3": 1,
"seq_pulse4": 0,
"seq_pulse5": 0,
"seq_pulse6": 1,
"seq_pulse7": 1,
"seq_pulse8": 0,
"seq_pulse9": 0,
"seq_pulse10": 0,
"seq_pulse11": 0,
"seq_pulse12": 1,
"seq_pulse13": 1,
"seq_pulse14": 0,
"seq_pulse15": 0,
"lfo_freq": 1,
"lfo_noise": 0,
"lfo_level": 0,
"lfo_level_p": 0,
"lfo_freq_p": 0,
"env1_attack": 0.005000,
"env1_decay": 1,
"env1_sustain": 0.500000,
"env1_release": 1.490000,
"env1_level": 1,
"env1_xvel": 1,
"env1_trig_select": 2,
"env1_attack_p": 0,
"env1_decay_p": 0,
"env1_release_p": 0,
"env2_repeat": 0.429688,
"env2_delay": 0,
"env2_attack": 0.001000,
"env2_sustain": 0,
"env2_release": 0.010000,
"env2_xvel": 0,
"env2_trig_select": 1,
"env2_xenv1": 1,
"env2_delay_p": 0,
"env2_attack_p": 0,
"env2_repeat_p": 1,
"osc_noise": 0,
"osc_ratio": 1,
"osc_offset": 0,
"osc_index": 0,
"osc_timbre": 0,
"osc_pitch": 220,
"osc_waveshape": 0,
"osc_noise_p": 0,
"osc_ratio_p": 0,
"osc_offset_p": 0,
"osc_index_p": 0,
"osc_timbre_p": 0,
"osc_pitch_exp_p": 1,
"osc_pitch_lin_p": 20000,
"osc_waveshape_p": 0,
"osc_carrier_out": 0.500000,
"osc_mod_out": 0,
"gate_level": 0,
"gate_mode": 0,
"gate_decay": 1,
"gate_level_p": 1,
"delay_peakfreq": 1000,
"delay_drive": 0.500000,
"delay_peakres": 0,
"delay_feedback": 0.520000,
"delay_freq": 110,
"delay_input_p": 0.500000,
"delay_peakfreq_p": 1,
"delay_drive_p": 0,
"delay_peakres_p": 0,
"delay_feedback_p": 0,
"delay_freq_p": 1,
"delay_output_wet": 2,
"delay_output_dry": 1,
"filter_cutoff": 20000,
"filter_q": 0,
"filter_mix": -1,
"filter_cutoff_p": 1,
"filter_q_p": 0,
"filter_mix_p": 0,
"output_input_gain": 1,
"output_reverb": 0,
"output_pan": 0,
"output_reverb_p": 0,
"output_pan_p": 0,
"patcher_matrix": {
"type": "signal",
"width": 14,
"height": 31,
"depth": 1,
"data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
"key_scale": "12-equal",
"preset": "Ego_Aalto_Presets_from Default/low high Blip_1",
"maker_name": "Madrona Labs",
"app_name": "Aalto",
"app_version": 67328
}
Last edited by sbj on Tue Aug 04, 2015 9:12 pm, edited 3 times in total.
-
- KVRian
- 908 posts since 10 Jan, 2010
all ableton live presets are stored as gzip'd XML (the .adg files).
I haven't looked at these much to know if it would help you or not, but there it is.
https://www.ableton.com/answers/how-to- ... ext-editor
SFZ files are text files... there are several instruments that can play those.
and the late great Camel Alchemy stored all kinds of things, including presets, in text format AFAIK.
I haven't looked at these much to know if it would help you or not, but there it is.
https://www.ableton.com/answers/how-to- ... ext-editor
SFZ files are text files... there are several instruments that can play those.
and the late great Camel Alchemy stored all kinds of things, including presets, in text format AFAIK.
-
- KVRian
- Topic Starter
- 582 posts since 23 Dec, 2002
Just checked the U-he h2p format for tyrell. it has only ~10 params then the ugly binary 'don't touch this'. I don't think the text part represents all parameters, so that one is a no go.
-
- KVRian
- Topic Starter
- 582 posts since 23 Dec, 2002
Synth1 is plain text, although it lists only the CC number (I suspect). Not much fun to inspect visually:
--LEADS--
color=red
ver=108
0,0
45,0
76,0
1,3
2,64
3,81
4,1
5,64
6,0
7,0
8,64
9,0
10,0
11,64
12,0
13,0
71,0
72,64
14,1
15,0
16,64
17,32
18,64
19,81
20,14
21,128
22,64
23,0
24,1
25,0
26,0
27,127
28,0
29,107
30,64
59,0
31,1
32,0
33,11
34,64
65,0
82,0
35,8
83,66
36,40
37,20
66,0
64,2
52,64
53,64
54,50
55,64
56,40
60,64
61,64
62,64
63,64
90,64
77,0
78,0
79,64
80,64
81,64
38,0
39,0
74,0
40,2
73,0
75,22
84,64
85,24
50,20
51,20
57,0
41,2
42,1
43,64
44,0
67,0
68,0
58,0
46,5
47,1
48,64
49,64
69,0
70,0
--LEADS--
color=red
ver=108
0,0
45,0
76,0
1,3
2,64
3,81
4,1
5,64
6,0
7,0
8,64
9,0
10,0
11,64
12,0
13,0
71,0
72,64
14,1
15,0
16,64
17,32
18,64
19,81
20,14
21,128
22,64
23,0
24,1
25,0
26,0
27,127
28,0
29,107
30,64
59,0
31,1
32,0
33,11
34,64
65,0
82,0
35,8
83,66
36,40
37,20
66,0
64,2
52,64
53,64
54,50
55,64
56,40
60,64
61,64
62,64
63,64
90,64
77,0
78,0
79,64
80,64
81,64
38,0
39,0
74,0
40,2
73,0
75,22
84,64
85,24
50,20
51,20
57,0
41,2
42,1
43,64
44,0
67,0
68,0
58,0
46,5
47,1
48,64
49,64
69,0
70,0
- KVRAF
- 1874 posts since 13 Apr, 2011 from EU
Our, synth miniBit, and all our recent effects store the presets as XML.
Something like that:
Something like that:
Code: Select all
OscWave="0.11999999731779098511" OscFineTune="0.52999997138977050781" OscTune="1" OscVol="1" SubOscVol="0" Attack="0.0099999997764825820923" Decay="0.54000002145767211914" Sustain="0" Release="0.5" Cutoff="0.79000002145767211914" Resonance="0.28000000119209289551" MonoPoly="1" Glide="0" Velocity="1" DelayTime="0.5" DelayFeedback="0.34000000357627868652" DelayWet="0.11999999731779098511" DelaySync="1" Bits="0.73799997568130493164" SampleRate="0.18000000715255737305" LFORate="0.5" LFOWave="0" LFODestination="0" LFOAmount="0" LFOSync="0" Bypass="0" StepperRate="0.25"
- u-he
- 28068 posts since 8 Aug, 2002 from Berlin
Not sure what you've checked, but all of TyrellN6' parameters are listed in human-readable form in h2p files. It's not just 10, it's merely a hundred.urlwolf wrote:Just checked the U-he h2p format for tyrell. it has only ~10 params then the ugly binary 'don't touch this'. I don't think the text part represents all parameters, so that one is a no go.
The "Section for ugly compressed binary Data" contains information about the preset location (important when stored in host project), possibly a microtuning scale and maybe some text labels that may or may not be used by the software. In some of our plug-ins it also contains the order of modules to process, colours and order of patch cables, the names of module presets, curves and waveforms. It's generally stuff that's not really suited for humans to figure out
-
- KVRian
- Topic Starter
- 582 posts since 23 Dec, 2002
Great to hear Urs.
I found some presets online that only had 10 or so entries in the plain text sound file. But I see that the ones that come with TyrellN6 have all of them. Nice.
TyrellN6 fails to load on FLstudio, both 32 and 64 bits. Any idea why this could be? It crashes the FI wrapper, with a very serious looking error.
I found some presets online that only had 10 or so entries in the plain text sound file. But I see that the ones that come with TyrellN6 have all of them. Nice.
TyrellN6 fails to load on FLstudio, both 32 and 64 bits. Any idea why this could be? It crashes the FI wrapper, with a very serious looking error.
- u-he
- 28068 posts since 8 Aug, 2002 from Berlin
I have no idea. It's probably a permissions thing (check the FAQ on our website) or maybe contact our support. They can usually help quickly with those kinds of things.urlwolf wrote:Great to hear Urs.
I found some presets online that only had 10 or so entries in the plain text sound file. But I see that the ones that come with TyrellN6 have all of them. Nice.
TyrellN6 fails to load on FLstudio, both 32 and 64 bits. Any idea why this could be? It crashes the FI wrapper, with a very serious looking error.
-
fluffy_little_something fluffy_little_something https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=281847
- Banned
- 12880 posts since 5 Jun, 2012
What exactly do you intend to do with that information? Associate certain parameter value ranges with corresponding sound characteristics?