beeps 0.1.10
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 +7 -0
- data/.doc/ext/beeps/beeps.cpp +46 -0
- data/.doc/ext/beeps/file_in.cpp +59 -0
- data/.doc/ext/beeps/native.cpp +41 -0
- data/.doc/ext/beeps/processor.cpp +49 -0
- data/.doc/ext/beeps/sawtooth_wave.cpp +66 -0
- data/.doc/ext/beeps/sine_wave.cpp +66 -0
- data/.doc/ext/beeps/sound.cpp +69 -0
- data/.doc/ext/beeps/square_wave.cpp +66 -0
- data/README.md +4 -0
- data/Rakefile +27 -0
- data/VERSION +1 -0
- data/beeps.gemspec +43 -0
- data/ext/beeps/beeps.cpp +48 -0
- data/ext/beeps/defs.h +13 -0
- data/ext/beeps/extconf.rb +25 -0
- data/ext/beeps/file_in.cpp +61 -0
- data/ext/beeps/native.cpp +41 -0
- data/ext/beeps/processor.cpp +50 -0
- data/ext/beeps/sawtooth_wave.cpp +69 -0
- data/ext/beeps/sine_wave.cpp +69 -0
- data/ext/beeps/sound.cpp +72 -0
- data/ext/beeps/square_wave.cpp +69 -0
- data/include/beeps.h +12 -0
- data/include/beeps/beeps.h +25 -0
- data/include/beeps/defs.h +23 -0
- data/include/beeps/exception.h +47 -0
- data/include/beeps/openal.h +34 -0
- data/include/beeps/processor.h +132 -0
- data/include/beeps/ruby.h +10 -0
- data/include/beeps/ruby/beeps.h +21 -0
- data/include/beeps/ruby/processor.h +86 -0
- data/include/beeps/ruby/sound.h +42 -0
- data/include/beeps/signals.h +53 -0
- data/include/beeps/sound.h +44 -0
- data/lib/beeps.rb +9 -0
- data/lib/beeps/autoinit.rb +10 -0
- data/lib/beeps/beeps.rb +49 -0
- data/lib/beeps/ext.rb +4 -0
- data/lib/beeps/module.rb +49 -0
- data/lib/beeps/processor.rb +60 -0
- data/lib/beeps/sound.rb +19 -0
- data/src/beeps.cpp +93 -0
- data/src/exception.cpp +43 -0
- data/src/openal.cpp +216 -0
- data/src/openal.h +25 -0
- data/src/processor.cpp +201 -0
- data/src/signals.cpp +90 -0
- data/src/sound.cpp +125 -0
- data/src/stk/include/Blit.h +151 -0
- data/src/stk/include/BlitSaw.h +148 -0
- data/src/stk/include/BlitSquare.h +170 -0
- data/src/stk/include/FileRead.h +141 -0
- data/src/stk/include/FileWvIn.h +195 -0
- data/src/stk/include/Generator.h +50 -0
- data/src/stk/include/SineWave.h +159 -0
- data/src/stk/include/Stk.h +589 -0
- data/src/stk/include/WvIn.h +46 -0
- data/src/stk/src/Blit.cpp +78 -0
- data/src/stk/src/BlitSaw.cpp +91 -0
- data/src/stk/src/BlitSquare.cpp +95 -0
- data/src/stk/src/FileRead.cpp +903 -0
- data/src/stk/src/FileWvIn.cpp +260 -0
- data/src/stk/src/SineWave.cpp +78 -0
- data/src/stk/src/Stk.cpp +395 -0
- data/test/helper.rb +17 -0
- data/test/test_beeps.rb +18 -0
- data/test/test_sound.rb +26 -0
- metadata +177 -0
data/ext/beeps/sound.cpp
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
#include "beeps/ruby/sound.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include "beeps/exception.h"
|
6
|
+
#include "defs.h"
|
7
|
+
|
8
|
+
|
9
|
+
using namespace Rucy;
|
10
|
+
|
11
|
+
|
12
|
+
RUCY_DEFINE_VALUE_FROM_TO(Beeps::Sound)
|
13
|
+
|
14
|
+
#define THIS to<Beeps::Sound*>(self)
|
15
|
+
|
16
|
+
#define CHECK RUCY_CHECK_OBJECT(Beeps::Sound, self)
|
17
|
+
|
18
|
+
|
19
|
+
static
|
20
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
21
|
+
{
|
22
|
+
return new_type<Beeps::Sound>(klass);
|
23
|
+
}
|
24
|
+
RUCY_END
|
25
|
+
|
26
|
+
static
|
27
|
+
RUCY_DEF2(initialize, processor, seconds)
|
28
|
+
{
|
29
|
+
RUCY_CHECK_OBJ(Beeps::Sound, self);
|
30
|
+
|
31
|
+
*THIS = Beeps::Sound(to<Beeps::Processor*>(processor), to<float>(seconds));
|
32
|
+
return self;
|
33
|
+
}
|
34
|
+
RUCY_END
|
35
|
+
|
36
|
+
static
|
37
|
+
RUCY_DEF0(play)
|
38
|
+
{
|
39
|
+
CHECK;
|
40
|
+
|
41
|
+
THIS->play();
|
42
|
+
return self;
|
43
|
+
}
|
44
|
+
RUCY_END
|
45
|
+
|
46
|
+
|
47
|
+
static Class cSound;
|
48
|
+
|
49
|
+
void
|
50
|
+
Init_sound ()
|
51
|
+
{
|
52
|
+
Module mBeeps = define_module("Beeps");
|
53
|
+
|
54
|
+
cSound = mBeeps.define_class("Sound");
|
55
|
+
cSound.define_alloc_func(alloc);
|
56
|
+
cSound.define_private_method("initialize", initialize);
|
57
|
+
cSound.define_method("play", play);
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
namespace Beeps
|
62
|
+
{
|
63
|
+
|
64
|
+
|
65
|
+
Class
|
66
|
+
sound_class ()
|
67
|
+
{
|
68
|
+
return cSound;
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
}// Beeps
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#include "beeps/ruby/processor.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include "beeps/exception.h"
|
6
|
+
#include "defs.h"
|
7
|
+
|
8
|
+
|
9
|
+
using namespace Rucy;
|
10
|
+
|
11
|
+
|
12
|
+
RUCY_DEFINE_VALUE_FROM_TO(Beeps::SquareWave)
|
13
|
+
|
14
|
+
#define THIS to<Beeps::SquareWave*>(self)
|
15
|
+
|
16
|
+
#define CHECK RUCY_CHECK_OBJECT(Beeps::SquareWave, self)
|
17
|
+
|
18
|
+
|
19
|
+
static
|
20
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
21
|
+
{
|
22
|
+
return new_type<Beeps::SquareWave>(klass);
|
23
|
+
}
|
24
|
+
RUCY_END
|
25
|
+
|
26
|
+
static
|
27
|
+
RUCY_DEF1(set_frequency, frequency)
|
28
|
+
{
|
29
|
+
CHECK;
|
30
|
+
THIS->set_frequency(frequency.as_f(true));
|
31
|
+
return self;
|
32
|
+
}
|
33
|
+
RUCY_END
|
34
|
+
|
35
|
+
static
|
36
|
+
RUCY_DEF0(frequency)
|
37
|
+
{
|
38
|
+
CHECK;
|
39
|
+
return to<float>(THIS->frequency());
|
40
|
+
}
|
41
|
+
RUCY_END
|
42
|
+
|
43
|
+
|
44
|
+
static Class cSquareWave;
|
45
|
+
|
46
|
+
void
|
47
|
+
Init_square_wave ()
|
48
|
+
{
|
49
|
+
Module mBeeps = define_module("Beeps");
|
50
|
+
|
51
|
+
cSquareWave = mBeeps.define_class("SquareWave", Beeps::processor_class());
|
52
|
+
cSquareWave.define_alloc_func(alloc);
|
53
|
+
cSquareWave.define_method("frequency=", set_frequency);
|
54
|
+
cSquareWave.define_method("frequency", frequency);
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
namespace Beeps
|
59
|
+
{
|
60
|
+
|
61
|
+
|
62
|
+
Class
|
63
|
+
square_wave_class ()
|
64
|
+
{
|
65
|
+
return cSquareWave;
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
}// Beeps
|
data/include/beeps.h
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_BEEPS_H__
|
4
|
+
#define __BEEPS_BEEPS_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <beeps/defs.h>
|
8
|
+
|
9
|
+
|
10
|
+
namespace Beeps
|
11
|
+
{
|
12
|
+
|
13
|
+
|
14
|
+
void init ();
|
15
|
+
|
16
|
+
void fin ();
|
17
|
+
|
18
|
+
|
19
|
+
uint sampling_rate ();
|
20
|
+
|
21
|
+
|
22
|
+
}// Beeps
|
23
|
+
|
24
|
+
|
25
|
+
#endif//EOH
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_DEFS_H__
|
4
|
+
#define __BEEPS_DEFS_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <xot/defs.h>
|
8
|
+
#include <xot/string.h>
|
9
|
+
|
10
|
+
|
11
|
+
namespace Beeps
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
using namespace Xot::Types;
|
16
|
+
|
17
|
+
using Xot::String;
|
18
|
+
|
19
|
+
|
20
|
+
}// Beeps
|
21
|
+
|
22
|
+
|
23
|
+
#endif//EOH
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_EXCEPTION_H__
|
4
|
+
#define __BEEPS_EXCEPTION_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <xot/exception.h>
|
8
|
+
#include <beeps/defs.h>
|
9
|
+
|
10
|
+
|
11
|
+
namespace Beeps
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
class BeepsError : public Xot::XotError
|
16
|
+
{
|
17
|
+
typedef Xot::XotError Super;
|
18
|
+
public: BeepsError (const char* str = NULL);
|
19
|
+
};
|
20
|
+
|
21
|
+
|
22
|
+
class OpenALError : public BeepsError
|
23
|
+
{
|
24
|
+
typedef BeepsError Super;
|
25
|
+
public: OpenALError (const char* str = NULL);
|
26
|
+
};
|
27
|
+
|
28
|
+
|
29
|
+
namespace ErrorFunctions
|
30
|
+
{
|
31
|
+
|
32
|
+
using namespace Xot::ErrorFunctions;
|
33
|
+
|
34
|
+
void beeps_error (const char* file, int line, const char* format = NULL, ...);
|
35
|
+
|
36
|
+
void openal_error (const char* file, int line, const char* format = NULL, ...);
|
37
|
+
|
38
|
+
}// ErrorFunctions
|
39
|
+
|
40
|
+
|
41
|
+
using namespace ErrorFunctions;
|
42
|
+
|
43
|
+
|
44
|
+
}// Beeps
|
45
|
+
|
46
|
+
|
47
|
+
#endif//EOH
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_OPENAL_H__
|
4
|
+
#define __BEEPS_OPENAL_H__
|
5
|
+
|
6
|
+
|
7
|
+
#if defined(OSX) || defined(IOS)
|
8
|
+
#include <OpenAL/al.h>
|
9
|
+
#include <OpenAL/alc.h>
|
10
|
+
#else
|
11
|
+
#include <AL/al.h>
|
12
|
+
#include <AL/alc.h>
|
13
|
+
#endif
|
14
|
+
|
15
|
+
|
16
|
+
namespace Beeps
|
17
|
+
{
|
18
|
+
|
19
|
+
|
20
|
+
ALCenum get_error ();
|
21
|
+
|
22
|
+
bool no_error ();
|
23
|
+
|
24
|
+
bool is_error (ALCenum err);
|
25
|
+
|
26
|
+
void check_error(const char* file, int line);
|
27
|
+
|
28
|
+
void clear_error ();
|
29
|
+
|
30
|
+
|
31
|
+
}// Beeps
|
32
|
+
|
33
|
+
|
34
|
+
#endif//EOH
|
@@ -0,0 +1,132 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_PROCESSOR_H__
|
4
|
+
#define __BEEPS_PROCESSOR_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <xot/pimpl.h>
|
8
|
+
|
9
|
+
|
10
|
+
namespace Beeps
|
11
|
+
{
|
12
|
+
|
13
|
+
|
14
|
+
class Signals;
|
15
|
+
|
16
|
+
|
17
|
+
class Processor
|
18
|
+
{
|
19
|
+
|
20
|
+
public:
|
21
|
+
|
22
|
+
Processor ();
|
23
|
+
|
24
|
+
virtual ~Processor ();
|
25
|
+
|
26
|
+
virtual void process (Signals* signals);
|
27
|
+
|
28
|
+
virtual operator bool () const;
|
29
|
+
|
30
|
+
virtual bool operator ! () const;
|
31
|
+
|
32
|
+
};// Processor
|
33
|
+
|
34
|
+
|
35
|
+
class SineWave : public Processor
|
36
|
+
{
|
37
|
+
|
38
|
+
typedef Processor Super;
|
39
|
+
|
40
|
+
public:
|
41
|
+
|
42
|
+
SineWave ();
|
43
|
+
|
44
|
+
virtual ~SineWave ();
|
45
|
+
|
46
|
+
virtual void set_frequency (float frequency);
|
47
|
+
|
48
|
+
virtual float frequency () const;
|
49
|
+
|
50
|
+
virtual void process (Signals* signals);
|
51
|
+
|
52
|
+
struct Data;
|
53
|
+
|
54
|
+
Xot::PImpl<Data, true> self;
|
55
|
+
|
56
|
+
};// SineWave
|
57
|
+
|
58
|
+
|
59
|
+
class SquareWave : public Processor
|
60
|
+
{
|
61
|
+
|
62
|
+
typedef Processor Super;
|
63
|
+
|
64
|
+
public:
|
65
|
+
|
66
|
+
SquareWave ();
|
67
|
+
|
68
|
+
virtual ~SquareWave ();
|
69
|
+
|
70
|
+
virtual void set_frequency (float frequency);
|
71
|
+
|
72
|
+
virtual float frequency () const;
|
73
|
+
|
74
|
+
virtual void process (Signals* signals);
|
75
|
+
|
76
|
+
struct Data;
|
77
|
+
|
78
|
+
Xot::PImpl<Data, true> self;
|
79
|
+
|
80
|
+
};// SquareWave
|
81
|
+
|
82
|
+
|
83
|
+
class SawtoothWave : public Processor
|
84
|
+
{
|
85
|
+
|
86
|
+
typedef Processor Super;
|
87
|
+
|
88
|
+
public:
|
89
|
+
|
90
|
+
SawtoothWave ();
|
91
|
+
|
92
|
+
virtual ~SawtoothWave ();
|
93
|
+
|
94
|
+
virtual void set_frequency (float frequency);
|
95
|
+
|
96
|
+
virtual float frequency () const;
|
97
|
+
|
98
|
+
virtual void process (Signals* signals);
|
99
|
+
|
100
|
+
struct Data;
|
101
|
+
|
102
|
+
Xot::PImpl<Data, true> self;
|
103
|
+
|
104
|
+
};// SawtoothWave
|
105
|
+
|
106
|
+
|
107
|
+
class FileIn : public Processor
|
108
|
+
{
|
109
|
+
|
110
|
+
typedef Processor Super;
|
111
|
+
|
112
|
+
public:
|
113
|
+
|
114
|
+
FileIn (const char* path = NULL);
|
115
|
+
|
116
|
+
virtual ~FileIn ();
|
117
|
+
|
118
|
+
virtual void process (Signals* signals);
|
119
|
+
|
120
|
+
virtual operator bool () const;
|
121
|
+
|
122
|
+
struct Data;
|
123
|
+
|
124
|
+
Xot::PImpl<Data, true> self;
|
125
|
+
|
126
|
+
};// FileIn
|
127
|
+
|
128
|
+
|
129
|
+
}// Beeps
|
130
|
+
|
131
|
+
|
132
|
+
#endif//EOH
|
@@ -0,0 +1,21 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __BEEPS_RUBY_BEEPS_H__
|
4
|
+
#define __BEEPS_RUBY_BEEPS_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <rucy/module.h>
|
8
|
+
|
9
|
+
|
10
|
+
namespace Beeps
|
11
|
+
{
|
12
|
+
|
13
|
+
|
14
|
+
Rucy::Module beeps_module ();
|
15
|
+
// module Beeps
|
16
|
+
|
17
|
+
|
18
|
+
}// Beeps
|
19
|
+
|
20
|
+
|
21
|
+
#endif//EOH
|