beeps 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.doc/ext/beeps/beeps.cpp +7 -0
- data/.doc/ext/beeps/high_pass.cpp +63 -0
- data/.doc/ext/beeps/low_pass.cpp +63 -0
- data/.doc/ext/beeps/native.cpp +8 -0
- data/.doc/ext/beeps/oscillator.cpp +87 -10
- data/.doc/ext/beeps/processor.cpp +14 -1
- data/.doc/ext/beeps/reverb.cpp +99 -0
- data/.doc/ext/beeps/signals.cpp +128 -0
- data/ChangeLog.md +24 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/beeps.gemspec +2 -2
- data/ext/beeps/beeps.cpp +8 -0
- data/ext/beeps/high_pass.cpp +66 -0
- data/ext/beeps/low_pass.cpp +66 -0
- data/ext/beeps/native.cpp +8 -0
- data/ext/beeps/oscillator.cpp +95 -12
- data/ext/beeps/processor.cpp +15 -1
- data/ext/beeps/reverb.cpp +106 -0
- data/ext/beeps/signals.cpp +136 -0
- data/include/beeps/beeps.h +2 -2
- data/include/beeps/defs.h +3 -0
- data/include/beeps/filter.h +118 -17
- data/include/beeps/generator.h +50 -17
- data/include/beeps/processor.h +23 -6
- data/include/beeps/ruby/filter.h +33 -0
- data/include/beeps/ruby/signals.h +40 -0
- data/include/beeps/signals.h +1 -1
- data/lib/beeps/processor.rb +46 -1
- data/lib/beeps/signals.rb +19 -0
- data/lib/beeps.rb +1 -0
- data/src/analyser.cpp +34 -37
- data/src/beeps.cpp +7 -6
- data/src/envelope.cpp +60 -46
- data/src/file_in.cpp +6 -6
- data/src/gain.cpp +5 -5
- data/src/high_pass.cpp +57 -0
- data/src/low_pass.cpp +57 -0
- data/src/mic_in.cpp +16 -14
- data/src/mixer.cpp +38 -20
- data/src/oscillator.cpp +260 -168
- data/src/pitch_shift.cpp +6 -6
- data/src/processor.cpp +118 -11
- data/src/processor.h +8 -0
- data/src/reverb.cpp +124 -0
- data/src/sequencer.cpp +18 -14
- data/src/signals.cpp +264 -106
- data/src/signals.h +28 -89
- data/src/sound.cpp +28 -20
- data/src/time_stretch.cpp +6 -6
- data/src/win32/signals.cpp +8 -7
- data/src/x_pass.h +51 -0
- data/test/helper.rb +14 -0
- data/test/test_analyser.rb +26 -0
- data/test/test_envelope.rb +55 -0
- data/test/test_file_in.rb +22 -1
- data/test/test_gain.rb +28 -0
- data/test/test_high_pass.rb +41 -0
- data/test/test_low_pass.rb +41 -0
- data/test/test_mixer.rb +63 -0
- data/test/test_oscillator.rb +58 -0
- data/test/test_pitch_shift.rb +32 -0
- data/test/test_processor.rb +7 -0
- data/test/test_signals.rb +60 -0
- data/test/test_time_stretch.rb +36 -0
- metadata +48 -10
data/include/beeps/filter.h
CHANGED
@@ -27,13 +27,15 @@ namespace Beeps
|
|
27
27
|
|
28
28
|
virtual float gain () const;
|
29
29
|
|
30
|
-
virtual void filter (
|
31
|
-
Context* context, Signals* signals, uint* offset) override;
|
32
|
-
|
33
30
|
struct Data;
|
34
31
|
|
35
32
|
Xot::PImpl<Data> self;
|
36
33
|
|
34
|
+
protected:
|
35
|
+
|
36
|
+
virtual void filter (
|
37
|
+
Context* context, Signals* signals, uint* offset) override;
|
38
|
+
|
37
39
|
};// Gain
|
38
40
|
|
39
41
|
|
@@ -66,15 +68,17 @@ namespace Beeps
|
|
66
68
|
|
67
69
|
virtual const_iterator end () const;
|
68
70
|
|
69
|
-
virtual void filter (
|
70
|
-
Context* context, Signals* signals, uint* offset) override;
|
71
|
-
|
72
71
|
virtual operator bool () const override;
|
73
72
|
|
74
73
|
struct Data;
|
75
74
|
|
76
75
|
Xot::PImpl<Data> self;
|
77
76
|
|
77
|
+
protected:
|
78
|
+
|
79
|
+
virtual void filter (
|
80
|
+
Context* context, Signals* signals, uint* offset) override;
|
81
|
+
|
78
82
|
};// Mixer
|
79
83
|
|
80
84
|
|
@@ -109,16 +113,107 @@ namespace Beeps
|
|
109
113
|
|
110
114
|
virtual float release_time () const;
|
111
115
|
|
116
|
+
virtual operator bool () const override;
|
117
|
+
|
118
|
+
struct Data;
|
119
|
+
|
120
|
+
Xot::PImpl<Data> self;
|
121
|
+
|
122
|
+
protected:
|
123
|
+
|
112
124
|
virtual void filter (
|
113
125
|
Context* context, Signals* signals, uint* offset) override;
|
114
126
|
|
115
|
-
|
127
|
+
};// Envelope
|
128
|
+
|
129
|
+
|
130
|
+
class LowPass : public Filter
|
131
|
+
{
|
132
|
+
|
133
|
+
typedef Filter Super;
|
134
|
+
|
135
|
+
public:
|
136
|
+
|
137
|
+
LowPass (Processor* input = NULL);
|
138
|
+
|
139
|
+
virtual ~LowPass ();
|
140
|
+
|
141
|
+
virtual void set_cutoff_frequency (float frequency);
|
142
|
+
|
143
|
+
virtual float cutoff_frequency () const;
|
116
144
|
|
117
145
|
struct Data;
|
118
146
|
|
119
147
|
Xot::PImpl<Data> self;
|
120
148
|
|
121
|
-
|
149
|
+
protected:
|
150
|
+
|
151
|
+
virtual void filter (
|
152
|
+
Context* context, Signals* signals, uint* offset) override;
|
153
|
+
|
154
|
+
};// LowPass
|
155
|
+
|
156
|
+
|
157
|
+
class HighPass : public Filter
|
158
|
+
{
|
159
|
+
|
160
|
+
typedef Filter Super;
|
161
|
+
|
162
|
+
public:
|
163
|
+
|
164
|
+
HighPass (Processor* input = NULL);
|
165
|
+
|
166
|
+
virtual ~HighPass ();
|
167
|
+
|
168
|
+
virtual void set_cutoff_frequency (float frequency);
|
169
|
+
|
170
|
+
virtual float cutoff_frequency () const;
|
171
|
+
|
172
|
+
struct Data;
|
173
|
+
|
174
|
+
Xot::PImpl<Data> self;
|
175
|
+
|
176
|
+
protected:
|
177
|
+
|
178
|
+
virtual void filter (
|
179
|
+
Context* context, Signals* signals, uint* offset) override;
|
180
|
+
|
181
|
+
};// HighPass
|
182
|
+
|
183
|
+
|
184
|
+
class Reverb : public Filter
|
185
|
+
{
|
186
|
+
|
187
|
+
typedef Filter Super;
|
188
|
+
|
189
|
+
public:
|
190
|
+
|
191
|
+
Reverb (Processor* input = NULL);
|
192
|
+
|
193
|
+
virtual ~Reverb ();
|
194
|
+
|
195
|
+
virtual void set_mix (float mix);
|
196
|
+
|
197
|
+
virtual float mix () const;
|
198
|
+
|
199
|
+
virtual void set_room_size (float frequency);
|
200
|
+
|
201
|
+
virtual float room_size () const;
|
202
|
+
|
203
|
+
virtual void set_damping (float damping);
|
204
|
+
|
205
|
+
virtual float damping () const;
|
206
|
+
|
207
|
+
struct Data;
|
208
|
+
|
209
|
+
Xot::PImpl<Data> self;
|
210
|
+
|
211
|
+
protected:
|
212
|
+
|
213
|
+
virtual void filter (
|
214
|
+
Context* context, Signals* signals, uint* offset) override;
|
215
|
+
|
216
|
+
};// Reverb
|
122
217
|
|
123
218
|
|
124
219
|
class TimeStretch : public Filter
|
@@ -138,15 +233,17 @@ namespace Beeps
|
|
138
233
|
|
139
234
|
virtual float scale () const;
|
140
235
|
|
141
|
-
virtual void filter (
|
142
|
-
Context* context, Signals* signals, uint* offset) override;
|
143
|
-
|
144
236
|
virtual operator bool () const override;
|
145
237
|
|
146
238
|
struct Data;
|
147
239
|
|
148
240
|
Xot::PImpl<Data> self;
|
149
241
|
|
242
|
+
protected:
|
243
|
+
|
244
|
+
virtual void filter (
|
245
|
+
Context* context, Signals* signals, uint* offset) override;
|
246
|
+
|
150
247
|
};// TimeStretch
|
151
248
|
|
152
249
|
|
@@ -167,15 +264,17 @@ namespace Beeps
|
|
167
264
|
|
168
265
|
virtual float shift () const;
|
169
266
|
|
170
|
-
virtual void filter (
|
171
|
-
Context* context, Signals* signals, uint* offset) override;
|
172
|
-
|
173
267
|
virtual operator bool () const override;
|
174
268
|
|
175
269
|
struct Data;
|
176
270
|
|
177
271
|
Xot::PImpl<Data> self;
|
178
272
|
|
273
|
+
protected:
|
274
|
+
|
275
|
+
virtual void filter (
|
276
|
+
Context* context, Signals* signals, uint* offset) override;
|
277
|
+
|
179
278
|
};// PitchShift
|
180
279
|
|
181
280
|
|
@@ -202,15 +301,17 @@ namespace Beeps
|
|
202
301
|
|
203
302
|
virtual const Spectrum& spectrum () const;
|
204
303
|
|
205
|
-
virtual void filter (
|
206
|
-
Context* context, Signals* signals, uint* offset) override;
|
207
|
-
|
208
304
|
virtual operator bool () const override;
|
209
305
|
|
210
306
|
struct Data;
|
211
307
|
|
212
308
|
Xot::PImpl<Data> self;
|
213
309
|
|
310
|
+
protected:
|
311
|
+
|
312
|
+
virtual void filter (
|
313
|
+
Context* context, Signals* signals, uint* offset) override;
|
314
|
+
|
214
315
|
};// Analyser
|
215
316
|
|
216
317
|
|
data/include/beeps/generator.h
CHANGED
@@ -25,7 +25,7 @@ namespace Beeps
|
|
25
25
|
|
26
26
|
Oscillator (Type type = SINE);
|
27
27
|
|
28
|
-
Oscillator (
|
28
|
+
Oscillator (const Sample* samples, size_t size);
|
29
29
|
|
30
30
|
virtual ~Oscillator ();
|
31
31
|
|
@@ -35,22 +35,41 @@ namespace Beeps
|
|
35
35
|
|
36
36
|
virtual Type type () const;
|
37
37
|
|
38
|
-
virtual void
|
38
|
+
virtual void set_samples (const Sample* samples, size_t size);
|
39
39
|
|
40
|
-
virtual const
|
40
|
+
virtual const Sample* samples () const;
|
41
41
|
|
42
|
-
virtual size_t
|
42
|
+
virtual size_t nsamples () const;
|
43
43
|
|
44
|
-
virtual void set_frequency (float
|
44
|
+
virtual void set_frequency (float frequency);
|
45
|
+
|
46
|
+
virtual void set_frequency (Processor* frequency);
|
45
47
|
|
46
48
|
virtual float frequency () const;
|
47
49
|
|
48
|
-
virtual void set_phase (float
|
50
|
+
virtual void set_phase (float phase);
|
51
|
+
|
52
|
+
virtual void set_phase (Processor* phase);
|
49
53
|
|
50
54
|
virtual float phase () const;
|
51
55
|
|
52
|
-
virtual void
|
53
|
-
|
56
|
+
virtual void set_gain (float gain);
|
57
|
+
|
58
|
+
virtual void set_gain (Processor* gain);
|
59
|
+
|
60
|
+
virtual float gain () const;
|
61
|
+
|
62
|
+
virtual void set_offset (float offset);
|
63
|
+
|
64
|
+
virtual void set_offset (Processor* offset);
|
65
|
+
|
66
|
+
virtual float offset () const;
|
67
|
+
|
68
|
+
virtual void set_duty (float duty);
|
69
|
+
|
70
|
+
virtual void set_duty (Processor* duty);
|
71
|
+
|
72
|
+
virtual float duty () const;
|
54
73
|
|
55
74
|
virtual operator bool () const override;
|
56
75
|
|
@@ -58,6 +77,14 @@ namespace Beeps
|
|
58
77
|
|
59
78
|
Xot::PImpl<Data> self;
|
60
79
|
|
80
|
+
protected:
|
81
|
+
|
82
|
+
virtual void generate (
|
83
|
+
Context* context, Signals* signals, uint* offset) override;
|
84
|
+
|
85
|
+
virtual int max_segment_size_for_process (
|
86
|
+
double sample_rate, uint nsamples) const override;
|
87
|
+
|
61
88
|
};// Oscillator
|
62
89
|
|
63
90
|
|
@@ -80,15 +107,17 @@ namespace Beeps
|
|
80
107
|
|
81
108
|
virtual float time_scale () const;
|
82
109
|
|
83
|
-
virtual void generate (
|
84
|
-
Context* context, Signals* signals, uint* offset) override;
|
85
|
-
|
86
110
|
virtual operator bool () const override;
|
87
111
|
|
88
112
|
struct Data;
|
89
113
|
|
90
114
|
Xot::PImpl<Data> self;
|
91
115
|
|
116
|
+
protected:
|
117
|
+
|
118
|
+
virtual void generate (
|
119
|
+
Context* context, Signals* signals, uint* offset) override;
|
120
|
+
|
92
121
|
};// Sequencer
|
93
122
|
|
94
123
|
|
@@ -117,15 +146,17 @@ namespace Beeps
|
|
117
146
|
|
118
147
|
virtual float seconds () const;
|
119
148
|
|
120
|
-
virtual void generate (
|
121
|
-
Context* context, Signals* signals, uint* offset) override;
|
122
|
-
|
123
149
|
virtual operator bool () const override;
|
124
150
|
|
125
151
|
struct Data;
|
126
152
|
|
127
153
|
Xot::PImpl<Data> self;
|
128
154
|
|
155
|
+
protected:
|
156
|
+
|
157
|
+
virtual void generate (
|
158
|
+
Context* context, Signals* signals, uint* offset) override;
|
159
|
+
|
129
160
|
};// FileIn
|
130
161
|
|
131
162
|
|
@@ -148,15 +179,17 @@ namespace Beeps
|
|
148
179
|
|
149
180
|
virtual uint nchannels () const;
|
150
181
|
|
151
|
-
virtual void generate (
|
152
|
-
Context* context, Signals* signals, uint* offset) override;
|
153
|
-
|
154
182
|
virtual operator bool () const override;
|
155
183
|
|
156
184
|
struct Data;
|
157
185
|
|
158
186
|
Xot::PImpl<Data> self;
|
159
187
|
|
188
|
+
protected:
|
189
|
+
|
190
|
+
virtual void generate (
|
191
|
+
Context* context, Signals* signals, uint* offset) override;
|
192
|
+
|
160
193
|
};// MicIn
|
161
194
|
|
162
195
|
|
data/include/beeps/processor.h
CHANGED
@@ -4,18 +4,17 @@
|
|
4
4
|
#define __BEEPS_PROCESSOR_H__
|
5
5
|
|
6
6
|
|
7
|
+
#include <map>
|
7
8
|
#include <xot/ref.h>
|
8
9
|
#include <xot/pimpl.h>
|
9
10
|
#include <beeps/defs.h>
|
11
|
+
#include <beeps/signals.h>
|
10
12
|
|
11
13
|
|
12
14
|
namespace Beeps
|
13
15
|
{
|
14
16
|
|
15
17
|
|
16
|
-
class Signals;
|
17
|
-
|
18
|
-
|
19
18
|
class Processor : public Xot::RefCountable<>
|
20
19
|
{
|
21
20
|
|
@@ -25,7 +24,9 @@ namespace Beeps
|
|
25
24
|
|
26
25
|
class Context {};
|
27
26
|
|
28
|
-
typedef Xot::Ref<This>
|
27
|
+
typedef Xot::Ref<This> Ref;
|
28
|
+
|
29
|
+
typedef std::map<uint, Ref> Map;
|
29
30
|
|
30
31
|
virtual ~Processor ();
|
31
32
|
|
@@ -51,11 +52,22 @@ namespace Beeps
|
|
51
52
|
|
52
53
|
Processor (bool generator = false);
|
53
54
|
|
54
|
-
virtual void process
|
55
|
+
virtual void process (Context* context, Signals* signals, uint* offset) final;
|
55
56
|
|
56
57
|
virtual void generate (Context* context, Signals* signals, uint* offset);
|
57
58
|
|
58
|
-
virtual void filter
|
59
|
+
virtual void filter (Context* context, Signals* signals, uint* offset);
|
60
|
+
|
61
|
+
virtual int max_segment_size_for_process (
|
62
|
+
double sample_rate, uint nsamples) const;
|
63
|
+
|
64
|
+
virtual uint get_segment_size (double sample_rate, uint nsamples) const;
|
65
|
+
|
66
|
+
virtual void set_sub_input (uint index, Processor* input);
|
67
|
+
|
68
|
+
virtual Processor* sub_input (uint index) const;
|
69
|
+
|
70
|
+
virtual void clear_sub_input_unless_processing (uint index);
|
59
71
|
|
60
72
|
virtual void set_updated ();
|
61
73
|
|
@@ -100,6 +112,11 @@ namespace Beeps
|
|
100
112
|
};// Filter
|
101
113
|
|
102
114
|
|
115
|
+
Signals get_signals (
|
116
|
+
Processor* processor, float seconds,
|
117
|
+
uint nchannels = 1, double sample_rate = 0);
|
118
|
+
|
119
|
+
|
103
120
|
}// Beeps
|
104
121
|
|
105
122
|
|
data/include/beeps/ruby/filter.h
CHANGED
@@ -15,6 +15,12 @@ RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Mixer)
|
|
15
15
|
|
16
16
|
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Envelope)
|
17
17
|
|
18
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps:: LowPass)
|
19
|
+
|
20
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::HighPass)
|
21
|
+
|
22
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Reverb)
|
23
|
+
|
18
24
|
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::TimeStretch)
|
19
25
|
|
20
26
|
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::PitchShift)
|
@@ -35,6 +41,15 @@ namespace Beeps
|
|
35
41
|
BEEPS_EXPORT Rucy::Class envelope_class ();
|
36
42
|
// class Beeps::Envelope
|
37
43
|
|
44
|
+
BEEPS_EXPORT Rucy::Class low_pass_class ();
|
45
|
+
// class Beeps:: LowPass
|
46
|
+
|
47
|
+
BEEPS_EXPORT Rucy::Class high_pass_class ();
|
48
|
+
// class Beeps::HighPass
|
49
|
+
|
50
|
+
BEEPS_EXPORT Rucy::Class reverb_class ();
|
51
|
+
// class Beeps::Reverb
|
52
|
+
|
38
53
|
BEEPS_EXPORT Rucy::Class time_stretch_class ();
|
39
54
|
// class Beeps::TimeStretch
|
40
55
|
|
@@ -70,6 +85,24 @@ namespace Rucy
|
|
70
85
|
return Beeps::envelope_class();
|
71
86
|
}
|
72
87
|
|
88
|
+
template <> inline Class
|
89
|
+
get_ruby_class<Beeps::LowPass> ()
|
90
|
+
{
|
91
|
+
return Beeps::low_pass_class();
|
92
|
+
}
|
93
|
+
|
94
|
+
template <> inline Class
|
95
|
+
get_ruby_class<Beeps::HighPass> ()
|
96
|
+
{
|
97
|
+
return Beeps::high_pass_class();
|
98
|
+
}
|
99
|
+
|
100
|
+
template <> inline Class
|
101
|
+
get_ruby_class<Beeps::Reverb> ()
|
102
|
+
{
|
103
|
+
return Beeps::reverb_class();
|
104
|
+
}
|
105
|
+
|
73
106
|
template <> inline Class
|
74
107
|
get_ruby_class<Beeps::TimeStretch> ()
|
75
108
|
{
|
@@ -0,0 +1,40 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_RUBY_SIGNALS_H__
|
4
|
+
#define __BEEPS_RUBY_SIGNALS_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/class.h>
|
8
|
+
#include <rucy/extension.h>
|
9
|
+
#include <beeps/signals.h>
|
10
|
+
|
11
|
+
|
12
|
+
RUCY_DECLARE_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Signals)
|
13
|
+
|
14
|
+
|
15
|
+
namespace Beeps
|
16
|
+
{
|
17
|
+
|
18
|
+
|
19
|
+
BEEPS_EXPORT Rucy::Class signals_class ();
|
20
|
+
// class Beeps::Signals
|
21
|
+
|
22
|
+
|
23
|
+
}// Beeps
|
24
|
+
|
25
|
+
|
26
|
+
namespace Rucy
|
27
|
+
{
|
28
|
+
|
29
|
+
|
30
|
+
template <> inline Class
|
31
|
+
get_ruby_class<Beeps::Signals> ()
|
32
|
+
{
|
33
|
+
return Beeps::signals_class();
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
}// Rucy
|
38
|
+
|
39
|
+
|
40
|
+
#endif//EOH
|
data/include/beeps/signals.h
CHANGED
data/lib/beeps/processor.rb
CHANGED
@@ -38,6 +38,10 @@ module Beeps
|
|
38
38
|
# self
|
39
39
|
#end
|
40
40
|
|
41
|
+
def self.get_signals(processor, seconds: 1, nchannels: 1, sample_rate: 0)
|
42
|
+
get_signals! processor, seconds, nchannels, sample_rate
|
43
|
+
end
|
44
|
+
|
41
45
|
end# Processor
|
42
46
|
|
43
47
|
|
@@ -64,7 +68,7 @@ module Beeps
|
|
64
68
|
end
|
65
69
|
end
|
66
70
|
|
67
|
-
universal_accessor :type, :frequency, :phase
|
71
|
+
universal_accessor :type, :frequency, :phase, :gain, :offset, :duty
|
68
72
|
|
69
73
|
alias freq= frequency=
|
70
74
|
alias freq frequency
|
@@ -119,6 +123,8 @@ module Beeps
|
|
119
123
|
|
120
124
|
alias each each_input
|
121
125
|
|
126
|
+
alias inputs to_a
|
127
|
+
|
122
128
|
end# Mixer
|
123
129
|
|
124
130
|
|
@@ -158,6 +164,45 @@ module Beeps
|
|
158
164
|
end# Envelope
|
159
165
|
|
160
166
|
|
167
|
+
class LowPass
|
168
|
+
|
169
|
+
def initialize(cutoff = nil, **kwargs, &block)
|
170
|
+
super(**kwargs, &block)
|
171
|
+
|
172
|
+
self.cutoff = cutoff if cutoff
|
173
|
+
end
|
174
|
+
|
175
|
+
universal_accessor :cutoff_frequency
|
176
|
+
|
177
|
+
alias cutoff= cutoff_frequency=
|
178
|
+
alias cutoff cutoff_frequency
|
179
|
+
|
180
|
+
end# LowPass
|
181
|
+
|
182
|
+
|
183
|
+
class HighPass
|
184
|
+
|
185
|
+
def initialize(cutoff = nil, **kwargs, &block)
|
186
|
+
super(**kwargs, &block)
|
187
|
+
|
188
|
+
self.cutoff = cutoff if cutoff
|
189
|
+
end
|
190
|
+
|
191
|
+
universal_accessor :cutoff_frequency
|
192
|
+
|
193
|
+
alias cutoff= cutoff_frequency=
|
194
|
+
alias cutoff cutoff_frequency
|
195
|
+
|
196
|
+
end# HighPass
|
197
|
+
|
198
|
+
|
199
|
+
class Reverb
|
200
|
+
|
201
|
+
universal_accessor :mix, :room_size, :damping
|
202
|
+
|
203
|
+
end# Reverb
|
204
|
+
|
205
|
+
|
161
206
|
class TimeStretch
|
162
207
|
|
163
208
|
universal_accessor :scale
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'beeps/ext'
|
2
|
+
|
3
|
+
|
4
|
+
module Beeps
|
5
|
+
|
6
|
+
|
7
|
+
class Signals
|
8
|
+
|
9
|
+
include Enumerable
|
10
|
+
|
11
|
+
def each(channel: nil, &block)
|
12
|
+
return enum_for(:each, channel: channel) unless block
|
13
|
+
each! channel, &block
|
14
|
+
end
|
15
|
+
|
16
|
+
end# Signals
|
17
|
+
|
18
|
+
|
19
|
+
end# Beeps
|