Does "Nesting" Sample Rate Doubler Modules Work?

Official support for: sonicbirth.sourceforge.net
Post Reply New Topic
RELATED
PRODUCTS

Post

Anyone know this? If I put a sample rate doubler circuit/module within another one, within another one within . . . can I actually continue to double the sample rate?

Post

dscro wrote:Anyone know this? If I put a sample rate doubler circuit/module within another one, within another one within . . . can I actually continue to double the sample rate?
From looking at the code, it appears that you can 4x sample his way (though I may be wrong). You could quickly measure CPU usage if you wanted to confirm.

J

Post

I've been wondering what the proper implementation of the sample rate doubler is... I've not seen any difference in alias artifacts...


Will someone in the know please post a description of it's proper implementation?

Post

zmix wrote:I've been wondering what the proper implementation of the sample rate doubler is... I've not seen any difference in alias artifacts...


Will someone in the know please post a description of it's proper implementation?
SB is hosted here:
http://sonicbirth.svn.sourceforge.net/

You can view all code form your browser:
http://sonicbirth.svn.sourceforge.net/v ... cBirth_v1/

Choosing a source file from repository (link above) will show the latest notes, then just click the 'view' button to view the source/file from your browser.

Here is the URL for SBSampleRateDoubler.m:

http://sonicbirth.svn.sourceforge.net/v ... iew=markup

SB also uses Objective-C and Objective-C++, so files with extensions 'm', 'M', or 'mm' will also be implementation files (in addition to the usual cpp, c...).

J

Post

The Samplerate doubler initializes with no inputs or outputs.

The "Infos" section reads:

"Samplerate Doubler: Audio processing inside this circuit is done at double sample rate, which can be useful (sounds better) for some type of calculations (filters)."

Merely having it present in the circuit does nothing, and setting inputa and outputs is unclear, since it passes no signal...


Can anyone explain it's proper implementation in a circuit?

Thanks.

Post

zmix wrote:The Samplerate doubler initializes with no inputs or outputs.

The "Infos" section reads:

"Samplerate Doubler: Audio processing inside this circuit is done at double sample rate, which can be useful (sounds better) for some type of calculations (filters)."

Merely having it present in the circuit does nothing, and setting inputa and outputs is unclear, since it passes no signal...


Can anyone explain it's proper implementation in a circuit?

Thanks.
Hi zmix,

It initializes with no i/o because i/o is user configured from the settings panel. The SBSampleRateDoubler object functions as a container for other elements (this is why you can use subcircuit within it).

It queries the i/o configuration with calls such as:
obj->mInputAudioBuffersCount;

The line:
(cir->pCalcFunc)(cir, c2, o2);
is the requests the subcircuits to render.

What happens in the implementation:
The input buffers are copied to a larger buffer (using some interpolation)- this larger buffer is used when the sub elements are requested to render. In simple terms, the copy process ultimately reads 1 sample per 2 samples written to the destination buffer.

When they have finished rendering, the samples are copied back to the source buffer using the same(inverse) interpolation scheme. Again, in simple terms, this copy process ultimately reads 2 sample per 1 sample written to the destination buffer.

So, the elements contained by the circuit do render twice as many samples. WRT aliasing, the result will depend on what you are trying to accomplish.

Does that help?

J

Post

eigentone wrote:
Hi zmix,

It initializes with no i/o because i/o is user configured from the settings panel. The SBSampleRateDoubler object functions as a container for other elements (this is why you can use subcircuit within it).

I've written hundreds of plugins in Sonic Birth, all original and most of them are quite intricate. I'm no beginner when it comes to signal processing either.

I understand what the sample rate doubler is supposed to do and how it does this, but there is no documentation on the simplest usage.

I suppose that my issue here is very very basic:

I do not understand how the sample rate doubler is implemented as a normal object in a SB circuit.


How do you configure the I/O, as I stated earlier when I create I/O channels, no signal passes through it.

Also, what do you mean by "container" and how does one call a circuit from within the SR doubler?

Post

The SR Doubler definitely passes audio for me. I created one, gave it one in and one out, selected it and then clicked "next" to go inside it as I would any sub-circuit. The manual isn't clear at all that this is what you do.

A stuck a tanh(x) soft clipper function inside and then low pass filtered it around 22k using a 6 pole LPF (6 generic single pole LPF cascaded) for a steep rolloff. If I'm right, the tanh function when pushed hard should introduce very high harmonics (hence the almost clipped square wacve appearance of the waveform) that will exceed Nyquist and result in aliasing. So if I do all this at 2X the SR then filter then return to 44.1kHZ I should remove much of that aliasing. Am I right in thinking that?

Well, the SR Doubler worked fine, the audio passed through, the material certainly sounded "overdriven" but I couldn't hear any difference with or without the SR doubler. And I listened on two very sensitive sets of monitors. This wasn't a very scientific test.

Post

dscro wrote:The SR Doubler definitely passes audio for me. I created one, gave it one in and one out, selected it and then clicked "next" to go inside it as I would any sub-circuit. The manual isn't clear at all that this is what you do.
Thanks for understanding my obliviousness..... I'll give this another try!!!!

Post Reply

Return to “SonicBirth”