kwave  18.07.70
Kwave::AmplifyFreePlugin Class Reference

#include <AmplifyFreePlugin.h>

Inheritance diagram for Kwave::AmplifyFreePlugin:
Inheritance graph
Collaboration diagram for Kwave::AmplifyFreePlugin:
Collaboration graph

Public Member Functions

 AmplifyFreePlugin (QObject *parent, const QVariantList &args)
 
virtual ~AmplifyFreePlugin () Q_DECL_OVERRIDE
 
virtual QStringList * setup (QStringList &previous_params) Q_DECL_OVERRIDE
 
virtual void run (QStringList params) Q_DECL_OVERRIDE
 
virtual int start (QStringList &params) Q_DECL_OVERRIDE
 
virtual QString progressText () Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::Plugin
 Plugin (QObject *parent, const QVariantList &args)
 
virtual ~Plugin () Q_DECL_OVERRIDE
 
virtual QString name () const
 
virtual QString description () const
 
virtual bool canClose () const
 
bool isRunning () const
 
bool shouldStop () const
 
virtual void load (QStringList &params)
 
virtual void unload ()
 
virtual int stop ()
 
Kwave::PluginManagermanager () const
 
Kwave::SignalManagersignalManager ()
 
QWidget * parentWidget () const
 
QString signalName ()
 
virtual sample_index_t signalLength ()
 
virtual double signalRate ()
 
virtual const QList< unsigned int > selectedTracks ()
 
virtual sample_index_t selection (QList< unsigned int > *tracks=Q_NULLPTR, sample_index_t *left=Q_NULLPTR, sample_index_t *right=Q_NULLPTR, bool expand_if_empty=false)
 
virtual void selectRange (sample_index_t offset, sample_index_t length)
 
virtual void migrateToActiveContext ()
 
- Public Member Functions inherited from Kwave::Runnable
virtual ~Runnable ()
 

Protected Member Functions

int interpreteParameters (QStringList &params)
 
- Protected Member Functions inherited from Kwave::Plugin
int execute (QStringList &params)
 
void emitCommand (const QString &command)
 
void use ()
 
void setPluginManager (Kwave::PluginManager *new_plugin_manager)
 
virtual void run_wrapper (const QVariant &params) Q_DECL_OVERRIDE
 

Private Attributes

QString m_action_name
 
QStringList m_params
 
Kwave::Curve m_curve
 
QMap< QString, QString > m_cmd_map
 

Additional Inherited Members

- Public Slots inherited from Kwave::Plugin
virtual void setProgressDialogEnabled (bool enable)
 
virtual void updateProgress (qreal progress)
 
virtual void cancel ()
 
virtual void close ()
 
void release ()
 
- Signals inherited from Kwave::Plugin
void sigRunning (Kwave::Plugin *plugin)
 
void sigDone (Kwave::Plugin *plugin)
 
void sigClosed (Kwave::Plugin *p)
 
void sigCommand (const QString &command)
 
void setProgressText (const QString &text)
 

Detailed Description

Todo:
add support for logarithmic scale

Definition at line 34 of file AmplifyFreePlugin.h.

Constructor & Destructor Documentation

◆ AmplifyFreePlugin()

Kwave::AmplifyFreePlugin::AmplifyFreePlugin ( QObject *  parent,
const QVariantList &  args 
)

Constructor

Parameters
parentreference to our plugin manager
argsargument list [unused]

Definition at line 40 of file AmplifyFreePlugin.cpp.

References _.

42  :Kwave::Plugin(parent, args),
44 {
45  m_cmd_map[_("fade in")] = i18n("Fade In");
46  m_cmd_map[_("fade out")] = i18n("Fade Out");
47  m_cmd_map[_("fade intro")] = i18n("Fade Intro");
48  m_cmd_map[_("fade leadout")] = i18n("Fade Leadout");
49 }
#define _(m)
Definition: memcpy.c:66
QMap< QString, QString > m_cmd_map

◆ ~AmplifyFreePlugin()

Kwave::AmplifyFreePlugin::~AmplifyFreePlugin ( )
virtual

Destructor

Definition at line 52 of file AmplifyFreePlugin.cpp.

53 {
54 }

Member Function Documentation

◆ interpreteParameters()

int Kwave::AmplifyFreePlugin::interpreteParameters ( QStringList &  params)
protected

Reads values from the parameter list

