Additive Synthesis with higher partial counts

    Misc

    Blair's icon
    Blair's icon
    Blair
    Feb 03 2023 | 10:51 am
    How would you guys approach creating an additive synth with a high partial count? I want to be able to have control over things like pitch, phase, starting time and volume (+ volume over time). Is this possible with oscbank?

    • Pedro Santos's icon
      Pedro Santos's icon
      Pedro Santos
      Feb 03 2023 | 11:30 am
      Hi, Blair. Yes. See ioscbank~ instead, which also has phase control. Starting time would be possible with the amplitude parameter (zero to non-zero).
      Share
    • Roman Thilenius's icon
      Roman Thilenius's icon
      Roman Thilenius
      Feb 03 2023 | 12:07 pm
      i use "complete" sine wave generators with retriggerable phase accumumumumulators, a spare wheel and gold finish, conveniently packed into a poly~ garage or just running in parallel.
      in ioscbank~ you can not control more than one partial at the same time using signals.
      if partial count > 200 then it´ll be better to switch to kyma.
    • Blair's icon
      Blair's icon
      Blair
      Feb 03 2023 | 12:25 pm
      Is more than 200 too cpu intensive?
    • Roman Thilenius's icon
      Roman Thilenius's icon
      Roman Thilenius
      Feb 03 2023 | 12:30 pm
      depends on CPU and your design.
      i have no idea what the limit of ioscbank is on an M2, but in custom MSP i dont do more than 100 on a mac pro 2012 or 32 on a G4.
    • Blair's icon
      Blair's icon
      Blair
      Feb 03 2023 | 12:31 pm
      damn I was thinking about polyphonic with 512 partials haha. I know harmor can do that so I thought it would be possible
    • Roman Thilenius's icon
      Roman Thilenius's icon
      Roman Thilenius
      Feb 03 2023 | 1:22 pm
      512 with 2 envelopes (pitch and amplitude) which can be modulated in signal rate sounds like something you would like to write in gen~.
      sonically it might be fine to send updated data to ioscbank~ every 32 samples and use the built-in interpolation, but that is huge lists of numbers then you are dealing with.
    • Iain Duncan's icon
      Iain Duncan's icon
      Iain Duncan
      Feb 03 2023 | 3:39 pm
      You could also use the Csound6~ object - csound is very good for additive synthesis as it gives you a lot of options for how much cpu you use up on your sine waves. (table size, type of interpolation, whether they can be at sub sample rate, a number of different generators, etc.)
      Keep in mind also that you don't want (can't have) partials that go past the nyquist, so depending on the range your working in, this can be a lot lower than 512. ie at 48khz, A 220 that's only 109 partials, at 110: 218.
      I ported the Csound6 object from Pd to Max specifically to experiment with this having the partials controlled by Scheme for Max - but then got distracted with other things! Good reminder to get back to it. :-) https://github.com/iainctduncan/csound_max
    • Blair's icon
      Blair's icon
      Blair
      Feb 04 2023 | 8:59 am
      Okay thanks guys! I'll have a look at your ideas