ruby-audio 1.5.0-x86-mingw32
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.
- data/LICENSE +340 -0
- data/README.rdoc +39 -0
- data/Rakefile +81 -0
- data/ext/rubyaudio_ext/extconf.rb +32 -0
- data/ext/rubyaudio_ext/ra_buffer.c +315 -0
- data/ext/rubyaudio_ext/ra_buffer.h +40 -0
- data/ext/rubyaudio_ext/ra_sound.c +506 -0
- data/ext/rubyaudio_ext/ra_sound.h +37 -0
- data/ext/rubyaudio_ext/ra_soundinfo.c +165 -0
- data/ext/rubyaudio_ext/ra_soundinfo.h +25 -0
- data/ext/rubyaudio_ext/rubyaudio_ext.c +92 -0
- data/lib/1.8/rubyaudio_ext.so +0 -0
- data/lib/1.9/rubyaudio_ext.so +0 -0
- data/lib/ruby-audio.rb +10 -0
- data/lib/ruby-audio/buffer.rb +25 -0
- data/lib/ruby-audio/sound.rb +85 -0
- data/lib/ruby-audio/sound_info.rb +66 -0
- data/ruby-audio.gemspec +22 -0
- data/spec/buffer_spec.rb +88 -0
- data/spec/data/what.mp3 +0 -0
- data/spec/data/what.wav +0 -0
- data/spec/data/what2.wav +0 -0
- data/spec/sound_info_spec.rb +49 -0
- data/spec/sound_spec.rb +182 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +11 -0
- metadata +101 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
module RubyAudio
|
2
|
+
# Class <code>SoundInfo</code> provides information about open sound files'
|
3
|
+
# format, length, samplerate, channels, and other things.
|
4
|
+
#
|
5
|
+
# Example:
|
6
|
+
# snd = RubyAudio::Sound.open("snd.wav")
|
7
|
+
# puts snd.info.channels #=> 2
|
8
|
+
# puts snd.info.samplerate #=> 48000
|
9
|
+
# snd.close
|
10
|
+
#
|
11
|
+
# In addition it can be used to specify the format of new sound files:
|
12
|
+
#
|
13
|
+
# info = RubyAudio::SoundInfo.new :channels => 1, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
14
|
+
# snd = RubyAudio::Sound.open("new.wav", 'w', info)
|
15
|
+
class SoundInfo < CSoundInfo
|
16
|
+
# Creates a new SoundInfo object and populates it using the given data
|
17
|
+
#
|
18
|
+
# Example:
|
19
|
+
# info = RubyAudio::SoundInfo.new :channels => 1, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
20
|
+
def initialize options={}
|
21
|
+
# Populate from options if given
|
22
|
+
unless options.empty?
|
23
|
+
options.each {|key,value| send("#{key}=", value)}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns a new <code>SoundInfo</code> object that is has the same channel
|
28
|
+
# count, sample rate, and format. This is useful in creating a new sound with
|
29
|
+
# the same format as an already existing sound.
|
30
|
+
#
|
31
|
+
# Example:
|
32
|
+
# snd1 = RubyAudio::Sound.open("snd.wav")
|
33
|
+
# snd2 = RubyAudio::Sound.open("snd2.wav", 'w', snd1.info.clone)
|
34
|
+
def clone
|
35
|
+
SoundInfo.new(:channels => channels, :samplerate => samplerate, :format => format)
|
36
|
+
end
|
37
|
+
|
38
|
+
alias_method :seekable?, :seekable
|
39
|
+
|
40
|
+
def main_format
|
41
|
+
calculate_format if @main_format.nil?
|
42
|
+
@main_format
|
43
|
+
end
|
44
|
+
|
45
|
+
def sub_format
|
46
|
+
calculate_format if @sub_format.nil?
|
47
|
+
@sub_format
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
def calculate_format
|
52
|
+
RubyAudio.constants.grep(/FORMAT_/).map(&:to_s).each do |f|
|
53
|
+
next if f.include?('MASK') # Skip mask constants
|
54
|
+
|
55
|
+
val = RubyAudio.const_get(f)
|
56
|
+
if val > RubyAudio::FORMAT_SUBMASK
|
57
|
+
# Main format
|
58
|
+
@main_format = f if format & RubyAudio::FORMAT_TYPEMASK == val
|
59
|
+
else
|
60
|
+
# Sub format
|
61
|
+
@sub_format = f if format & RubyAudio::FORMAT_SUBMASK == val
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/ruby-audio.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'ruby-audio'
|
5
|
+
s.version = '1.5.0'
|
6
|
+
s.platform = Gem::Platform::RUBY
|
7
|
+
s.authors = ['Stephen Augenstein']
|
8
|
+
s.email = ['perl.programmer@gmail.com']
|
9
|
+
s.homepage = 'http://github.com/warhammerkid/ruby-audio'
|
10
|
+
s.summary = 'libsndfile wrapper for ruby'
|
11
|
+
s.description = 'ruby-audio wraps around libsndfile to provide simplified sound reading and writing support to ruby programs'
|
12
|
+
|
13
|
+
s.files = Dir['ruby-audio.gemspec', 'README.rdoc', 'LICENSE', 'Rakefile', 'lib/**/*.rb', 'spec/**/*.{rb,opts,wav,mp3}', 'ext/**/*.{c,h,rb}']
|
14
|
+
s.test_files = Dir['spec/**/*_spec.rb']
|
15
|
+
s.extensions = Dir["ext/**/extconf.rb"]
|
16
|
+
|
17
|
+
s.requirements << 'libsndfile (http://www.mega-nerd.com/libsndfile/)'
|
18
|
+
|
19
|
+
s.has_rdoc = true
|
20
|
+
s.extra_rdoc_files = Dir['README.rdoc', 'ext/**/*.c']
|
21
|
+
s.rdoc_options = ['--line-numbers', '--main', 'README.rdoc']
|
22
|
+
end
|
data/spec/buffer_spec.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
require "spec_helper.rb"
|
2
|
+
|
3
|
+
describe RubyAudio::Buffer do
|
4
|
+
it "should initialize properly" do
|
5
|
+
buf = RubyAudio::Buffer.new('float', 100, 2)
|
6
|
+
buf.channels.should == 2
|
7
|
+
buf.size.should == 100
|
8
|
+
buf.real_size.should == 0
|
9
|
+
buf.type.should == :float
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should support pretty typed constructors" do
|
13
|
+
lambda {
|
14
|
+
[:short, :int, :float, :double].each do |type|
|
15
|
+
buf = RubyAudio::Buffer.send(type, 100)
|
16
|
+
end
|
17
|
+
}.should_not raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should allow [] access on single channel buffers" do
|
21
|
+
buf = RubyAudio::Buffer.int(100, 1)
|
22
|
+
buf[0] = 1.3
|
23
|
+
buf[0].should == 1
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should allow [] access on multi-channel buffers" do
|
27
|
+
buf = RubyAudio::Buffer.double(100, 2)
|
28
|
+
buf[0] = [0.5, 0.3]
|
29
|
+
buf[0].should == [0.5, 0.3]
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should raise exception if channel count of set frame does not match buffer's" do
|
33
|
+
lambda {
|
34
|
+
buf = RubyAudio::Buffer.double(100, 2)
|
35
|
+
buf[0] = [0.4, 0.8, 0.8]
|
36
|
+
}.should raise_error(RubyAudio::Error, "array length must match channel count")
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return nil on out-of-bounds [] access" do
|
40
|
+
buf = RubyAudio::Buffer.float(100)
|
41
|
+
buf[101].should == nil
|
42
|
+
buf[-1].should == nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should truncate invalid real size" do
|
46
|
+
buf = RubyAudio::Buffer.float(100)
|
47
|
+
buf.real_size = 101
|
48
|
+
buf.real_size.should == 100
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should support cloning/duping" do
|
52
|
+
buf = RubyAudio::Buffer.int(100)
|
53
|
+
buf[4] = 100
|
54
|
+
|
55
|
+
buf2 = buf.dup
|
56
|
+
buf2.size.should == buf.size
|
57
|
+
buf2[4].should == 100
|
58
|
+
|
59
|
+
buf[4] = 140
|
60
|
+
buf2[4].should == 100
|
61
|
+
end
|
62
|
+
|
63
|
+
context ".each" do
|
64
|
+
before(:each) do
|
65
|
+
@buf = RubyAudio::Buffer.int(10, 2)
|
66
|
+
10.times do |i|
|
67
|
+
@buf[i] = [i, i]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should yield the elements in order" do
|
72
|
+
i = 0
|
73
|
+
@buf.each do |left, right|
|
74
|
+
left.should == i
|
75
|
+
right.should == i
|
76
|
+
i += 1
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "shouldn't do anything on an empty buffer" do
|
81
|
+
buf = RubyAudio::Buffer.int(0, 2)
|
82
|
+
|
83
|
+
buf.each do
|
84
|
+
fail "This shouldn't be executed"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/spec/data/what.mp3
ADDED
Binary file
|
data/spec/data/what.wav
ADDED
Binary file
|
data/spec/data/what2.wav
ADDED
Binary file
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "spec_helper.rb"
|
2
|
+
|
3
|
+
describe RubyAudio::SoundInfo do
|
4
|
+
it "should initialize with default properties" do
|
5
|
+
info = RubyAudio::SoundInfo.new
|
6
|
+
info.channels.should == 0
|
7
|
+
info.samplerate.should == 0
|
8
|
+
info.format.should == 0
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow setting properties on initialize" do
|
12
|
+
info = RubyAudio::SoundInfo.new(:channels => 1, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16)
|
13
|
+
info.channels.should == 1
|
14
|
+
info.samplerate.should == 48000
|
15
|
+
info.format.should == RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should allow setting properties after initialize" do
|
19
|
+
info = RubyAudio::SoundInfo.new
|
20
|
+
info.channels = 3
|
21
|
+
info.channels.should == 3
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should not be valid if properties invalid" do
|
25
|
+
info = RubyAudio::SoundInfo.new(:channels => 1, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV)
|
26
|
+
info.valid?.should == false
|
27
|
+
info.format = RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
28
|
+
info.valid?.should == true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should allow cloning" do
|
32
|
+
info = RubyAudio::SoundInfo.new(:channels => 1, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16)
|
33
|
+
info2 = info.clone
|
34
|
+
info.object_id.should_not == info2.object_id
|
35
|
+
info.channels.should == info2.channels
|
36
|
+
info.samplerate.should == info2.samplerate
|
37
|
+
info.format.should == info2.format
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should calculate main and sub format from format" do
|
41
|
+
info = RubyAudio::SoundInfo.new(:format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16)
|
42
|
+
info.main_format.should == "FORMAT_WAV"
|
43
|
+
info.sub_format.should == "FORMAT_PCM_16"
|
44
|
+
|
45
|
+
info = RubyAudio::SoundInfo.new(:format => RubyAudio::FORMAT_WAVEX|RubyAudio::FORMAT_MS_ADPCM)
|
46
|
+
info.main_format.should == "FORMAT_WAVEX"
|
47
|
+
info.sub_format.should == "FORMAT_MS_ADPCM"
|
48
|
+
end
|
49
|
+
end
|
data/spec/sound_spec.rb
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
require "spec_helper.rb"
|
2
|
+
|
3
|
+
describe RubyAudio::Sound do
|
4
|
+
MONO_TEST_WAV = File.dirname(__FILE__)+'/data/what.wav'
|
5
|
+
STEREO_TEST_WAV = File.dirname(__FILE__)+'/data/what2.wav'
|
6
|
+
TEST_MP3 = File.dirname(__FILE__)+'/data/what.mp3'
|
7
|
+
OUT_WAV = File.dirname(__FILE__)+'/data/temp.wav'
|
8
|
+
|
9
|
+
after :each do
|
10
|
+
File.delete(OUT_WAV) if File.exists?(OUT_WAV)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should open a standard wav without issues" do
|
14
|
+
lambda {
|
15
|
+
RubyAudio::Sound.open(MONO_TEST_WAV)
|
16
|
+
}.should_not raise_error
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should raise an exception if the mode is invalid" do
|
20
|
+
lambda {
|
21
|
+
RubyAudio::Sound.open(MONO_TEST_WAV, 'q')
|
22
|
+
}.should raise_error(ArgumentError, 'invalid access mode q')
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should close the sound on block exit" do
|
26
|
+
s = nil
|
27
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
28
|
+
snd.closed?.should be_false
|
29
|
+
s = snd
|
30
|
+
end
|
31
|
+
s.closed?.should be_true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should raise an exception for an unsupported file" do
|
35
|
+
lambda {
|
36
|
+
RubyAudio::Sound.open(TEST_MP3)
|
37
|
+
}.should raise_error(RubyAudio::Error, "File contains data in an unknown format.")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should raise an exception if file does not exist" do
|
41
|
+
lambda {
|
42
|
+
RubyAudio::Sound.open(TEST_MP3+'.not')
|
43
|
+
}.should raise_error(RubyAudio::Error, "System error : No such file or directory.")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should have the proper sound info" do
|
47
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
48
|
+
snd.info.channels.should == 1
|
49
|
+
snd.info.samplerate.should == 16000
|
50
|
+
snd.info.format.should == RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should allow seeking" do
|
55
|
+
lambda {
|
56
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
57
|
+
snd.seek(100)
|
58
|
+
buf = snd.read(:float, 100)
|
59
|
+
buf[0].should > 0
|
60
|
+
end
|
61
|
+
}.should_not raise_error
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should raise exceptions for invalid seeks" do
|
65
|
+
lambda {
|
66
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) {|snd| snd.seek(-1)}
|
67
|
+
}.should raise_error(RubyAudio::Error, "invalid seek")
|
68
|
+
lambda {
|
69
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) {|snd| snd.seek(1000000)}
|
70
|
+
}.should raise_error(RubyAudio::Error, "invalid seek")
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should allow reading samples from the sound" do
|
74
|
+
RubyAudio::Sound.open(STEREO_TEST_WAV) do |snd|
|
75
|
+
buf = snd.read(:float, 1000)
|
76
|
+
buf.size.should == 1000
|
77
|
+
buf.real_size.should == 1000
|
78
|
+
buf[999].length.should == 2
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should allow reading into an existing buffer" do
|
83
|
+
buf = RubyAudio::Buffer.float(1000)
|
84
|
+
buf.real_size.should == 0
|
85
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
86
|
+
snd.read(buf)
|
87
|
+
end
|
88
|
+
buf.real_size.should == 1000
|
89
|
+
buf[99].should > 0
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should allow reading into an existing buffer partially" do
|
93
|
+
buf = RubyAudio::Buffer.float(1000)
|
94
|
+
buf.real_size.should == 0
|
95
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
96
|
+
snd.read(buf, 100)
|
97
|
+
end
|
98
|
+
buf.real_size.should == 100
|
99
|
+
buf[99].should > 0
|
100
|
+
buf[100].should == nil
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should allow downmixing to mono on read" do
|
104
|
+
buf = RubyAudio::Buffer.int(100, 1)
|
105
|
+
buf2 = RubyAudio::Buffer.int(100, 2)
|
106
|
+
RubyAudio::Sound.open(STEREO_TEST_WAV, 'r') do |snd|
|
107
|
+
snd.read(buf)
|
108
|
+
snd.seek(0)
|
109
|
+
snd.read(buf2)
|
110
|
+
|
111
|
+
f = buf2[99]
|
112
|
+
buf[99].should == (f[0] + f[1]) / 2
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should allow upmixing from mono on read" do
|
117
|
+
buf = RubyAudio::Buffer.int(100, 1)
|
118
|
+
buf2 = RubyAudio::Buffer.int(100, 2)
|
119
|
+
RubyAudio::Sound.open(STEREO_TEST_WAV, 'r') do |snd|
|
120
|
+
snd.read(buf2)
|
121
|
+
snd.seek(0)
|
122
|
+
snd.read(buf)
|
123
|
+
|
124
|
+
buf2[99].should == [buf[99], buf[99]]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should fail read on unsupported up/downmixing" do
|
129
|
+
buf = RubyAudio::Buffer.float(100, 5)
|
130
|
+
lambda {
|
131
|
+
RubyAudio::Sound.open(STEREO_TEST_WAV) do |snd|
|
132
|
+
snd.read(buf)
|
133
|
+
end
|
134
|
+
}.should raise_error(RubyAudio::Error, "unsupported mix from 5 to 2")
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should allow writing to a new sound" do
|
138
|
+
in_buf = RubyAudio::Buffer.float(100)
|
139
|
+
out_buf = RubyAudio::Buffer.float(100)
|
140
|
+
out_info = nil
|
141
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
142
|
+
snd.read(in_buf)
|
143
|
+
out_info = snd.info.clone
|
144
|
+
end
|
145
|
+
|
146
|
+
RubyAudio::Sound.open(OUT_WAV, 'rw', out_info) do |snd|
|
147
|
+
snd.write(in_buf)
|
148
|
+
snd.seek(0)
|
149
|
+
snd.read(out_buf)
|
150
|
+
end
|
151
|
+
|
152
|
+
out_buf[50].should == in_buf[50]
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should allow writing to a new sound using <<" do
|
156
|
+
in_buf = RubyAudio::Buffer.float(100)
|
157
|
+
out_buf = RubyAudio::Buffer.float(100)
|
158
|
+
out_info = nil
|
159
|
+
RubyAudio::Sound.open(MONO_TEST_WAV) do |snd|
|
160
|
+
snd.read(in_buf)
|
161
|
+
out_info = snd.info.clone
|
162
|
+
end
|
163
|
+
|
164
|
+
RubyAudio::Sound.open(OUT_WAV, 'rw', out_info) do |snd|
|
165
|
+
snd << in_buf
|
166
|
+
snd.seek(0)
|
167
|
+
snd.read(out_buf)
|
168
|
+
end
|
169
|
+
|
170
|
+
out_buf[50].should == in_buf[50]
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should fail write on channel mismatch" do
|
174
|
+
buf = RubyAudio::Buffer.float(100, 5)
|
175
|
+
info = RubyAudio::SoundInfo.new :channels => 2, :samplerate => 48000, :format => RubyAudio::FORMAT_WAV|RubyAudio::FORMAT_PCM_16
|
176
|
+
lambda {
|
177
|
+
RubyAudio::Sound.open(OUT_WAV, 'w', info) do |snd|
|
178
|
+
snd.write(buf)
|
179
|
+
end
|
180
|
+
}.should raise_error(RubyAudio::Error, "channel count mismatch: 5 vs 2")
|
181
|
+
end
|
182
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-audio
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 1.5.0
|
11
|
+
platform: x86-mingw32
|
12
|
+
authors:
|
13
|
+
- Stephen Augenstein
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-07-06 00:00:00 -04:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: ruby-audio wraps around libsndfile to provide simplified sound reading and writing support to ruby programs
|
23
|
+
email:
|
24
|
+
- perl.programmer@gmail.com
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files:
|
30
|
+
- README.rdoc
|
31
|
+
- ext/rubyaudio_ext/ra_buffer.c
|
32
|
+
- ext/rubyaudio_ext/ra_sound.c
|
33
|
+
- ext/rubyaudio_ext/ra_soundinfo.c
|
34
|
+
- ext/rubyaudio_ext/rubyaudio_ext.c
|
35
|
+
files:
|
36
|
+
- ruby-audio.gemspec
|
37
|
+
- README.rdoc
|
38
|
+
- LICENSE
|
39
|
+
- Rakefile
|
40
|
+
- lib/ruby-audio/buffer.rb
|
41
|
+
- lib/ruby-audio/sound.rb
|
42
|
+
- lib/ruby-audio/sound_info.rb
|
43
|
+
- lib/ruby-audio.rb
|
44
|
+
- spec/buffer_spec.rb
|
45
|
+
- spec/sound_info_spec.rb
|
46
|
+
- spec/sound_spec.rb
|
47
|
+
- spec/spec_helper.rb
|
48
|
+
- spec/spec.opts
|
49
|
+
- spec/data/what.wav
|
50
|
+
- spec/data/what2.wav
|
51
|
+
- spec/data/what.mp3
|
52
|
+
- ext/rubyaudio_ext/ra_buffer.c
|
53
|
+
- ext/rubyaudio_ext/ra_sound.c
|
54
|
+
- ext/rubyaudio_ext/ra_soundinfo.c
|
55
|
+
- ext/rubyaudio_ext/rubyaudio_ext.c
|
56
|
+
- ext/rubyaudio_ext/ra_buffer.h
|
57
|
+
- ext/rubyaudio_ext/ra_sound.h
|
58
|
+
- ext/rubyaudio_ext/ra_soundinfo.h
|
59
|
+
- ext/rubyaudio_ext/extconf.rb
|
60
|
+
- lib/1.8/rubyaudio_ext.so
|
61
|
+
- lib/1.9/rubyaudio_ext.so
|
62
|
+
has_rdoc: true
|
63
|
+
homepage: http://github.com/warhammerkid/ruby-audio
|
64
|
+
licenses: []
|
65
|
+
|
66
|
+
post_install_message: You installed the binary version of this gem!
|
67
|
+
rdoc_options:
|
68
|
+
- --line-numbers
|
69
|
+
- --main
|
70
|
+
- README.rdoc
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
requirements:
|
92
|
+
- libsndfile (http://www.mega-nerd.com/libsndfile/)
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 1.3.7
|
95
|
+
signing_key:
|
96
|
+
specification_version: 3
|
97
|
+
summary: libsndfile wrapper for ruby
|
98
|
+
test_files:
|
99
|
+
- spec/buffer_spec.rb
|
100
|
+
- spec/sound_info_spec.rb
|
101
|
+
- spec/sound_spec.rb
|