beeps 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.doc/ext/beeps/analyser.cpp +1 -1
- data/.doc/ext/beeps/{adsr.cpp → envelope.cpp} +20 -20
- data/.doc/ext/beeps/file_in.cpp +1 -1
- data/.doc/ext/beeps/gain.cpp +1 -1
- data/.doc/ext/beeps/mic_in.cpp +1 -1
- data/.doc/ext/beeps/native.cpp +4 -2
- data/.doc/ext/beeps/oscillator.cpp +1 -1
- data/.doc/ext/beeps/pitch_shift.cpp +1 -1
- data/.doc/ext/beeps/processor.cpp +1 -1
- data/.doc/ext/beeps/sequencer.cpp +87 -0
- data/.doc/ext/beeps/sound.cpp +1 -1
- data/.doc/ext/beeps/sound_player.cpp +1 -1
- data/.doc/ext/beeps/time_stretch.cpp +1 -1
- data/.github/workflows/release-gem.yml +1 -1
- data/.github/workflows/test.yml +3 -0
- data/ChangeLog.md +13 -0
- data/Gemfile.lock +1 -1
- data/LICENSE +21 -0
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/beeps.gemspec +2 -2
- data/ext/beeps/analyser.cpp +1 -1
- data/ext/beeps/defs.h +2 -0
- data/ext/beeps/{adsr.cpp → envelope.cpp} +20 -20
- data/ext/beeps/extconf.rb +11 -3
- data/ext/beeps/file_in.cpp +1 -1
- data/ext/beeps/gain.cpp +1 -1
- data/ext/beeps/mic_in.cpp +1 -1
- data/ext/beeps/native.cpp +4 -2
- data/ext/beeps/oscillator.cpp +1 -1
- data/ext/beeps/pitch_shift.cpp +1 -1
- data/ext/beeps/processor.cpp +1 -1
- data/ext/beeps/sequencer.cpp +92 -0
- data/ext/beeps/sound.cpp +1 -1
- data/ext/beeps/sound_player.cpp +1 -1
- data/ext/beeps/time_stretch.cpp +1 -1
- data/include/beeps/defs.h +7 -0
- data/include/beeps/filter.h +4 -4
- data/include/beeps/generator.h +31 -0
- data/include/beeps/ruby/beeps.h +1 -1
- data/include/beeps/ruby/exception.h +2 -2
- data/include/beeps/ruby/filter.h +16 -10
- data/include/beeps/ruby/generator.h +18 -5
- data/include/beeps/ruby/processor.h +2 -2
- data/include/beeps/ruby/sound.h +4 -4
- data/lib/beeps/extension.rb +4 -0
- data/lib/beeps/processor.rb +2 -2
- data/src/beeps.cpp +3 -1
- data/src/beeps.h +22 -0
- data/src/{adsr.cpp → envelope.cpp} +21 -20
- data/src/openal.cpp +3 -1
- data/src/oscillator.cpp +75 -44
- data/src/osx/beeps.mm +19 -0
- data/src/processor.cpp +59 -49
- data/src/processor.h +30 -14
- data/src/sequencer.cpp +160 -0
- data/src/signals.cpp +45 -29
- data/src/signals.h +4 -4
- data/src/sound.cpp +32 -29
- data/src/win32/beeps.cpp +36 -0
- data/src/win32/exception.cpp +40 -0
- data/src/win32/exception.h +40 -0
- data/src/win32/signals.cpp +186 -0
- metadata +21 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c83b46a4b2d1c3e24bcf22711ef53a8776651c7a4f7d90d069b96c9cc5e62064
|
4
|
+
data.tar.gz: 162ddb6915de1cbae2c11af0a92dcf14e6c9e35968b4fb6374868a42a11a7eef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56d4eea3b0323dae779d4ec28c8b6a779b15b9fe3377178acca350ebc82e605f4be39e5969b008527fb1c14e7071ebeb08d6f1204b12c79282faa509cecc187a
|
7
|
+
data.tar.gz: cdd5ebec38e614f2cbb015c21f2899dcf5ee2e1bbdb9e83bd69681d83c7cc022a5a6002ac2044c86cb0d93a3874644787848c42120e97651cdd1343fc09e888c
|
data/.doc/ext/beeps/analyser.cpp
CHANGED
@@ -5,17 +5,17 @@
|
|
5
5
|
#include "defs.h"
|
6
6
|
|
7
7
|
|
8
|
-
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Beeps::
|
8
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Envelope)
|
9
9
|
|
10
|
-
#define THIS to<Beeps::
|
10
|
+
#define THIS to<Beeps::Envelope*>(self)
|
11
11
|
|
12
|
-
#define CHECK RUCY_CHECK_OBJ(Beeps::
|
12
|
+
#define CHECK RUCY_CHECK_OBJ(Beeps::Envelope, self)
|
13
13
|
|
14
14
|
|
15
15
|
static
|
16
16
|
VALUE alloc(VALUE klass)
|
17
17
|
{
|
18
|
-
return value(new Beeps::RubyProcessor<Beeps::
|
18
|
+
return value(new Beeps::RubyProcessor<Beeps::Envelope>, klass);
|
19
19
|
}
|
20
20
|
|
21
21
|
static
|
@@ -103,25 +103,25 @@ VALUE get_release_time(VALUE self)
|
|
103
103
|
}
|
104
104
|
|
105
105
|
|
106
|
-
static Class
|
106
|
+
static Class cEnvelope;
|
107
107
|
|
108
108
|
void
|
109
|
-
|
109
|
+
Init_beeps_envelope ()
|
110
110
|
{
|
111
111
|
Module mBeeps = rb_define_module("Beeps");
|
112
112
|
|
113
|
-
|
114
|
-
rb_define_alloc_func(
|
115
|
-
|
116
|
-
|
117
|
-
rb_define_method(
|
118
|
-
rb_define_method(
|
119
|
-
rb_define_method(
|
120
|
-
rb_define_method(
|
121
|
-
rb_define_method(
|
122
|
-
rb_define_method(
|
123
|
-
rb_define_method(
|
124
|
-
rb_define_method(
|
113
|
+
cEnvelope = mBeeps.define_class("Envelope", Beeps::processor_class());
|
114
|
+
rb_define_alloc_func(cEnvelope, alloc);
|
115
|
+
cEnvelope.define_private_method("note_on!", note_on);
|
116
|
+
cEnvelope.define_private_method("note_off!", note_off);
|
117
|
+
rb_define_method(cEnvelope, "attack_time=", RUBY_METHOD_FUNC(set_attack_time), 1);
|
118
|
+
rb_define_method(cEnvelope, "attack_time", RUBY_METHOD_FUNC(get_attack_time), 0);
|
119
|
+
rb_define_method(cEnvelope, "decay_time=", RUBY_METHOD_FUNC(set_decay_time), 1);
|
120
|
+
rb_define_method(cEnvelope, "decay_time", RUBY_METHOD_FUNC(get_decay_time), 0);
|
121
|
+
rb_define_method(cEnvelope, "sustain_level=", RUBY_METHOD_FUNC(set_sustain_level), 1);
|
122
|
+
rb_define_method(cEnvelope, "sustain_level", RUBY_METHOD_FUNC(get_sustain_level), 0);
|
123
|
+
rb_define_method(cEnvelope, "release_time=", RUBY_METHOD_FUNC(set_release_time), 1);
|
124
|
+
rb_define_method(cEnvelope, "release_time", RUBY_METHOD_FUNC(get_release_time), 0);
|
125
125
|
}
|
126
126
|
|
127
127
|
|
@@ -130,9 +130,9 @@ namespace Beeps
|
|
130
130
|
|
131
131
|
|
132
132
|
Class
|
133
|
-
|
133
|
+
envelope_class ()
|
134
134
|
{
|
135
|
-
return
|
135
|
+
return cEnvelope;
|
136
136
|
}
|
137
137
|
|
138
138
|
|
data/.doc/ext/beeps/file_in.cpp
CHANGED
data/.doc/ext/beeps/gain.cpp
CHANGED
data/.doc/ext/beeps/mic_in.cpp
CHANGED
data/.doc/ext/beeps/native.cpp
CHANGED
@@ -9,11 +9,12 @@ void Init_beeps_sound_player ();
|
|
9
9
|
void Init_beeps_processor ();
|
10
10
|
|
11
11
|
void Init_beeps_oscillator ();
|
12
|
+
void Init_beeps_sequencer ();
|
12
13
|
void Init_beeps_file_in ();
|
13
14
|
void Init_beeps_mic_in ();
|
14
15
|
|
15
16
|
void Init_beeps_gain ();
|
16
|
-
void
|
17
|
+
void Init_beeps_envelope ();
|
17
18
|
void Init_beeps_time_stretch ();
|
18
19
|
void Init_beeps_pitch_shift ();
|
19
20
|
void Init_beeps_analyser ();
|
@@ -38,11 +39,12 @@ extern "C" void
|
|
38
39
|
Init_beeps_processor();
|
39
40
|
|
40
41
|
Init_beeps_oscillator();
|
42
|
+
Init_beeps_sequencer();
|
41
43
|
Init_beeps_file_in();
|
42
44
|
Init_beeps_mic_in();
|
43
45
|
|
44
46
|
Init_beeps_gain();
|
45
|
-
|
47
|
+
Init_beeps_envelope();
|
46
48
|
Init_beeps_time_stretch();
|
47
49
|
Init_beeps_pitch_shift();
|
48
50
|
Init_beeps_analyser();
|
@@ -0,0 +1,87 @@
|
|
1
|
+
#include "beeps/ruby/generator.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include "beeps/ruby/processor.h"
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Sequencer)
|
9
|
+
|
10
|
+
#define THIS to<Beeps::Sequencer*>(self)
|
11
|
+
|
12
|
+
#define CHECK RUCY_CHECK_OBJ(Beeps::Sequencer, self)
|
13
|
+
|
14
|
+
|
15
|
+
static
|
16
|
+
VALUE alloc(VALUE klass)
|
17
|
+
{
|
18
|
+
return value(new Beeps::RubyProcessor<Beeps::Sequencer>, klass);
|
19
|
+
}
|
20
|
+
|
21
|
+
static
|
22
|
+
VALUE add(VALUE self, VALUE processor, VALUE offset, VALUE duration)
|
23
|
+
{
|
24
|
+
CHECK;
|
25
|
+
|
26
|
+
THIS->add(
|
27
|
+
to<Beeps::Processor*>(processor),
|
28
|
+
to<float>(offset),
|
29
|
+
to<float>(duration));
|
30
|
+
}
|
31
|
+
|
32
|
+
static
|
33
|
+
VALUE remove(VALUE self, VALUE processor, VALUE offset)
|
34
|
+
{
|
35
|
+
CHECK;
|
36
|
+
|
37
|
+
THIS->remove(
|
38
|
+
to<Beeps::Processor*>(processor),
|
39
|
+
to<float>(offset));
|
40
|
+
}
|
41
|
+
|
42
|
+
static
|
43
|
+
VALUE set_time_scale(VALUE self, VALUE time_scale)
|
44
|
+
{
|
45
|
+
CHECK;
|
46
|
+
|
47
|
+
THIS->set_time_scale(to<float>(time_scale));
|
48
|
+
return time_scale;
|
49
|
+
}
|
50
|
+
|
51
|
+
static
|
52
|
+
VALUE get_time_scale(VALUE self)
|
53
|
+
{
|
54
|
+
CHECK;
|
55
|
+
|
56
|
+
return value(THIS->time_scale());
|
57
|
+
}
|
58
|
+
|
59
|
+
|
60
|
+
static Class cSequencer;
|
61
|
+
|
62
|
+
void
|
63
|
+
Init_beeps_sequencer ()
|
64
|
+
{
|
65
|
+
Module mBeeps = rb_define_module("Beeps");
|
66
|
+
|
67
|
+
cSequencer = mBeeps.define_class("Sequencer", Beeps::processor_class());
|
68
|
+
rb_define_alloc_func(cSequencer, alloc);
|
69
|
+
rb_define_method(cSequencer, "add", RUBY_METHOD_FUNC(add), 3);
|
70
|
+
rb_define_method(cSequencer, "remove", RUBY_METHOD_FUNC(remove), 2);
|
71
|
+
//rb_define_method(cSequencer, "time_scale=", RUBY_METHOD_FUNC(set_time_scale), 1);
|
72
|
+
//rb_define_method(cSequencer, "time_scale", RUBY_METHOD_FUNC(get_time_scale), 0);
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
namespace Beeps
|
77
|
+
{
|
78
|
+
|
79
|
+
|
80
|
+
Class
|
81
|
+
sequencer_class ()
|
82
|
+
{
|
83
|
+
return cSequencer;
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
}// Beeps
|
data/.doc/ext/beeps/sound.cpp
CHANGED
data/.github/workflows/test.yml
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
# beeps ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.3.1] - 2025-01-13
|
5
|
+
|
6
|
+
- Add Sequencer class
|
7
|
+
- Add 'triangle' type to Oscillator
|
8
|
+
- Add LICENSE file
|
9
|
+
- Rename: ADSR -> Envelope
|
10
|
+
|
11
|
+
|
12
|
+
## [v0.3] - 2024-07-06
|
13
|
+
|
14
|
+
- Support Windows
|
15
|
+
|
16
|
+
|
4
17
|
## [v0.2.1] - 2024-07-05
|
5
18
|
|
6
19
|
- Do not delete OpenAL objects after calling OpenAL_fin()
|
data/Gemfile.lock
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2015 xord.org
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/Rakefile
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# -*- mode: ruby -*-
|
2
2
|
|
3
|
-
|
4
3
|
%w[../xot ../rucy .]
|
5
4
|
.map {|s| File.expand_path "#{s}/lib", __dir__}
|
6
5
|
.each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
@@ -15,6 +14,8 @@ require 'beeps/extension'
|
|
15
14
|
EXTENSIONS = [Xot, Rucy, Beeps]
|
16
15
|
TESTS_ALONE = ['test/test_beeps_init.rb']
|
17
16
|
|
17
|
+
install_packages win32: %w[MINGW_PACKAGE_PREFIX-openal]
|
18
|
+
|
18
19
|
use_external_library 'https://github.com/thestk/stk',
|
19
20
|
tag: '4.6.2',
|
20
21
|
incdirs: 'include',
|
@@ -47,6 +48,6 @@ default_tasks :ext
|
|
47
48
|
use_bundler
|
48
49
|
build_native_library
|
49
50
|
build_ruby_extension
|
50
|
-
test_ruby_extension
|
51
|
+
test_ruby_extension unless github_actions? && win32?
|
51
52
|
generate_documents
|
52
53
|
build_ruby_gem
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.1
|
data/beeps.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.platform = Gem::Platform::RUBY
|
26
26
|
s.required_ruby_version = '>= 3.0.0'
|
27
27
|
|
28
|
-
s.add_runtime_dependency 'xot', '~> 0.
|
29
|
-
s.add_runtime_dependency 'rucy', '~> 0.
|
28
|
+
s.add_runtime_dependency 'xot', '~> 0.3.1'
|
29
|
+
s.add_runtime_dependency 'rucy', '~> 0.3.1'
|
30
30
|
|
31
31
|
s.files = `git ls-files`.split $/
|
32
32
|
s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
|
data/ext/beeps/analyser.cpp
CHANGED
data/ext/beeps/defs.h
CHANGED
@@ -5,17 +5,17 @@
|
|
5
5
|
#include "defs.h"
|
6
6
|
|
7
7
|
|
8
|
-
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Beeps::
|
8
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(BEEPS_EXPORT, Beeps::Envelope)
|
9
9
|
|
10
|
-
#define THIS to<Beeps::
|
10
|
+
#define THIS to<Beeps::Envelope*>(self)
|
11
11
|
|
12
|
-
#define CHECK RUCY_CHECK_OBJ(Beeps::
|
12
|
+
#define CHECK RUCY_CHECK_OBJ(Beeps::Envelope, self)
|
13
13
|
|
14
14
|
|
15
15
|
static
|
16
16
|
RUCY_DEF_ALLOC(alloc, klass)
|
17
17
|
{
|
18
|
-
return value(new Beeps::RubyProcessor<Beeps::
|
18
|
+
return value(new Beeps::RubyProcessor<Beeps::Envelope>, klass);
|
19
19
|
}
|
20
20
|
RUCY_END
|
21
21
|
|
@@ -114,25 +114,25 @@ RUCY_DEF0(get_release_time)
|
|
114
114
|
RUCY_END
|
115
115
|
|
116
116
|
|
117
|
-
static Class
|
117
|
+
static Class cEnvelope;
|
118
118
|
|
119
119
|
void
|
120
|
-
|
120
|
+
Init_beeps_envelope ()
|
121
121
|
{
|
122
122
|
Module mBeeps = define_module("Beeps");
|
123
123
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
124
|
+
cEnvelope = mBeeps.define_class("Envelope", Beeps::processor_class());
|
125
|
+
cEnvelope.define_alloc_func(alloc);
|
126
|
+
cEnvelope.define_private_method("note_on!", note_on);
|
127
|
+
cEnvelope.define_private_method("note_off!", note_off);
|
128
|
+
cEnvelope.define_method( "attack_time=", set_attack_time);
|
129
|
+
cEnvelope.define_method( "attack_time", get_attack_time);
|
130
|
+
cEnvelope.define_method( "decay_time=", set_decay_time);
|
131
|
+
cEnvelope.define_method( "decay_time", get_decay_time);
|
132
|
+
cEnvelope.define_method("sustain_level=", set_sustain_level);
|
133
|
+
cEnvelope.define_method("sustain_level", get_sustain_level);
|
134
|
+
cEnvelope.define_method("release_time=", set_release_time);
|
135
|
+
cEnvelope.define_method("release_time", get_release_time);
|
136
136
|
}
|
137
137
|
|
138
138
|
|
@@ -141,9 +141,9 @@ namespace Beeps
|
|
141
141
|
|
142
142
|
|
143
143
|
Class
|
144
|
-
|
144
|
+
envelope_class ()
|
145
145
|
{
|
146
|
-
return
|
146
|
+
return cEnvelope;
|
147
147
|
}
|
148
148
|
|
149
149
|
|
data/ext/beeps/extconf.rb
CHANGED
@@ -11,9 +11,17 @@ require 'beeps/extension'
|
|
11
11
|
|
12
12
|
Xot::ExtConf.new Xot, Rucy, Beeps do
|
13
13
|
setup do
|
14
|
-
headers
|
15
|
-
|
16
|
-
|
14
|
+
headers << 'ruby.h'
|
15
|
+
|
16
|
+
if win32?
|
17
|
+
headers << 'AL/al.h' << 'AL/alc.h'
|
18
|
+
libs << 'openal' << 'ole32' << 'mf' << 'mfplat' << 'mfreadwrite' << 'mfuuid'
|
19
|
+
elsif osx?
|
20
|
+
headers << 'OpenAL/al.h' << 'OpenAL/alc.h'
|
21
|
+
frameworks << 'OpenAL' << 'AVFoundation'
|
22
|
+
end
|
23
|
+
|
24
|
+
$LDFLAGS << ' -Wl,--out-implib=native.dll.a' if mingw? || cygwin?
|
17
25
|
end
|
18
26
|
|
19
27
|
create_makefile 'beeps/native'
|
data/ext/beeps/file_in.cpp
CHANGED
data/ext/beeps/gain.cpp
CHANGED
data/ext/beeps/mic_in.cpp
CHANGED
data/ext/beeps/native.cpp
CHANGED
@@ -9,11 +9,12 @@ void Init_beeps_sound_player ();
|
|
9
9
|
void Init_beeps_processor ();
|
10
10
|
|
11
11
|
void Init_beeps_oscillator ();
|
12
|
+
void Init_beeps_sequencer ();
|
12
13
|
void Init_beeps_file_in ();
|
13
14
|
void Init_beeps_mic_in ();
|
14
15
|
|
15
16
|
void Init_beeps_gain ();
|
16
|
-
void
|
17
|
+
void Init_beeps_envelope ();
|
17
18
|
void Init_beeps_time_stretch ();
|
18
19
|
void Init_beeps_pitch_shift ();
|
19
20
|
void Init_beeps_analyser ();
|
@@ -38,11 +39,12 @@ extern "C" void
|
|
38
39
|
Init_beeps_processor();
|
39
40
|
|
40
41
|
Init_beeps_oscillator();
|
42
|
+
Init_beeps_sequencer();
|
41
43
|
Init_beeps_file_in();
|
42
44
|
Init_beeps_mic_in();
|
43
45
|
|
44
46
|
Init_beeps_gain();
|
45
|
-
|
47
|
+
Init_beeps_envelope();
|
46
48
|
Init_beeps_time_stretch();
|
47
49
|
Init_beeps_pitch_shift();
|
48
50
|
Init_beeps_analyser();
|
data/ext/beeps/oscillator.cpp
CHANGED
data/ext/beeps/pitch_shift.cpp
CHANGED