1
#include "artseffects.h"
2
#include "stdsynthmodule.h"
3
#include <dynamicrequest.h>
13
class ExtraStereo_impl : virtual public ExtraStereo_skel,
14
virtual public StdSynthModule
17
// StereoEffectGUI mStereoEffectGUI;
19
float intensity() { return _intensity; }
20
void intensity(float newValue) {
21
_intensity = newValue;
22
// cout << " **** INTENSITY = " << newValue << endl;
25
ExtraStereo_impl() : _intensity(2.0)
27
// mStereoEffectGUI = DynamicCast(server.createObject("Arts::ExtraStereo"));
28
// DynamicRequest(mStereoEffectGUI).method("_set_effect").param(*this).invoke();
31
void calculateBlock(unsigned long samples)
35
for(i = 0; i < samples; i++)
37
float average = (inleft[i] + inright[i]) / 2.0;
39
float outleftnew = average + (inleft[i] - average) * _intensity;
40
if(outleftnew > 1.0) outleft[i] = 1.0;
41
else if(outleftnew < -1.0) outleft[i] = -1.0;
42
else outleft[i] = outleftnew;
44
float outrightnew = average + (inright[i] - average) * _intensity;
45
if(outrightnew > 1.0) outright[i] = 1.0;
46
else if(outrightnew < -1.0) outright[i] = -1.0;
47
else outright[i] = outrightnew;
53
class VoiceRemoval_impl : virtual public VoiceRemoval_skel,
54
virtual public StdSynthModule
62
// This is based on the work of Anders Carlsson <anders.carlsson@tordata.se>
63
void calculateBlock(unsigned long samples)
65
for (unsigned i = 0; i < samples; i++)
67
float outleftnew=inleft[i]-inright[i];
68
float outrightnew=inright[i]-inleft[i];
70
if (inleft[i] < -1.0) outleftnew = -1.0;
71
else if (inleft[i] > 1.0) outleftnew = 1.0;
73
if (inright[i] < -1.0) outrightnew = -1.0;
74
else if (inright[i] > 1.0) outrightnew = 1.0;
75
outleft[i] = outleftnew;
76
outright[i] = outrightnew;
82
class RawWriter_impl : virtual public RawWriter_skel,
83
virtual public StdSynthModule
89
std::string file=getenv("HOME");
90
file.append("/arts-write.raw");
91
mFd=::open(file.c_str(), O_RDWR | O_CREAT | O_TRUNC);
97
// This is based on the work of Anders Carlsson <anders.carlsson@tordata.se>
98
void calculateBlock(unsigned long samples)
100
for (unsigned i = 0; i < samples; i++)
102
outleft[i]=inleft[i];
103
outright[i]=inright[i];
105
unsigned char *buffer=new unsigned char[samples*4];
106
convert_stereo_2float_i16le(samples,
107
inleft, inright, buffer);
108
::write(mFd, (const void*)buffer, samples*4);
113
class ExtraStereoGuiFactory_impl : public ExtraStereoGuiFactory_skel
116
Widget createGui(Object object)
118
arts_return_val_if_fail(!object.isNull(), Arts::Widget::null());
120
ExtraStereo e = DynamicCast(object);
121
arts_return_val_if_fail(!e.isNull(), Arts::Widget::null());
131
intense.text("Intensity");
132
intense.color("red");
135
intense.value(e.intensity());
136
intense.parent(panel);
138
connect(intense,"value_changed", e, "intensity");
139
panel._addChild(intense,"intensityWidget");
145
REGISTER_IMPLEMENTATION(ExtraStereo_impl);
146
REGISTER_IMPLEMENTATION(VoiceRemoval_impl);
147
REGISTER_IMPLEMENTATION(RawWriter_impl);
148
REGISTER_IMPLEMENTATION(ExtraStereoGuiFactory_impl);