Cabbage Logo
Back to Cabbage Site

Duplicating a reverb'd signal down 1octave

Hello! Sorry for the dumb question but I’m really new to csound. I have a hacked reverb plugin example and I’m trying to duplicate the already reverberated signal down an octave (so that there’s 2 reverbs happening), I just can’t wrap my head around the syntax.

Do i need to first convert the current reverb output to something else? I tried the octave function but just got build errors.

Please use small words because I’m reaaaaaaally new to csound :confused:

Welcome to Cabbage and Csound!

Do you want the pitch shifter to be before or after the reverb? I would recommend placing it before the reverb, that way the reverb will smear any artefacts introduced by the pitch shifter.

What way do you want to implement the pitch shifter? Using time domain processing (delays) or frequency domain processing (pvs opcodes)? I would recommend time domain in this context.

To implement the pitch shifter you could look at the example Examples/Effects/Spectral/PitchShifter.csd. It implements the time domain pitch shifter as a UDO so you should be able to transplant the code for the pitch shifter to your own project reasonably easily.

A rather nice thing you can do is to implement an FDN reverb and insert a pitch shifter within the global feedback loop. This creates an arpeggiating effect in which the pitch shifter interval is repeated over and over.

I hope this is of some help. If you need any clarification on any of this, please ask.

Thanks Iain!

I think I’d put the pitch shifter before the reverb like you suggest. I’m looking at the example now and I’ve copied the opcode for the first type of pitch shifter over, as well as calling the opcode in the instrument, this results in an undefined variable “gihanning” but when I copy that over and paste it in the same spot as the example (under the sample rate stuff), and build, Cabbage crashes. I have no idea what gihanning is supposed to do but I assume it’s necessary.

reverb_plugin_firsttest.csd (4.4 KB)

Sorry for the ugly code, I’ve left in some variables and stuff that I’m not sure if I need yet or not.