Create orchestra with additive and subtractive synthesis of several minutes

Greetings .
I wanted some advice on how to lengthen this starter patch to make it more interesting. Remaining in the additive synthesis with fixed and variable spectrum plus a subtractive one at most. How would you modify and add to bring it to a good duration of at least 4 minutes?

Then based on the number of samples I’m going to set the range of dbfs. With regard to the patch, expect to add equal frequencies like 200 202 204 etc. every few seconds, all having the amplitude of a square wave and after like 40 60 seconds do the same thing but setting after the gen10 or 9 harmonics with an amplitude of a 'triangular wave or tooth signal .
And then in the last subtractive sound in descending order only the odd with an increasingly decreasing amplitude. I just find it a bit hard to do it completely alone, and for this I was also looking for an opinion on how to tell csound to play in series only even frequencies with harmonics of a square wave instead of writing each string for each minimum frequency as reported above that is 202 ,204 ,206 up to type 6khz for example a huge will come out.

In short, on the book I stopped at the first two chapters and the subtractive, but I haven’t found a way (or I’ve seen it wrong) to simplify the process a bit that I would like to do.
ps.I put in the starter patch I’m building on hoping to build it up to like 5 minutes worth of sounds.
Thanks for all

1 Like

I’m not sure exactly from your description what you fully intend to do but a few ideas. Hopefully some of those more familiar with Csound can help.

First, your file was very heavily distorted for me as there were many samples far out of range. When using 0dbfs, a single oscillator with an amplitude of 1 is the maximum before samples go out of range and distortion occurs. You have many oscili that use amp values in the hundreds or thousands.

If using many osc then all combined amplitudes should have a value of less than 1. Older books and files not using an orchestra setting of 0dbfs = 1 will use very large raw values, up to 32,767:

With 0dbfs = 1, all amp values should be between 0 and 1. They can be decimal, like .36, .6, or .014.

I modified your file to reflect more realistic values while trying to still somewhat keep the relative values. It now has a maximum amp value of .8, or 80% of full amplitude when played, to avoid distortion.

I’m not sure what you want to do in terms of adding frequencies, I suspect it’s just me or a language barrier. You mention things like adding harmonics of a square wave. I may be off base but one way you could achieve this is by morphing thru tables, or you could keep adding frequencies thru the score.

Here’s an example of creating the first several harmonics needed to create a basic type of square wave by morphing thru tables:

Chapter 4A of the Csound FLOSS manual might have some information you would find useful. You can download it here or read it online:

You can also download all the csd
files here:

Hope that helps a bit,

Thanks scott so much for your advice and for fixing the amplitude problem. I’ll go straight to the point with my post by asking you: what would you do to extend this patch to 4 minutes like using fixed and variable spectrum additive synthesis followed by a subtractive one?
My idea is to broaden the one you corrected and to sensibly insert various frequencies (fixed additive \ variable) and then filter them with a butterworth filter (subtractive) This would be enough for me. Thank you so much for everything and for your vision of this orchestra.

Hello boys .
the first exercise bringing it to a minute of which I would like to understand if I have done well enough. I wanted to create envelopes in freq. taking advantage of the various harmonics of gen 10.

  1. are they good as I set sin wave, triangular and saw tooth?
  2. I would like to make the spectrum of each frequency that plays in the envelope more complex in a short time, keeping myself on the wave established in the score. How can I give advice?
  3. if I wanted to generate the square oda differently using a subtractive synthesis starting from the sawtooth that I have already composed, how would you do it?
    Ps other tips to increase the duration of this patch are welcome.
    Many thanks to whoever will help me

Hello again.

I’ll try to help as I can, but I’m not a very advanced Csound user. There are some problems with your file affecting the results.

You are generating many repetitive ftables in the score and they unnecessarily repeat. Also, as they are generated in the score, the ftables overwrite each other affecting the result.

In the score you indicate sine, triangle and saw but it is instead using only the saw waveform since the saw ftables have overwritten the others before starting to play the instruments in the score. So from time 0 until the end, pretty much every single waveform produced is a saw. If rendered to audio and viewed in an audio editor there are no sine or triangle waves, only saw. And if you listen closely you can also hear only the saw waveform.

It is only necessary, and much safer, to create the wave ftables “globally”, which generates the different waveforms only once before compiling the score. Also, giving each table a separate number avoids one overwriting another.

I modified your file so that each wave table is generated only once. All instruments can use and share a single ftable. In the score you can see that p5 will allow the instrument to choose between sine, triangle, saw or square. And in each instrument, the oscili uses p5 from the score to select the table.

This simplifies the code & now each section of the score is producing the correct waveforms.

It may take you some time to fully understand but hopefully you can see how much simpler this is to accomplish and also much easier to read.

Try looking this example over first and then perhaps I or someone else can help you accomplish what you would like to do next.

Here is a link to the example:

You can also find some good examples in the Csound FLOSS manual, such as:

Look at example 03D04.

If you have questions feel free to ask.


1 Like