Skip to content

File particle.h

File List > DaisySP > Source > Noise > particle.h

Go to the documentation of this file

Source Code

#pragma once
#ifndef DSY_PARTICLE_H
#define DSY_PARTICLE_H

#include "Filters/svf.h"
#include <stdint.h>
#include <cstdlib>
#ifdef __cplusplus

namespace daisysp
{
class Particle
{
  public:
    Particle() {}
    ~Particle() {}

    void Init(float sample_rate);

    float Process();

    float GetNoise();

    void SetFreq(float frequency);

    void SetResonance(float resonance);

    void SetRandomFreq(float freq);

    void SetDensity(float density);

    void SetGain(float gain);

    void SetSpread(float spread);

    void SetSync(bool sync);

  private:
    static constexpr float kRandFrac  = 1.f / (float)RAND_MAX;
    static constexpr float kRatioFrac = 1.f / 12.f;
    float                  sample_rate_;
    float aux_, frequency_, density_, gain_, spread_, resonance_;
    bool  sync_;


    float rand_phase_;
    float rand_freq_;


    float pre_gain_;
    Svf   filter_;
};
} // namespace daisysp
#endif
#endif