~ubuntu-branches/ubuntu/hoary/kdemultimedia/hoary

« back to all changes in this revision

Viewing changes to noatun/noatun/modules/artseffects/extrastereo_impl.cc

  • Committer: Bazaar Package Importer
  • Author(s): Martin Schulze
  • Date: 2003-01-22 15:00:51 UTC
  • Revision ID: james.westby@ubuntu.com-20030122150051-uihwkdoxf15mi1tn
Tags: upstream-2.2.2
ImportĀ upstreamĀ versionĀ 2.2.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "artseffects.h"
 
2
#include "stdsynthmodule.h"
 
3
#include <dynamicrequest.h>
 
4
#include <sys/types.h>
 
5
#include <sys/stat.h>
 
6
#include <fcntl.h>
 
7
#include <convert.h>
 
8
#include "debug.h"
 
9
#include <connect.h>
 
10
 
 
11
using namespace Arts;
 
12
 
 
13
class ExtraStereo_impl : virtual public ExtraStereo_skel,
 
14
                                                 virtual public StdSynthModule
 
15
{
 
16
        float _intensity;
 
17
//      StereoEffectGUI mStereoEffectGUI;
 
18
public:
 
19
        float intensity() { return _intensity; }
 
20
        void intensity(float newValue) {
 
21
                _intensity = newValue;
 
22
//              cout << " **** INTENSITY = " << newValue << endl;
 
23
        }
 
24
 
 
25
        ExtraStereo_impl() : _intensity(2.0)
 
26
        {
 
27
//              mStereoEffectGUI = DynamicCast(server.createObject("Arts::ExtraStereo"));
 
28
//              DynamicRequest(mStereoEffectGUI).method("_set_effect").param(*this).invoke();
 
29
 
 
30
        }
 
31
        void calculateBlock(unsigned long samples)
 
32
        {
 
33
                unsigned long i;
 
34
 
 
35
                for(i = 0; i < samples; i++)
 
36
                {
 
37
                        float average = (inleft[i] + inright[i]) / 2.0;
 
38
 
 
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;
 
43
 
 
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;
 
48
                }
 
49
        }
 
50
};
 
51
 
 
52
 
 
53
class VoiceRemoval_impl : virtual public VoiceRemoval_skel,
 
54
                                                 virtual public StdSynthModule
 
55
{
 
56
public:
 
57
 
 
58
        VoiceRemoval_impl()
 
59
        {
 
60
 
 
61
        }
 
62
        // This is based on the work of Anders Carlsson <anders.carlsson@tordata.se>
 
63
        void calculateBlock(unsigned long samples)
 
64
        {
 
65
                for (unsigned i = 0; i < samples; i++)
 
66
                {
 
67
                        float outleftnew=inleft[i]-inright[i];
 
68
                        float outrightnew=inright[i]-inleft[i];
 
69
 
 
70
                        if (inleft[i] < -1.0) outleftnew = -1.0;
 
71
                        else if (inleft[i] > 1.0) outleftnew = 1.0;
 
72
 
 
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;
 
77
                }
 
78
                
 
79
        }
 
80
};
 
81
 
 
82
class RawWriter_impl : virtual public RawWriter_skel,
 
83
                          virtual public StdSynthModule
 
84
{
 
85
        int mFd;
 
86
public:
 
87
        RawWriter_impl()
 
88
        {
 
89
                std::string file=getenv("HOME");
 
90
                file.append("/arts-write.raw");
 
91
                mFd=::open(file.c_str(), O_RDWR | O_CREAT | O_TRUNC);
 
92
        }
 
93
        ~RawWriter_impl()
 
94
        {
 
95
                ::close(mFd);
 
96
        }
 
97
        // This is based on the work of Anders Carlsson <anders.carlsson@tordata.se>
 
98
        void calculateBlock(unsigned long samples)
 
99
        {
 
100
                for (unsigned i = 0; i < samples; i++)
 
101
                {
 
102
                        outleft[i]=inleft[i];
 
103
                        outright[i]=inright[i];
 
104
                }
 
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);
 
109
                delete [] buffer;
 
110
        }
 
111
};
 
112
 
 
113
class ExtraStereoGuiFactory_impl : public ExtraStereoGuiFactory_skel
 
114
{
 
115
public:
 
116
        Widget createGui(Object object)
 
117
        {
 
118
                arts_return_val_if_fail(!object.isNull(), Arts::Widget::null());
 
119
 
 
120
                ExtraStereo e = DynamicCast(object);
 
121
                arts_return_val_if_fail(!e.isNull(), Arts::Widget::null());
 
122
 
 
123
                Widget panel;
 
124
                panel.width(80);
 
125
                panel.height(80);
 
126
                panel.show();
 
127
 
 
128
                Poti intense;
 
129
                intense.x(10);
 
130
                intense.y(10);
 
131
                intense.text("Intensity");
 
132
                intense.color("red");
 
133
                intense.min(0);
 
134
                intense.max(5);
 
135
                intense.value(e.intensity());
 
136
                intense.parent(panel);
 
137
                intense.show();
 
138
                connect(intense,"value_changed", e, "intensity");
 
139
                panel._addChild(intense,"intensityWidget");
 
140
                return panel;
 
141
        }
 
142
};
 
143
 
 
144
 
 
145
REGISTER_IMPLEMENTATION(ExtraStereo_impl);
 
146
REGISTER_IMPLEMENTATION(VoiceRemoval_impl);
 
147
REGISTER_IMPLEMENTATION(RawWriter_impl);
 
148
REGISTER_IMPLEMENTATION(ExtraStereoGuiFactory_impl);
 
149
 
 
150