diff options
author | Florian Jung <flo@thinkpad.(none)> | 2010-12-29 16:55:25 +0100 |
---|---|---|
committer | Florian Jung <flo@thinkpad.(none)> | 2010-12-29 16:55:25 +0100 |
commit | 7113f02ae87482211aec5046f9ac46c3cc9ad017 (patch) | |
tree | b6484b45317e7e80567d9902cf94843d227ce30e /synth/note.h |
Initial commit
Diffstat (limited to 'synth/note.h')
-rw-r--r-- | synth/note.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/synth/note.h b/synth/note.h new file mode 100644 index 0000000..5035bd2 --- /dev/null +++ b/synth/note.h @@ -0,0 +1,80 @@ +#ifndef __NOTE_H__ +#define __NOTE_H__ + +#include <jack/jack.h> + +#include "programs.h" +#include "envelope.h" +#include "fixed.h" +#include "filter.h" + +class Note +{ + public: + Note(int n, float v,program_t &prg, jack_nframes_t pf, fixed_t pb, int prg_no); + ~Note(); + fixed_t get_sample(); + int get_note(); + void set_note(int n); + void set_note(int n, bool do_port); + void set_freq(float f); + void set_freq(float f, bool do_port); + void set_pitchbend(fixed_t pb); + void set_vel(float v); + void set_portamento_frames(jack_nframes_t f); + void release_quickly(jack_nframes_t maxt); + void release(); + void reattack(); + bool still_active(); + void set_param(const parameter_t &p, fixed_t v); + int get_program(){return program;} + + private: + void do_ksl(); + void do_ksr(); + + void recalc_factors(); + void apply_pfactor(); + + Envelope **envelope; + fixed_t freq, dest_freq, old_freq; + fixed_t vel; + jack_nframes_t portamento_t, portamento_frames; + + fixed_t *oscval; + fixed_t *old_oscval; + int n_oscillators; + oscillator_t *oscillator; + + fixed_t sync_factor; + fixed_t sync_phase; + + pfactor_value_t pfactor; + + int note; + int program; + program_t *curr_prg; + + fixed_t pitchbend; + + LowPassFilter filter; + Envelope *filter_envelope; + filter_params_t filter_params; + int filter_update_counter; + + struct + { + oscillator_t *oscillator; + filter_params_t filter_params; + } orig; + +/* *einstellungen: oszillatoren, deren lautstärke etc. + * note + * lautstärke + * *pitchbend + * *portamento time + */ +}; + + +#endif |