Can XAOC Devices Sofia be replicated in VCV Rack?

That sounded pretty good! Yeah, XAOC said it was based on FOF synthesis.


this sound synthesis is really funny, i have made a native VCVRack prototype:


Hi ! So it is a post to an other forum, but I actually tried to do that and you can hear a short exemple and download the patch there :

(here I tried to do the same kind of post but you can’t upload even short mp3 / wavs)


That sounds awesome. I think that would be a very unique oscillator in the VCV library…

That looks similar to my own attempt, but I think your results sound much better – more like Sofia. I’ll have to dig into your patch a little more, but maybe my envelopes weren’t short enough.


1 Like

This is great to play with and it should work with any oscillator having sync and FM. I assume that the wrap effect can be made by mixing the rampage out into the FM of the VCO e.g. via VCV CV Mix.


1 Like

Yes exactly, I was trying to split it into its basic functions, just basing the patch on the idea of adding two differently tuned oscillators, one for each half of the cycle, having two (very short) enveloppes for amplitude control of each of those. When fine tuning the exemple I recorded I went for something smooth, but the square outs and lots of FM give crazy results too, it is a nice way of waveshaping that I had not tried before and now that the bases are there, why not going for other types of oscillators ? That would stray away from the Xaoc but I am curious ! (PM, PD, Wavetable, samples ?? …)

I have tried with VCV WTVCO but with the default tables this does not work very well, because to much unwanted high frequencies when the Pos is somewhere in between. In contrast, I have used very smooth (band limited) saw and square waves for the ripples in my prototype which imho sounds better. May be interesting would be to filter the ripple oscillators somehow.

1 Like

Here is my take on the Sofia using existing free modules.

Unlike the Sofia hardware - this emulator is fully polyphonic!

I’ve implemented most of the Sofia features except:

  • The ripple elements are restricted to just the positive half of the fundamental cycle, whereas I believe the Sofia hardware goes to about 75%
  • This version does not have any scaling of the ripple damping (decay)
  • There is both linear and exponential FM available on the fundamental (right most) oscillator. But I think the result is quite different than the Sofia hardware - I don’t understand the two FM inputs available in Sofia.

Below are the user controls for the emulator, going from top left to right:

  • OCT – Fundamental octave
  • CVMIX #1 – Fundamental V/Oct
  • CVMIX #2 – Ripple A Warp
  • CVMIX #3 – Ripple A Ratio (bottom knob 100% scales to Fund pitch, 0% is no scaling)
  • CVMIX #4 – Ripple B Warp
  • CVMIX #5 – Ripple B Ratio (bottom knob 100% scales to Fund pitch, 0% is no scaling)
  • SWITCH #1 – Ripple A shape selection, OFF = sine, ON = square
  • POLY ADSR #1 – Ripple A Damp (Decay)
  • SWITCH #2 – Ripple B shape selection, OFF = sine, ON = square
  • POLY ADSR #2 – Ripple B Damp (Decay)
  • FADE #1 – A / B Mix
  • FADE #2 – Fundamental / Ripple Mix

I have another version of this emulator with a slick user interface, but it is dependent on an unreleased module that I am helping to beta test. I hope to be able to share that version soon. This second version will include scaling of the damp decay.

Construction of the emulator is surprisingly easy. Below are some design notes:

  • The square output from the fundamental oscillator is used as the gates for the ripple envelopes. The ADSRs use a very short, but non-zero, attack and release to smooth out the transition in and out of the ripple phase of each cycle. This also provides a small ripple spike even with maximum damping (0 value).
  • The ADSR sustain is set to 0 so that decay to 0 can happen before the end of the square gate.
  • The saw output of the fundamental oscillator is offset and used as CV for the warp effect.
  • I wanted to increase the pulse width to enable the ripple phase to go as much as 75% of the fundamental cycle. But that would require adjusting the phase of the saw wave to get the proper warp profile. I could achieve that with the Sckitam Waveguide Delay, but that module is not polyphonic :frowning:
    Update - the soon to be released Surge XT Tuned Delay works great, and is polyphonic. So my version with the UI does go as much as 75% of the fundamental cycle.

Pretty sick to have a polyphonic Sofia. Sounds great!

Any chance you can post that Csound code here ?

gisine ftgen 0,0,8192,10,1
gisq ftgen 0,0,8192,10,1,0,0.3333,0,0.2,0,0.141,0.11
gisaw ftgen 0,0,8192,10,1,0.5,0.3333,0.25,0.2,0.166,0.141,0.11
gitab ftgen 0,0,4096,7,0,4096,1

instr 1
  kfreq chnget sprintf("FREQ%d",p4)
  aref oscil 0.75,kfreq,ibasewav
  kform chnget "P1"
  aout fof2 0.7,kfreq,ksbfreq,0,100,krise/kfreq,kdur/kfreq,kdec/kfreq,200,iwav,gitab,100,0,1
  aout = aref + aout*kamt
  aenv madsr 0.001,0,1,0.02
  outs aout,aout


Thank you !

Yeah, WTVCO is super clean, but that default wave does have a ton of high frequencies in some positions. I’ll bet there are other ones (WT files) out there that are more like what you want.

Dave, any chance you could post the version of the Sofia patch that you made with Mindmeld’s PatchMaster??? I’m assuming that is the unreleased module you were referring to but I could be wrong!


1 Like

Yes - I should have posted that ages ago. I’ll see if I can pull it together to share. But I am also trying to get my Venom plugin out the door.


No problem!!! Thanks for posting!!

I have finally posted the much improved emulator that uses Patch Master for a user interface!

I’ve got two songs that I performed with this emulator almost two months ago on Dec 5, 2022.

Sofia on a Sunny Day

Sofia After Dark (My favorite)

You can also watch the full virtual open mic set, including the banter


That’s a pretty great emulation. Now what do I do with my $500 hardware analog oscillator???