From cc5d2c7475004c67a709ade241d86f9951749174 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Wed, 29 Dec 2010 18:22:32 +0100 Subject: Define an interface and a skeleton for class Note --- synth/note_skel.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 synth/note_skel.cpp (limited to 'synth/note_skel.cpp') diff --git a/synth/note_skel.cpp b/synth/note_skel.cpp new file mode 100644 index 0000000..acc580f --- /dev/null +++ b/synth/note_skel.cpp @@ -0,0 +1,82 @@ +#include + +#include "note_skel.h" +#include "globals.h" +#include "defines.h" + +using namespace std; + +Note::Note(int n, float v, program_t &prg, jack_nframes_t pf, fixed_t pb, int prg_no) +{ + curr_prg=&prg; + + portamento_frames=0; + set_portamento_frames(pf); + + set_note(n); + freq=dest_freq; + set_vel(v); + do_ksl(); + + pitchbend=pb; + + program=prg_no; +} + +void NoteSkel::set_pitchbend(fixed_t pb) +{ + pitchbend=pb; +} + +void NoteSkel::set_freq(float f) +{ + old_freq=freq; + dest_freq=f*ONE; + portamento_t=0; + + do_ksr(); +} + +void NoteSkel::set_freq(float f, bool do_port) +{ + set_freq(f); + + if (!do_port) + old_freq=dest_freq; +} + +void NoteSkel::set_note(int n) +{ + note=n; + set_freq(440.0*pow(2.0,(float)(n-69)/12.0)); +} + +void NoteSkel::set_note(int n, bool do_port) +{ + note=n; + set_freq(440.0*pow(2.0,(float)(n-69)/12.0), do_port); +} + +int NoteSkel::get_note() +{ + return note; +} + +void NoteSkel::set_vel(float v) +{ + vel=v*ONE; + + recalc_factors(); + apply_pfactor(); +} + +void NoteSkel::set_portamento_frames(jack_nframes_t t) +{ + portamento_frames=t; + portamento_t=0; +} + +int NoteSkel::get_program() +{ + return program; +} -- cgit v1.2.3