sintonia/library/ecasound-2.7.2/libecasound/audiofx_misc.h

109 lines
3.3 KiB
C++

#ifndef INCLUDED_AUDIOFX_MISC_H
#define INCLUDED_AUDIOFX_MISC_H
#include <vector>
#include "sample-specs.h"
#include "samplebuffer_iterators.h"
#include "audio-stamp.h"
#include "audiofx.h"
/**
* Adjusts DC-offset.
* @author Kai Vehmanen
*/
class EFFECT_DCFIX : public EFFECT_BASE {
private:
std::vector<parameter_t> deltafixes_rep;
SAMPLE_ITERATOR_CHANNEL i_rep;
public:
virtual std::string name(void) const { return("DC-Fix"); }
virtual std::string description(void) const { return("Adjusts DC-offset."); }
virtual bool variable_params(void) const { return true; }
virtual std::string parameter_names(void) const;
virtual void parameter_description(int param, struct PARAM_DESCRIPTION *pd) const;
virtual void set_parameter(int param, parameter_t value);
virtual parameter_t get_parameter(int param) const;
virtual void init(SAMPLE_BUFFER *insample);
virtual void process(void);
EFFECT_DCFIX* clone(void) const { return new EFFECT_DCFIX(*this); }
EFFECT_DCFIX* new_expr(void) const { return new EFFECT_DCFIX(); }
EFFECT_DCFIX (const EFFECT_DCFIX& x);
EFFECT_DCFIX (void);
};
/**
* Modify audio pitch by altering its length
* @author Kai Vehmanen
*/
class EFFECT_PITCH_SHIFT : public EFFECT_BASE {
private:
parameter_t pmod_rep;
long int target_rate_rep;
SAMPLE_BUFFER* sbuf_repp;
public:
static const int resample_low_limit;
virtual std::string name(void) const { return("Pitch shifter"); }
virtual std::string description(void) const { return("Modify audio pitch by altering its length."); }
virtual std::string parameter_names(void) const { return("change-%"); }
virtual void parameter_description(int param, struct PARAM_DESCRIPTION *pd) const;
virtual void set_parameter(int param, parameter_t value);
virtual parameter_t get_parameter(int param) const;
virtual void init(SAMPLE_BUFFER *insample);
virtual void release(void);
virtual void process(void);
virtual long int max_output_samples(long int i_samples) const;
EFFECT_PITCH_SHIFT(void) : pmod_rep(100.0), target_rate_rep(0), sbuf_repp(0) { }
EFFECT_PITCH_SHIFT (const EFFECT_PITCH_SHIFT& x);
EFFECT_PITCH_SHIFT* clone(void) const { return new EFFECT_PITCH_SHIFT(*this); }
EFFECT_PITCH_SHIFT* new_expr(void) const { return new EFFECT_PITCH_SHIFT(); }
};
/**
* Store an audio stamp object. Otherwise just let's the audio go through.
* @author Kai Vehmanen
*/
class EFFECT_AUDIO_STAMP : public EFFECT_BASE,
public AUDIO_STAMP {
SAMPLE_BUFFER* sbuf_repp;
public:
virtual std::string name(void) const { return("Audio stamp"); }
virtual std::string description(void) const { return("Takes a snapshot of passing audio buffers."); }
virtual std::string parameter_names(void) const { return("stamp-id"); }
virtual void parameter_description(int param, struct PARAM_DESCRIPTION *pd) const;
virtual void set_parameter(int param, parameter_t value);
virtual parameter_t get_parameter(int param) const;
virtual void init(SAMPLE_BUFFER *insample);
virtual void release(void);
virtual void process(void);
EFFECT_AUDIO_STAMP(void);
EFFECT_AUDIO_STAMP(const EFFECT_AUDIO_STAMP& arg);
EFFECT_AUDIO_STAMP* clone(void) const { return new EFFECT_AUDIO_STAMP(*this); }
EFFECT_AUDIO_STAMP* new_expr(void) const { return new EFFECT_AUDIO_STAMP(); }
};
#endif