You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.5 KiB

4 years ago
#pragma once
#ifndef DSY_DRIP_H
#define DSY_DRIP_H
#include <stdint.h>
#ifdef __cplusplus
/** @file drip.h */
namespace daisysp
{
/**
Imitates the sound of dripping water via Physical Modeling Synthesis. \n
Ported from soundpipe by Ben Sergentanis, May 2020
@author Perry Cook
@date 2000
*/
class Drip
{
public:
Drip() {}
~Drip() {}
/**
Initializes the Drip module.
\param sample_rate The sample rate of the audio engine being run.
\param dettack The period of time over which all sound is stopped.
*/
void Init(float sample_rate, float dettack);
/**
Process the next floating point sample.
\param trig If true, begins a new drip.
\return Next sample.
*/
float Process(bool trig);
private:
float gains0_, gains1_, gains2_, kloop_, dettack_, num_tubes_, damp_,
shake_max_, freq_, freq1_, freq2_, amp_, snd_level_, outputs00_,
outputs01_, outputs10_, outputs11_, outputs20_, outputs21_,
total_energy_, center_freqs0_, center_freqs1_, center_freqs2_,
num_objects_save_, sound_decay_, system_decay_, finalZ0_, finalZ1_,
finalZ2_, coeffs01_, coeffs00_, coeffs11_, coeffs10_, coeffs21_,
coeffs20_, shake_energy_, shake_damp_, shake_max_save_, num_objects_,
sample_rate_, res_freq0_, res_freq1_, res_freq2_, inputs1_, inputs2_;
int my_random(int max);
float noise_tick();
};
} // namespace daisysp
#endif
#endif