Subversion Repositories DIN Is Noise

Rev

Rev 2097 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
* curve_mixer.h
* DIN Is Noise is copyright (c) 2006-2025 Jagannathan Sampath
* DIN Is Noise is released under GNU Public License 2.0
* For more information, please visit https://dinisnoise.org/
*/


#ifndef __CURVE_MIXER__
#define __CURVE_MIXER__

#include "solver.h"
#include <string>

struct multi_curve;

struct set_mixer {
  std::string name;
  virtual void set_mix (multi_curve& crv, const std::string& nam = "") = 0;
};

struct curve_mixer {

  static float TIME;
  static int SAMPLES;
  static double ELAPSEDT;

  std::string name;

  multi_curve mix;

  int active;

  float a, da;
  void update_a ();

  solver sol;
  float x, dx;

  curve_mixer ();
  ~curve_mixer ();
  void setup (multi_curve& crv, float ix, float idx);
  void fill_alpha (float* alpha, int n);
  void gen_alpha (float* alpha, int n);
  void gen_mix (float* mixb, int n);
  void gen_mix (float* mixb, int n, xhandler& xmin, xhandler& xmax);
  void gen_fm (float* out, int n, float* fm);
  void do_mix (float* out, float* mixb, float* ab, int n);

};
#endif