1 // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html
2 
3 #ifndef SPECTMORPH_MORPH_OUTPUT_VIEW_HH
4 #define SPECTMORPH_MORPH_OUTPUT_VIEW_HH
5 
6 #include "smmorphoperatorview.hh"
7 #include "smmorphoutput.hh"
8 #include "smcomboboxoperator.hh"
9 #include "smpropertyview.hh"
10 #include "smoperatorlayout.hh"
11 #include "smoutputadsrwidget.hh"
12 
13 namespace SpectMorph
14 {
15 
16 class MorphOutputView : public MorphOperatorView
17 {
18   ComboBoxOperator           *source_combobox;
19 
20   Label                      *unison_voices_title;
21   Label                      *unison_voices_label;
22   Slider                     *unison_voices_slider;
23 
24   Label                      *unison_detune_title;
25   Label                      *unison_detune_label;
26   Slider                     *unison_detune_slider;
27 
28   MorphOutput                *morph_output;
29 
30   MorphOutputProperties       morph_output_properties;
31 
32   PropertyView                pv_adsr_skip;
33   PropertyView                pv_adsr_attack;
34   PropertyView                pv_adsr_decay;
35   PropertyView                pv_adsr_sustain;
36   PropertyView                pv_adsr_release;
37 
38   PropertyView                pv_portamento_glide;
39   PropertyView                pv_vibrato_depth;
40   PropertyView                pv_vibrato_frequency;
41   PropertyView                pv_vibrato_attack;
42   PropertyView                pv_velocity_sensitivity;
43 
44   OutputADSRWidget           *output_adsr_widget;
45 
46   OperatorLayout              op_layout;
47 
48   void update_visible();
49 
50 public:
51   MorphOutputView (Widget *parent, MorphOutput *morph_morph_output, MorphPlanWindow *morph_plan_window);
52 
53   double view_height() override;
54   bool   is_output() override;
55 
56   /* slots */
57   void on_operator_changed();
58   void on_unison_voices_changed (int voices);
59   void on_unison_detune_changed (int detune);
60 };
61 
62 }
63 
64 #endif
65