1 // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html 2 3 #ifndef SPECTMORPH_MORPH_OUTPUT_MODULE_HH 4 #define SPECTMORPH_MORPH_OUTPUT_MODULE_HH 5 6 #include "smmorphoperatormodule.hh" 7 #include "smmorphplanvoice.hh" 8 #include "smeffectdecoder.hh" 9 10 namespace SpectMorph { 11 12 class MorphOutputModule : public MorphOperatorModule 13 { 14 std::vector<MorphOperatorModule *> out_ops; 15 std::vector<EffectDecoder *> out_decoders; 16 TimeInfo block_time; 17 18 bool m_portamento; 19 float m_portamento_glide; 20 float m_velocity_sensitivity; 21 22 public: 23 MorphOutputModule (MorphPlanVoice *voice); 24 ~MorphOutputModule(); 25 26 void set_config (MorphOperator *op); 27 void process (const TimeInfo& time_info, size_t n_samples, float **values, size_t n_ports, const float *freq_in = nullptr); 28 void retrigger (const TimeInfo& time_info, int channel, float freq, int midi_velocity); 29 void release(); 30 bool done(); 31 32 bool portamento() const; 33 float portamento_glide() const; 34 float velocity_sensitivity() const; 35 TimeInfo compute_time_info() const; 36 }; 37 38 } 39 40 #endif 41