00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FADE_CURVE_H
00024 #define FADE_CURVE_H
00025
00026 #include "Curve.h"
00027
00028 #include <QString>
00029 #include <QStringList>
00030 #include <QList>
00031 #include <QPointF>
00032
00033 class Sheet;
00034 class AudioClip;
00035
00036 class FadeCurve : public Curve, public APILinkedListNode
00037 {
00038 Q_OBJECT
00039
00040 Q_CLASSINFO("toggle_bypass", tr("Toggle Bypass"))
00041 Q_CLASSINFO("set_mode", tr("Cycle Shape"))
00042 Q_CLASSINFO("reset", tr("Remove Fade"))
00043 Q_CLASSINFO("toggle_raster", tr("Toggle Raster"))
00044
00045 public:
00046 static QStringList defaultShapes;
00047
00048 FadeCurve(AudioClip* clip, Sheet* sheet, QString type);
00049 ~FadeCurve();
00050
00051 enum FadeType {
00052 FadeIn,
00053 FadeOut
00054 };
00055
00056 QDomNode get_state(QDomDocument doc);
00057 int set_state( const QDomNode & node );
00058
00059 void process(audio_sample_t** mixdown, nframes_t nframes, uint channels);
00060
00061 float get_bend_factor() {return m_bendFactor;}
00062 float get_strength_factor() {return m_strenghtFactor;}
00063 int get_mode() const {return m_mode;}
00064 int get_raster() const {return m_raster;}
00065
00066 void set_shape(QString shapeName);
00067 void set_bend_factor(float factor);
00068 void set_strength_factor(float factor);
00069
00070 FadeType get_fade_type() const {return m_type;}
00071 QList<QPointF> get_control_points();
00072
00073 bool is_bypassed() const {return m_bypass;}
00074 bool is_smaller_then(APILinkedListNode* node) {Q_UNUSED(node); return false;}
00075
00076 void set_range(double pos);
00077 void set_mode(int m);
00078
00079 private:
00080 AudioClip* m_clip;
00081 float m_bendFactor;
00082 float m_strenghtFactor;
00083 bool m_bypass;
00084 int m_mode;
00085 int m_raster;
00086 FadeType m_type;
00087 QString m_sType;
00088 QList<QPointF> m_controlPoints;
00089
00090 QPointF get_curve_point(float f);
00091 void init();
00092
00093 public slots:
00094 void solve_node_positions();
00095
00096 Command* toggle_bypass();
00097 Command* set_mode();
00098 Command* reset();
00099 Command* toggle_raster();
00100
00101 signals:
00102 void modeChanged();
00103 void bendValueChanged();
00104 void strengthValueChanged();
00105 void rasterChanged();
00106 void rangeChanged();
00107 };
00108
00109 #endif
00110
00111
00112