Cabbage Logo
Back to Cabbage Site

New synth project : inputs welcome

Hi All,

Thanks to Rory encouragements, I throw the idea of the new project into the pool!

It will be a 5 oscillators Cabbage 2 FM synth based on poscil opcodes.
@Oeyvind csound page are very inspiring.

Should you like to provide feedback, advice, criticism, you are welcome. It is likely your help will be needed.
There will be a github project page for it.

First question to anyone who can have a look at the code (around lines 571 -595) and at the little UDO called FM, is the following :
In the code, are the different stages of oscillators correctly chained according to the figures shown in the synth interface ( parallel, serie, mixed, …).

Here is the very early stage ( it already makes sound) (375.4 KB)

Hi @Karamel1,
Looking at it quickly, it seems like there is a scrambling of the numbering of the oscillators in mode 3 and 4. For example Mode 4 says that oscillator 2 is unmodulated, while in the code it is aFM4 that is not frequency modulated. Maybe I’m just misunderstanding how you label the different oscillators(?).

Also, is the kFreqMod inside the FM udo meant to be a master scale of the overall pitch?
It looks that way here
amod_frq = aPitch * kFreqMod
It works this way too, I just wondered if that is what you want.

And finally, which csound page are you referring to? Just wondered if my ancient page if still acessed, in which case I shuld probably go there and dust things off a bit…

… let me add, I was just looking at the code, so there is a chance I miss the bigger context of the design.

Maybe I should have used a better numbering for the audio signals !
In mode 4, the osc2 is used to generate aFM4 ( it is not receiving any modulation) ( Or did i make a mistake? )

aFM4 FM kPitchInit, gk_FM_Freq_Mod_Osc2 , gk_FM_Amp_Mod_Osc2, gi_TableOsc2

This is where I was struggling. How should I proper implement a modulation cascade based on this example (first box)
;----- FM without foscili ----------------
icar_frq = icps * icar
imod_frq = icps * imod
imod_amp = imod_frq * indx
koscil oscili imod_amp, imod_frq, 1
asig_r oscili iamp , icar_frq + koscil, 1

Webpage is :

Oh ,ok, yes, it might be easier to read (and debug) if the signals has names and numbering that correspond to the figure. what confused me is that what you refer to as “osc2” uses the variable name “aFM4” for it’s audio output signal.

Otherwise, it sounds ok when I try the synth, also the pitch scaling.
I guess again, that I just was confused by the way the code is organized.

I will renumber accordindly to oscillator tables.

Nice synth though!

Should the menu controls in the gui do something (or is that yet to be implemented) ?
It seems they don’t do anything here.

Yes, there will be modules like in the Morpheur synth :slight_smile:
It is just a little of copy/paste to do.

At the moment, I wonder about enveloppe within the modulation signal . I accidentally “discovered” ( sure everyone else knew about it… but I am noob) that an ADSR envelope can be applied to a modulator itself, which allows modulation to be morphed over time ( and therefore enriching the resulting sound over time) .
Of course, LFO could be also applied , but I am not sure if all these are interesting to implement.

I think both envelopes and LFOs would be interesting and useful on the modulator index.
Then again, of course, if you implementy “everything” the instrument will become a monster (which is what I normally do, but that does not mean it is a good idea…)

I will do !
Somehow, it is a lot of code but it is not too complex to write. I am really glad that I already start to get interesting, warm sounds.

Now, there is a github to track progress :

Hi all,
The very first beta has been uploaded on github.
Please feed back about the GUI is welcome ( I am no designer…I am just trying to get things efficient)