Hi all,
I'm the developer of the Superfm synth for SuperDirt. I am very happy and touched to see other people using it. This is very exciting.
Sorry for the late reply, I've been more into Supercollider than Tidal lately. I wasn't aware of this thread. A friend pointed it to me just now.
I see there's quite a bit of confusion on this synth, so I'm planning on setting up an online workshop, or tutorial, or stream, or whatever, to give some guidelines on how this synth works. I have a busy month ahead, but I'll try to do it sometime during October. I don't think it's possible to do it before. Would you be up for it? Maybe a YouTube stream? What do you people think?
I'll try to give some answers to the different questions.
That would be absolutely awsome! This is the full list:
-- modulators
mod11 = pF "mod11"
mod12 = pF "mod12"
mod13 = pF "mod13"
mod14 = pF "mod14"
mod15 = pF "mod15"
mod16 = pF "mod16"
mod21 = pF "mod21"
mod22 = pF "mod22"
mod23 = pF "mod23"
mod24 = pF "mod24"
mod25 = pF "mod25"
mod26 = pF "mod26"
mod31 = pF "mod31"
mod32 = pF "mod32"
mod33 = pF "mod33"
mod34 = pF "mod34"
mod35 = pF "mod35"
mod36 = pF "mod36"
mod41 = pF "mod41"
mod42 = pF "mod42"
mod43 = pF "mod43"
mod44 = pF "mod44"
mod45 = pF "mod45"
mod46 = pF "mod46"
mod51 = pF "mod51"
mod52 = pF "mod52"
mod53 = pF "mod53"
mod54 = pF "mod54"
mod55 = pF "mod55"
mod56 = pF "mod56"
mod61 = pF "mod61"
mod62 = pF "mod62"
mod63 = pF "mod63"
mod64 = pF "mod64"
mod65 = pF "mod65"
mod66 = pF "mod66"
-- operator envelope generator levels
eglevel11 = pF "eglevel11"
eglevel12 = pF "eglevel12"
eglevel13 = pF "eglevel13"
eglevel14 = pF "eglevel14"
eglevel21 = pF "eglevel21"
eglevel22 = pF "eglevel22"
eglevel23 = pF "eglevel23"
eglevel24 = pF "eglevel24"
eglevel31 = pF "eglevel31"
eglevel32 = pF "eglevel32"
eglevel33 = pF "eglevel33"
eglevel34 = pF "eglevel34"
eglevel41 = pF "eglevel41"
eglevel42 = pF "eglevel42"
eglevel43 = pF "eglevel43"
eglevel44 = pF "eglevel44"
eglevel51 = pF "eglevel51"
eglevel52 = pF "eglevel52"
eglevel53 = pF "eglevel53"
eglevel54 = pF "eglevel54"
eglevel61 = pF "eglevel61"
eglevel62 = pF "eglevel62"
eglevel63 = pF "eglevel63"
eglevel64 = pF "eglevel64"
-- operator envelope generator rates
egrate11 = pF "egrate11"
egrate12 = pF "egrate12"
egrate13 = pF "egrate13"
egrate14 = pF "egrate14"
egrate21 = pF "egrate21"
egrate22 = pF "egrate22"
egrate23 = pF "egrate23"
egrate24 = pF "egrate24"
egrate31 = pF "egrate31"
egrate32 = pF "egrate32"
egrate33 = pF "egrate33"
egrate34 = pF "egrate34"
egrate41 = pF "egrate41"
egrate42 = pF "egrate42"
egrate43 = pF "egrate43"
egrate44 = pF "egrate44"
egrate51 = pF "egrate51"
egrate52 = pF "egrate52"
egrate53 = pF "egrate53"
egrate54 = pF "egrate54"
egrate61 = pF "egrate61"
egrate62 = pF "egrate62"
egrate63 = pF "egrate63"
egrate64 = pF "egrate64"
-- operator output levels
amp1 = pF "amp1"
amp2 = pF "amp2"
amp3 = pF "amp3"
amp4 = pF "amp4"
amp5 = pF "amp5"
amp6 = pF "amp6"
-- operator frequency ratios
ratio1 = pF "ratio1"
ratio2 = pF "ratio2"
ratio3 = pF "ratio3"
ratio4 = pF "ratio4"
ratio5 = pF "ratio5"
ratio6 = pF "ratio6"
-- operator frequency detuners
detune1 = pF "detune1"
detune2 = pF "detune2"
detune3 = pF "detune3"
detune4 = pF "detune4"
detune5 = pF "detune5"
detune6 = pF "detune6"
-- other
feedback = pF "feedback"
lfofreq = pF "lfofreq"
lfodepth = pF "lfodepth"
Yes, it'd be great! There are 6 presets already in the # voice
parameter, but since I didn't really know what to put in them at first I let them be random for the time being. 0
is the default customizable one; [1-5] are random presets that are consistent for one boot - they are generated every time you boot SuperDirt and cleared when quitting the server, so you never get the same. Anyhow, by playing with it I came across a couple of nice presets that I will store in the # voice
at some point, but will share here for now.
Double saw:
d1 $ s "superfm"
# n 0
# amp1 1
# amp2 0
# amp3 1
# amp4 0
# amp5 0
# amp6 0
# ratio2 1.01
# mod12 0.75
# mod34 0.7
# mod45 0.6
Double pulse:
d1 $ s "superfm"
# n 0
# amp1 1
# amp2 0
# amp3 1
# amp4 0
# amp5 0
# amp6 0
# ratio2 2.01
# ratio4 2
# ratio5 2
# mod12 0.75
# mod34 0.7
# mod45 0.6
FM bass:
d1 $ s "superfm"
# octave 4
# n 0
# amp1 1
# amp2 1
# amp3 0
# amp4 0
# amp5 0
# amp6 1
# ratio2 2
# ratio3 3
# ratio4 4
# ratio5 0.5
# ratio6 0.25
# feedback 1
# mod11 1
# mod16 1
# mod23 1
# mod34 1
# mod45 1
# mod66 1
# egrate61 1
# egrate62 10
# egrate63 1
# eglevel62 0.13
# eglevel63 1.5
# room 0.5
Wow! That's very very interesting. I love it. It would be so cool to have these.
This is absolutely brilliant. Thank you so much for posting it. I like it much better than the original function syntax, too. I'm not a Haskell person, so I very much appreciate this.
I think that's it for now. I'm open to further suggestions and improvements. I'll do my best on keeping track of any input. And would definitely love to see what interesting presets come out and may add them as voices, too. I myself discovered FM not long ago and am still in dipers, so any help will be very much appreciated.
Cheers!