Subversion Repositories DIN Is Noise

Rev

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

/*
* listeners.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 __LISTENERS
#define __LISTENERS

#include "curve_listener.h"

struct din;
struct ui;
struct instrument;

struct wave_listener : curve_listener {
  enum {MICROTONAL_KEYBOARD, KEYBOARD_KEYBOARD, DRONE, MONDRIAN};
  int which;
  wave_listener (int w) : which (w) {}
  void edited (curve_editor* ed, int i);
};

struct beat2value;
struct beat2value_listener : curve_listener {
  beat2value* bv;
  beat2value_listener ();
  void edited (curve_editor* ed, int i);
  void set (beat2value* _bv) {bv = _bv;}
};

CURVE_LISTENER (drone_mod_lis)
CURVE_LISTENER (morse_code_listener)

struct solver;
struct delay;
struct delay_listener : curve_listener {
  delay* dly;
  solver* sol;
  float* result;
  delay_listener () : dly(0), sol (0), result (0) {}
  delay_listener& operator() (delay* d, solver* s, float* r) { dly = d; sol = s; result = r; return *this;}
  void edited (curve_editor* ed, int i);
};

struct attack_listener : curve_listener {
  instrument* inst;
  void edited (curve_editor* ed, int i);
};

struct decay_listener : curve_listener {
  instrument* inst;
  void edited (curve_editor* ed, int i);
};

CURVE_LISTENER (velocity_listener)
CURVE_LISTENER (range_wh_lis)
CURVE_LISTENER (pitch_vol_lis)
CURVE_LISTENER (pomo_lis)
CURVE_LISTENER (noise_interp_lis)
CURVE_LISTENER (drone_pend_ed_lis)

#endif