(root)/wip/src/sine_mixer.h - Rev 1539
Rev 1566 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* sine_mixer.h
* DIN Is Noise is copyright (c) 2006-2020 Jagannathan Sampath
* For more information, please visit http://dinisnoise.org/
*/
#ifndef __sine_mixer
#define __sine_mixer
#include "box.h"
#include "multi_curve.h"
#include "spinner.h"
#include "checkbutton.h"
#include "state_button.h"
#include "levels.h"
#include "plugin.h"
#include "point.h"
#include "custom_periodic.h"
#include "sine.h"
#include "curve_editor.h"
#include "listeners.h"
#include "filled_button.h"
#include "mouse_slider.h"
#include "plus_button.h"
#include "minus_button.h"
#include "cross_button.h"
#include <vector>
struct harmonics_list_button : state_button {
std::vector<int> harmonics;
};
struct sine_mixer : plugin, change_listener<levels>, curve_listener, option_listener, move_listener, mouse_slider_listener {
static int NUM_SINE_SAMPLES;
static const int MIN_SINE_SAMPLES;
int num_points;
int make_shapeform;
funktion* pf_sin;
custom_periodic cp_sin;
sine st_sin;
int type;
curve_editor sin_ed;
int nharmonics;
std::vector< std::vector< point<float> > > harmonics;
// output
std::vector< point<float> > norm;
void normalise ();
// ui
//
spinner<int> sp_points;
levels sine_levels;
filled_button fb_mover;
checkbutton cb_make_shapeform;
checkbutton cb_paint_harmonics;
// custom sin
options_list ol_sin;
button b_edit;
// for harmonic shifting
button b_lshift, b_rshift;
button b_slide;
checkbutton cb_wrap;
// harmonic selection
button b_all, b_inv, b_non;
void sel_all_harms ();
void desel_all_harms ();
void inv_sel_harms ();
// harmonics bookmarking
plus_button plus;
MAKE_CLICK_LISTENER (plus_lis, pll)
minus_button minus;
MAKE_CLICK_LISTENER (minus_lis, mil)
cross_button cross;
MAKE_CLICK_LISTENER (cross_lis, crl)
MAKE_STATE_LISTENER (harm_lis, hal)
std::vector<harmonics_list_button*> hlba;
void bookmark_harmonics ();
void rem_all_bookmarks ();
void rem_bookmarks ();
void clear_bookmarks ();
sine_mixer ();
~sine_mixer ();
void load_params ();
void save_params ();
void setup ();
void set_type ();
void set_samples (int s);
void prep_harmonics ();
void num_harmonics (int n);
void mix ();
void render ();
int auto_apply;
void apply_not_auto_apply ();
void shift_apply ();
void changed (levels& l);
void changed (field& f);
void changed (checkbutton& cb);
void picked (label& lbl, int dir);
void edited (curve_editor* e, int i);
void clicked (button& b);
void moused (int d);
void moved ();
};
extern sine_mixer sinemixer;
#endif