My sets are the same, I mostly stick to the sampling stuff and limited syntax, I really love using the splice command the most! Chopping a sample and then reorganizing it on the fly is something you can't do on a turntable, and chopping samples is a painstaking process even in the DAW and Tidal just does it so instantaneously with results that typically blow me away every time.
I think I could pull off a dramatic change in structure on the fly, like leading from an A section to a B section, in a reasonable amount of time now that I have a solid understanding of how to use "Do" blocks and the Clutch function (or command? idk what you call it) with a piece I've performed before but writing a piece from scratch in front of an audience and trying to do that would take me forever.
I really appreciate the tone of your post though, in terms of the opposition to the two approaches. I think they're both totally valid. I think of it like any other form of music really, and improvisation is something really vital to a performance. No one expects other musicians to write entirely new pieces from scratch in front of an audience and it seems like a lot of pressure to put on yourself imo. Although, now that I say that maybe there needs to be a distinction between writing on-the-fly and composing/producing on-the-fly?
I did look into controlling them from Tidal or SC. I use Serum for pretty much everything. Sometimes I work with FM8 and I like to generate wavetable samples from VCV Rack to plug into Serum. I know it's possible but I wonder how stable that is in a live context, especially with an intense instrument like Serum? Serum is very well optimized but I worry about loading up like 10 or more instances of it live. I could be wrong though.
What I really want is a Serum-like instrument in SC that can be controlled by Tidal. I imagine setting up lines of code like
d1 $ note $ "c2 d2@ as1" # s "TidalSerum" # WTPosA 4-8 # OSCAVoice 6 # OSCBVoice 3 # WTPOSB 22-42
And maybe with additional commands at the end to control how fast the WaveTable Position on an oscillator transitions between wavetables. It might be tricky if you try to add in custom envelopes or LFO's to shape the way the wavetable position changes in SC but you could definitely do something similar without as many bells and whistles to start off with. I was working on a synthdef that would do all of that. I think it would be fun to design a patch on-the-fly or just modulate one you already made in that kind of format. I also think that it would be wicked fun to compose from Tidal with an instrument like that. I'm not a big fan of the instruments that are out there right now.
The biggest issue I ran into was the OSC Ugen in SuperCollider. I was building this wavetable synth in SC to use in Tidal, and got help on the SC forums. I had managed to load a wav file onto the server and convert it into a wavetable and loaded that into an oscillator and even got the whole thing to perform via Tidal. My biggest issue was setting up the envelopes correctly and then dealing with clipping issues from the oscillator. They were all simple fixes and the community there even helped me make the code really efficient. At some point one of the devs there, or at least someone who had some developer knowledge about SC explained to me that the OSC Ugen doesn't oversample like Serum's oscillators do. So you won't get as hi-fidelity of a sound from your wavetables. I ended up doing research into it and figured out that you could make an Oscillator Ugen with a similar or maybe even better algorithm than Serum if you could use embedded Assembly instructions in a custom OSC Ugen. Serum's oscillator algorithm is derived from a formula that was actually published in some mathematical academic papers out of Europe over a decade ago. That formula was made more efficient for Serum's oscillators by a mathematician that wrote or co-wrote one of those papers. I need to hunt down the papers, I'm sure they exist in an academic journal on math somewhere. Even with the original, less efficient formula that was published long ago I'm sure you could improve upon it and build something amazing. That's all public knowledge too btw. The developer of Serum talked about it in an interview years ago that you can still find on YouTube. An oscillator like that would be something amazing to offer up to the live code community. I want to work on it, developing for SC is something I'm working on atm but it's slow going. I'm a novice when it comes to C++ and I'm having a hell of a time trying to set up a development environment to code and debug an SC plugin. There's a lot of moving parts involved and it's not super straightforward. I can set up a development environment easily for a VST3 framework inside Visual Studio and do the debugging right from Visual studio but setting up for SC is super confusing. People have pointed me towards the cookie cutter for SC plugins and stuff but for someone who likes using visual studio it's kind of confusing.
For me the oscillators are a big issue. I can hear the difference, even though I'm sure not everyone agrees. I also really like working with LFOs and it's a bit awkward setting those up on something like, let's say a low pass filter cutoff in SC. It can be done with the lin Ugen (I think that's what it's called) but it's tricky getting it dialed in the way you want. So if I had my wavetable synthdef and it's playing a low octave note for an entire bar I can set it to have a low pass filter that shifts the cutoff frequency over the course of a bar (roughly) using what is essentially an LFO but then to get the drive I want I'd have to probably add the compressor Ugen, a distortion Ugen, and another limiter Ugen and then use the distortion plugin in Tidal to get the wob wob sound I want. I mean, it's doable to some degree but I want to be able to just do all of that from within Tidal with a synth patch that has that all ready to be modulated, with default settings set to bypass or something.
Loading multiple wavetables into a single oscillator in SC is also doable but as far as a I know it is a bit cumbersome to do in a synthdef and to try and control the wavetable position from Tidal. But it's something I want to do. It's funny, discussing all of this and yeah, it would be simpler to just control the VST from Tidal, so why do it the way I'm describing? lol I don't have a solid answer for that right now lol
I also like multiband saturation. With the right algorithm you can make even a synth with a highly aliased and lifeless digital sound have the same "warmth" as an analog synth that costs thousands of dollars. I use fabfilter Saturn 2 for distortion but even on cleaner synth patches with just a subtle amount of warm tube distortion at varying levels across a few bands you can create what sounds like a super expensive moog machine. I think another project I;d like to work on some day is a multiband saturation/distortion plugin for SC that has multiple algorithms to emulate various forms of saturation and compression like tube amps, transformers, tape saturation etc that would work like an exciter as well. That would probably be a simpler project than the oscillator though.
Anyway I've dragged that out enough. And yeah I really appreciate what you had to say about preparing for a blank screen performance. I'll admit even with a prepared structure of code I still run through it a few times before a performance, modulating and changing things before resetting it back to how it was.
And I admit a lot of my own struggles with the code are probably due to my own limitations with it. I go to the forums a lot with questions and whenever I paste code examples there's always someone who suggests more efficient method. But yeah, thank you for your post and for the discussion. There's only one other person in my entire state that I know of who does live coding and I don't know how to get a hold of them lol so it's nice being able to discuss things with people!