Got rid of all global variables.
authorStefan Westerfeld <stefan@space.twc.de>
Sun, 16 May 2010 14:17:44 +0000 (16:17 +0200)
committerStefan Westerfeld <stefan@space.twc.de>
Sun, 16 May 2010 14:17:44 +0000 (16:17 +0200)
src/jacksampler.cc
src/jacksampler.hh

index 121277f..7518338 100644 (file)
 using std::string;
 using std::vector;
 
-double        mout = 0.0;
-double        release_delay_ms = 0;
-double        release_ms = 50;
-
-int            instrument = 1;
-bool           pedal_down = false;
-
-struct Voice
-{
-  enum { UNUSED, ON, RELEASE_DELAY, FADE_OUT } state;
-
-  double env;
-  double pos;
-  double frequency;
-  double velocity;
-  double rd_pos;
-  bool   pedal;
-  int note;
-
-  Sample *sample;
-
-  Voice()
-    : state (UNUSED),
-      pedal (false)
-  {
-  }
-};
-
-vector<Voice> voices (256);
-
-float
+static float
 freqFromNote (float note)
 {
   return 440 * exp (log (2) * (note - 69) / 12.0);
 }
 
-bool
+static bool
 isNoteOn (const jack_midi_event_t& event)
 {
   if ((event.buffer[0] & 0xf0) == 0x90)
@@ -91,7 +61,7 @@ isNoteOn (const jack_midi_event_t& event)
   return false;
 }
 
-bool
+static bool
 isNoteOff (const jack_midi_event_t& event)
 {
   if ((event.buffer[0] & 0xf0) == 0x90)
@@ -106,6 +76,16 @@ isNoteOff (const jack_midi_event_t& event)
   return false;
 }
 
+JackSampler::JackSampler() :
+  voices (256),
+  instrument (1),
+  pedal_down (false),
+  release_delay_ms (0),
+  release_ms (50),
+  mout (0)
+{
+}
+
 void
 JackSampler::init (jack_client_t *client)
 {
index 9d11b98..daaebaa 100644 (file)
@@ -31,21 +31,52 @@ struct Sample
   int                instrument;
 };
 
+struct Voice
+{
+  enum { UNUSED, ON, RELEASE_DELAY, FADE_OUT } state;
+
+  double env;
+  double pos;
+  double frequency;
+  double velocity;
+  double rd_pos;
+  bool   pedal;
+  int note;
+
+  Sample *sample;
+
+  Voice()
+    : state (UNUSED),
+      pedal (false)
+  {
+  }
+};
+
 class JackSampler
 {
 protected:
-  double       jack_mix_freq;
+  double        jack_mix_freq;
+
+  jack_port_t  *input_port;
+  jack_port_t  *output_port;
 
-  jack_port_t *input_port;
-  jack_port_t *output_port;
+  int           instrument;
+  bool          pedal_down;
+
+  double        release_delay_ms;
+  double        release_ms;
+  double        mout;
 
   std::vector<Sample> samples;
+  std::vector<Voice> voices;
 
   void        load_note (const Options& options, int note, const char *file_name, int instrument);
   int         process (jack_nframes_t nframes);
   static int  jack_process (jack_nframes_t nframes, void *arg);
 
 public:
+  JackSampler();
+
   void init (jack_client_t *client);
   void parse_config (const Options& options, int instrument, const char *name);
   void change_instrument (int new_instrument);