// generated by Fast Light User Interface Designer (fluid) version 1.0300

#ifndef SUBnoteUI_h
#define SUBnoteUI_h
#include <FL/Fl.H>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "../globals.h"
#include "WidgetPDial.h"
#include "EnvelopeUI.h"
#include "FilterUI.h"
#include "../Misc/Util.h"
#include "../Params/SUBnoteParameters.h"
#include "PresetsUI.h"
#include <FL/Fl_Slider.H>
#include <FL/Fl_Box.H>

class SUBnoteharmonic : public Fl_Group {
  Fl_Group* make_window();
public:
  Fl_Group *harmonic;
  Fl_Slider *mag;
private:
  void cb_mag_i(Fl_Slider*, void*);
  static void cb_mag(Fl_Slider*, void*);
public:
  Fl_Slider *bw;
private:
  void cb_bw_i(Fl_Slider*, void*);
  static void cb_bw(Fl_Slider*, void*);
public:
  SUBnoteharmonic(int x,int y, int w, int h, const char *label=0);
  void init(SUBnoteParameters *pars_,int n_);
  void refresh();
  ~SUBnoteharmonic();
private:
  SUBnoteParameters *pars; 
  int n; 
};
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Scroll.H>
#include <FL/Fl_Pack.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Value_Slider.H>
#include <FL/Fl_Counter.H>
#include <FL/Fl_Choice.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Value_Output.H>

class SUBnoteUI : public PresetsUI_ {
public:
  Fl_Double_Window* make_window();
  Fl_Double_Window *SUBparameters;
  Fl_Pack *harmonics;
private:
  void cb_Close_i(Fl_Button*, void*);
  static void cb_Close(Fl_Button*, void*);
public:
  Fl_Value_Slider *vol;
private:
  void cb_vol_i(Fl_Value_Slider*, void*);
  static void cb_vol(Fl_Value_Slider*, void*);
public:
  Fl_Value_Slider *vsns;
private:
  void cb_vsns_i(Fl_Value_Slider*, void*);
  static void cb_vsns(Fl_Value_Slider*, void*);
public:
  WidgetPDial *pan;
private:
  void cb_pan_i(WidgetPDial*, void*);
  static void cb_pan(WidgetPDial*, void*);
public:
  EnvelopeUI *ampenv;
  Fl_Counter *filterstages;
private:
  void cb_filterstages_i(Fl_Counter*, void*);
  static void cb_filterstages(Fl_Counter*, void*);
public:
  Fl_Choice *magtype;
private:
  void cb_magtype_i(Fl_Choice*, void*);
  static void cb_magtype(Fl_Choice*, void*);
  static Fl_Menu_Item menu_magtype[];
public:
  Fl_Choice *start;
private:
  void cb_start_i(Fl_Choice*, void*);
  static void cb_start(Fl_Choice*, void*);
  static Fl_Menu_Item menu_start[];
public:
  Fl_Group *freqsettingsui;
  EnvelopeUI *freqenvelopegroup;
  Fl_Check_Button *freqee;
private:
  void cb_freqee_i(Fl_Check_Button*, void*);
  static void cb_freqee(Fl_Check_Button*, void*);
public:
  Fl_Counter *octave;
private:
  void cb_octave_i(Fl_Counter*, void*);
  static void cb_octave(Fl_Counter*, void*);
public:
  Fl_Counter *coarsedet;
private:
  void cb_coarsedet_i(Fl_Counter*, void*);
  static void cb_coarsedet(Fl_Counter*, void*);
public:
  Fl_Slider *detune;
private:
  void cb_detune_i(Fl_Slider*, void*);
  static void cb_detune(Fl_Slider*, void*);
public:
  Fl_Value_Output *detunevalueoutput;
private:
  void cb_detunevalueoutput_i(Fl_Value_Output*, void*);
  static void cb_detunevalueoutput(Fl_Value_Output*, void*);
public:
  Fl_Check_Button *hz440;
private:
  void cb_hz440_i(Fl_Check_Button*, void*);
  static void cb_hz440(Fl_Check_Button*, void*);
public:
  WidgetPDial *fixedfreqetdial;
private:
  void cb_fixedfreqetdial_i(WidgetPDial*, void*);
  static void cb_fixedfreqetdial(WidgetPDial*, void*);
public:
  Fl_Choice *detunetype;
private:
  void cb_detunetype_i(Fl_Choice*, void*);
  static void cb_detunetype(Fl_Choice*, void*);
public:
  Fl_Check_Button *stereo;
private:
  void cb_stereo_i(Fl_Check_Button*, void*);
  static void cb_stereo(Fl_Check_Button*, void*);
  void cb_Clear_i(Fl_Button*, void*);
  static void cb_Clear(Fl_Button*, void*);
public:
  Fl_Group *bandwidthsettingsui;
  EnvelopeUI *bandwidthenvelopegroup;
  Fl_Check_Button *bwee;
private:
  void cb_bwee_i(Fl_Check_Button*, void*);
  static void cb_bwee(Fl_Check_Button*, void*);
public:
  Fl_Value_Slider *bandwidth;
private:
  void cb_bandwidth_i(Fl_Value_Slider*, void*);
  static void cb_bandwidth(Fl_Value_Slider*, void*);
public:
  Fl_Value_Slider *bwidthscale;
private:
  void cb_bwidthscale_i(Fl_Value_Slider*, void*);
  static void cb_bwidthscale(Fl_Value_Slider*, void*);
public:
  Fl_Group *globalfiltergroup;
  EnvelopeUI *filterenv;
  FilterUI *filterui;
  Fl_Check_Button *filtere;
private:
  void cb_filtere_i(Fl_Check_Button*, void*);
  static void cb_filtere(Fl_Check_Button*, void*);
  void cb_C_i(Fl_Button*, void*);
  static void cb_C(Fl_Button*, void*);
  void cb_P_i(Fl_Button*, void*);
  static void cb_P(Fl_Button*, void*);
public:
  void refresh();
  SUBnoteUI(SUBnoteParameters *parameters);
  ~SUBnoteUI();
private:
  SUBnoteParameters *pars; 
  SUBnoteharmonic *h[MAX_SUB_HARMONICS]; 
};
#endif