Definition at line 57 of file AmplifyFreePlugin.cpp.

References _, Kwave::Curve::fromCommand(), m_action_name, m_cmd_map, m_curve, and m_params.

Referenced by run(), setup(), and start().

58 {
59  // store last parameters
60  m_params = params;
61 
62  m_action_name = _("");
63  if (params.count() < 2) return -1;
64  if (params.count() & 1) return -1; // no. of params must be even
65 
66  // first list entry == name of operation
67  m_action_name = (params[0].length() && m_cmd_map.contains(params[0])) ?
68  m_cmd_map[params[0]] : i18n("Amplify Free");
69 
70  // convert string list into command again...
71  QString cmd = _("curve(");
72  for (int i = 1; i < params.count(); ++i) {
73  cmd += params[i];
74  if ((i + 1) < params.count()) cmd += _(",");
75  }
76  cmd += _(")");
77 
78  // and initialize our curve with it
79  m_curve.fromCommand(cmd);
80 
81  return 0;
82 }
void fromCommand(const QString &command)
Definition: Curve.cpp:55
#define _(m)
Definition: memcpy.c:66
QMap< QString, QString > m_cmd_map
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progressText()

QString Kwave::AmplifyFreePlugin::progressText ( )
virtual

Returns a text for the progress dialog if enabled. (already be localized)

Reimplemented from Kwave::Plugin.

Definition at line 125 of file AmplifyFreePlugin.cpp.

References m_action_name.

126 {
127  return m_action_name;
128 }

◆ run()

void Kwave::AmplifyFreePlugin::run ( QStringList  params)
virtual

Does the fade operation

Parameters
paramslist of strings with parameters

Reimplemented from Kwave::Plugin.

Definition at line 138 of file AmplifyFreePlugin.cpp.

References Kwave::connect(), Kwave::MultiTrackSource< SOURCE, INITIALIZE >::done(), Kwave::CurveStreamAdapter::goOn(), Kwave::MultiTrackSource< SOURCE, INITIALIZE >::goOn(), interpreteParameters(), m_action_name, m_curve, Kwave::Overwrite, Kwave::Plugin::selectedTracks(), Kwave::Plugin::selection(), Kwave::Plugin::shouldStop(), Kwave::Plugin::signalManager(), Kwave::SinglePassForward, Kwave::MultiTrackSink< SINK, INITIALIZE >::tracks(), and Kwave::Plugin::updateProgress().

139 {
140  sample_index_t first, last;
141  QList<unsigned int> track_list;
142 
143  interpreteParameters(params);
144 
145  Kwave::UndoTransactionGuard undo_guard(*this, m_action_name);
146 
147  sample_index_t input_length = selection(&track_list, &first, &last, true);
148  unsigned int tracks = track_list.count();
149 
150  // create all objects
152  signalManager(), selectedTracks(), first, last);
153  Kwave::CurveStreamAdapter curve(m_curve, input_length);
155  first, last);
157 
158  // break if aborted
159  if (!sink.tracks()) return;
160 
161  // connect them
162  bool ok = true;
163  if (ok) ok = Kwave::connect(
164  source, SIGNAL(output(Kwave::SampleArray)),
165  mul, SLOT(input_a(Kwave::SampleArray)));
166  if (ok) ok = Kwave::connect(
167  curve, SIGNAL(output(Kwave::SampleArray)),
168  mul, SLOT(input_b(Kwave::SampleArray)));
169  if (ok) ok = Kwave::connect(
170  mul, SIGNAL(output(Kwave::SampleArray)),
171  sink, SLOT(input(Kwave::SampleArray)));
172  if (!ok) {
173  return;
174  }
175 
176  // connect the progress dialog
177  connect(&sink, SIGNAL(progress(qreal)),
178  this, SLOT(updateProgress(qreal)),
179  Qt::BlockingQueuedConnection);
180 
181  // transport the samples
182  qDebug("AmplifyFreePlugin: filter started...");
183  while (!shouldStop() && !source.done()) {
184  source.goOn();
185  curve.goOn();
186  /* mul.goOn(); */
187  }
188  qDebug("AmplifyFreePlugin: filter done.");
189 }
Kwave::SignalManager & signalManager()
Definition: Plugin.cpp:444
quint64 sample_index_t
Definition: Sample.h:28
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
int interpreteParameters(QStringList &params)
virtual void updateProgress(qreal progress)
Definition: Plugin.cpp:260
virtual const QList< unsigned int > selectedTracks()
Definition: Plugin.cpp:474
bool shouldStop() const
Definition: Plugin.h:120
virtual sample_index_t selection(QList< unsigned int > *tracks=Q_NULLPTR, sample_index_t *left=Q_NULLPTR, sample_index_t *right=Q_NULLPTR, bool expand_if_empty=false)
Definition: Plugin.cpp:480
Here is the call graph for this function:

