There are no mysteries in libre software, thankfully: a tour of the source code would solve them
In this case, even though I am no Sherlock Holmes (so anybody, correct me if I am wrong please), the .ds format seems to be an .ini format for an
internal synth whose headers are separate modules (like [Distortion]) and whose parameters are like the knobs of that module (like Clipping=20).
When you load those files into LMMS, they are pretty much
rendered as audio files.
Of course, if you load those .ds files into another DrumSynth-compatible program, the result is likely going to be different because the synthesis engine is different.
To create your own sounds from that program, you basically have to study the spec for the .ds format. I don't think an official spec exist (since it's a proprietary format which LMMS re-implements freely) but you could just read the
DrumSynth.cpp file. Some tips:
- The headers (which I called "modulers" before) are: General, Noise, Tone, Overtones, NoiseBand, NoiseBand2, Distortion
- The parameters (which I called "knobs" before) are those generally retrieved by using the GetPrivateProfile___ function. So, if you search for GetPrivateProfile in your editor (or grep) you will find all parameters for each module right after the module is initialized (so, after strcpy is called in the DrumSynth.cpp file)
For the sake of posterity (people searching the Interwebs) I will translate the DrumSynth.cpp file from the LMMS codebase to a semi-readable spec:
Code: Select all
[General]
Version=
Comment=
Stretch=
Level=
Tuning=
Filter=
Resonance=
HighPass=
[Noise]
On=
Level=
Slope=
[Tone]
On=
Level=
F1=
F2=
Droop=
Phase=
[Overtones]
On=
Level=
Method=
F1=
F2=
Wave1=
Wave2=
Param=
Filter=
Track1=
Track2=
[NoiseBand]
On=
Level=
F=
dF=
[NoiseBand2]
On=
Level=
F=
dF=
[Distortion]
On=
Rate=
Bits=
Clipping=
I am not a LMMS expert so if someone wants to correct me or add type information (i.e. possible values for each parameter), that'd be great! But looking at the dozens of included presets in LMMS should be enough to get started.