Development of contemporary Ugens for SC

This is exactly why I’m somewhat pushing for a much more practical approach: find some interested SC developers to finish something like the FaustGen WIP, which should take like a few days…

5 Likes

This is a practical solution if you either apply post fx processing independent from your synthesis model or if you want to use an existing VST for synthesis. There are alot of devices out there where also some cool ones are for free, so thats a good option to have.

This is quite specific to my use case, a bit beyond the scope of the initial thread and you might find that completely uninteresting or irrelevant, but in the case of a universal model for granular synthesis with a focus on extended modulation capabilities, which i would like to implement for SC, there is no VST or other device available with what i have already figured out and what i still want to implement and do further investigations on.

For some of its basic features we need single-sample feedback, anti-aliasing and oversampling:

  • distribution of overlapping grains of unequal length (resulting from modulation of the trigger frequency and overlap) with detection if a current channel is busy or not
  • accumulation of ramps with f(t) = f(t-1) + m instead of f(t) = m * x(t), which would enable FM instead of just PM (PM is fine, however modulational indices for PM are very sensitive in terms of modulation, these either have to be latched to zero crossings of the carrier waveform (undesirable) or smoothed over time, but just using a OnePole filter here is not enough). In some of its details in this specific case FM is also a bit more user friendly then PM.
  • cross PM/FM synthesis of different grain chains
  • yet some others…

Probably all of these could be handled via your PoC implementation for reblocking and up/downsampling of whole UGen graphs and the addition of the oversampling oscilators with the tradeoff of modularity vs. efficiency. I find modularity very important, one might like to add another non-linearity into the feedback path or something else. With my testings when setting the blocksize to 1 with this specific implementation the CPU is about 40-50% on my computer, mostly because of the multichannel expansion for overlapping the grains in combination with the oversampling, so i would like to figure out what parts should be outsourced for the heavy lifting and know which environment i should use for that, beside programming the whole thing in c++ which im currently still not able to do.
It seems I should start using Faust instead of gen~.

It seems I should start using Faust instead of gen~.

I believe you are going to love faust. It thinks the way you think.

find some interested SC developers to finish something like the FaustGen WIP

This would be very smart. faust is awesome. Could be our native gen.

Sam

3 Likes

Given large repos of ugens is hard to maintain (sc3-plugins), we don’t have a package manager, and their is clearly an appetite for ‘ugen’ development that is both easy to share and slots into current usage, might it be worth considering having a faust2sc ugen (when complete - it seems like a great idea!!) distributed with the core plugins? This would allow people to use the existing quark system to distribute their ‘ugen’ code today. When/if we get a ugen package manager, we could make one swift breaking change to remove it again (along with other ugens).


I’m wouldn’t mind helping out in any way with Faust ugen, but I’ve got too many prs on the go right now that need a little work. If it is still under development in 6 months or so, I’ll lend a hand where ever I can.

3 Likes

@Stephane_Letz I’m also happy to help again :slight_smile:

2 Likes

For static ugen production we already have:

  • faust2supercollider started in 2010… as a bash script, currently working
  • Faust2sc.py started in 2021 by @madskjeldgaard. I don’t know the exact status since I’m not really using it
  • Faust.quark

And for dynamic compilation (that is editing/compiling Faust code on the fly), we have FaustGen stated in 2021, but never finished. The idea would put some effort to finish it.

4 Likes

Stephane,

Do you know if there is any plan for the online faust compiler to make arm builds of sc plugins (and other osx executables)? This seems long overdue.

Sam

We use an old docker with a kind of hack for macOS cross compilation (done by my ex-colleague). I still don’t know how to do ARM cross-compilation, any expertise here ?