Files
serumalt/Source/Synth/NoiseOscillator.cpp
biggy 4b0db50271 refactor(source): move every implementation into its module directory
- 36 files move into the module whose AGENTS.md already claimed them:
  Engine/, Synth/, Modulation/, Params/, Plugin/, GUI/, EffectUnits/, Resources/
- Source/engine, modulation, params, plugin and synth become Engine,
  Modulation, Params, Plugin and Synth, matching the directories that already
  hold code
- ExactCompare.h stays at the Source/ root as the one shared header
- SERUMALT_INCLUDE_DIRS adds one include directory per module, so the 31
  parent-relative includes become plain names with no path prefix
- the module AGENTS.md files list owned files instead of describing a move
  that had not happened, and README.md and AGENTS.md describe the real tree

Verified: the harness passes CTest, the Linux VST3 and Standalone link, the
Windows cross-build passes its module checks, each configure exposes only its
own targets, no first-party warning line appears, and the generated Windows
manifest is unchanged.
2026-10-06 09:17:49 +02:00

37 lines
773 B
C++

#include "NoiseOscillator.h"
namespace serum
{
void NoiseOscillator::reset()
{
pinkB0 = pinkB1 = pinkB2 = 0.0f;
}
void NoiseOscillator::noteOn (juce::uint32 seed)
{
rng.setSeed (seed);
}
void NoiseOscillator::processAdd (int type, float level, float& out) noexcept
{
if (level <= 0.0f)
return;
const float white = rng.nextFloat() * 2.0f - 1.0f;
float s = white;
if (type == (int) NoiseType::Pink)
{
// Paul Kellet's economy pink-noise filter.
pinkB0 = 0.99765f * pinkB0 + white * 0.0990460f;
pinkB1 = 0.96300f * pinkB1 + white * 0.2965164f;
pinkB2 = 0.57000f * pinkB2 + white * 1.0526913f;
s = pinkB0 + pinkB1 + pinkB2 + white * 0.1848f;
}
out += s * level;
}
} // namespace serum