◆ setup()

QStringList * Kwave::AmplifyFreePlugin::setup ( QStringList &  previous_params)
virtual

Shows a dialog for editing the amplification curve and emits a command for applying the curve if OK has been pressed.

See also
Kwave::Plugin::setup

Reimplemented from Kwave::Plugin.

Definition at line 85 of file AmplifyFreePlugin.cpp.

References _, DBG, Kwave::Plugin::emitCommand(), Kwave::AmplifyFreeDialog::getCommand(), interpreteParameters(), Kwave::Parser::isDone(), m_params, Kwave::Parser::nextParam(), Kwave::Plugin::parentWidget(), and Kwave::AmplifyFreeDialog::setParams().

86 {
87  // try to interprete the previous parameters
88  interpreteParameters(previous_params);
89 
90  // create the setup dialog
91  Kwave::AmplifyFreeDialog *dialog =
93  Q_ASSERT(dialog);
94  if (!dialog) return Q_NULLPTR;
95 
96  // remove the first list entry (action name), the rest is for the dialog
97  if ((m_params.count() > 2) && !(m_params.count() & 1)) {
98  QStringList curve_params = m_params;
99  curve_params.takeFirst(); // ignore action name
100  dialog->setParams(curve_params);
101  }
102 
103  QStringList *list = new QStringList();
104  Q_ASSERT(list);
105  if (list && dialog->exec()) {
106  // user has pressed "OK"
107  *list << _("amplify free");
108  QString cmd = dialog->getCommand();
109  Kwave::Parser p(cmd);
110  while (!p.isDone()) *list << p.nextParam();
111 
112  qDebug("setup -> emitCommand('%s')", DBG(cmd));
113  emitCommand(cmd);
114  } else {
115  // user pressed "Cancel"
116  if (list) delete list;
117  list = Q_NULLPTR;
118  }
119 
120  if (dialog) delete dialog;
121  return list;
122 }
void emitCommand(const QString &command)
Definition: Plugin.cpp:510
QWidget * parentWidget() const
Definition: Plugin.cpp:450
int interpreteParameters(QStringList &params)
#define _(m)
Definition: memcpy.c:66
#define DBG(qs)
Definition: String.h:55
void setParams(QStringList &params)
Here is the call graph for this function:

◆ start()

int Kwave::AmplifyFreePlugin::start ( QStringList &  params)
virtual
See also
Kwave::Plugin::start(), overloaded to get the action name from the parameters

Reimplemented from Kwave::Plugin.

Definition at line 131 of file AmplifyFreePlugin.cpp.

References interpreteParameters(), and Kwave::Plugin::start().

132 {
133  interpreteParameters(params);
134  return Kwave::Plugin::start(params);
135 }
int interpreteParameters(QStringList &params)
virtual int start(QStringList &params)
Definition: Plugin.cpp:142
Here is the call graph for this function:

Member Data Documentation

◆ m_action_name

QString Kwave::AmplifyFreePlugin::m_action_name
private

name of the action (untranslated)

Definition at line 83 of file AmplifyFreePlugin.h.

Referenced by interpreteParameters(), progressText(), and run().

◆ m_cmd_map

QMap<QString, QString> Kwave::AmplifyFreePlugin::m_cmd_map
private

map for command name <-> description

Definition at line 92 of file AmplifyFreePlugin.h.

Referenced by interpreteParameters().

◆ m_curve

Kwave::Curve Kwave::AmplifyFreePlugin::m_curve
private

curve used for interpolation

Definition at line 89 of file AmplifyFreePlugin.h.

Referenced by interpreteParameters(), and run().

◆ m_params

QStringList Kwave::AmplifyFreePlugin::m_params
private

List of parameters

Definition at line 86 of file AmplifyFreePlugin.h.

Referenced by interpreteParameters(), and setup().


The documentation for this class was generated from the following files: