ruby-audio 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'spec/rake/spectask'
6
6
 
7
7
  spec = Gem::Specification.new do |s|
8
8
  s.name = 'ruby-audio'
9
- s.version = '1.3.0'
9
+ s.version = '1.4.0'
10
10
  s.summary = 'ruby-audio wraps around libsndfile to provide simplified sound reading and writing support to ruby programs'
11
11
  s.authors = ['Stephen Augenstein']
12
12
  s.email = 'perl.programmer@gmail.com'
data/ext/extconf.rb CHANGED
@@ -1,12 +1,26 @@
1
1
  require 'mkmf'
2
2
 
3
- $CFLAGS = '-I/opt/local/include'
4
- $LDFLAGS = '-L/opt/local/lib -L/usr/local/lib'
3
+ $CFLAGS.gsub!("-arch i386", "")
4
+ $LDFLAGS.gsub!("-arch i386", "")
5
+
6
+ dir_config('sndfile')
7
+
8
+ # Mega-Nerd windows installer installs as libsndfile-1.dll
9
+ if RUBY_PLATFORM =~ /(mswin|mingw|cygwin)/
10
+ sndfile_lib = 'sndfile-1'
11
+ else
12
+ sndfile_lib = 'sndfile'
13
+ end
5
14
 
6
15
  # libsndfile requirements
7
- unless find_library 'sndfile', 'sf_open'
8
- raise 'You need to install libsndfile (http://www.mega-nerd.com/libsndfile/)'
9
- exit
16
+ find_header 'sndfile.h', '/opt/local/include', '/usr/local/include', 'C:/Program Files/Mega-Nerd/libsndfile/include'
17
+ unless find_library sndfile_lib, 'sf_open', '/opt/local/lib', '/usr/local/lib', 'C:/Program Files/Mega-Nerd/libsndfile'
18
+ fail <<-EOM
19
+ Can't find libsndfile (http://www.mega-nerd.com/libsndfile/)
20
+
21
+ Try passing --with-sndfile-dir or --with-sndfile-lib and --with-sndfile-include
22
+ options to extconf.
23
+ EOM
10
24
  end
11
25
 
12
26
  # Check for format support
data/ext/ra_buffer.c CHANGED
@@ -48,13 +48,21 @@ static void ra_buffer_free(RA_BUFFER *buf) {
48
48
  * Uses size, channels, and type to allocate a properly sized array and set data
49
49
  * to the pointer for that data. Returns size.
50
50
  */
51
- static int ra_buffer_alloc_data(RA_BUFFER *buf) {
52
- int size;
51
+ static long ra_buffer_alloc_data(RA_BUFFER *buf) {
52
+ long size = 0;
53
53
  switch(buf->type) {
54
- case RA_BUFFER_TYPE_SHORT: size = sizeof(short)*buf->size*buf->channels; break;
55
- case RA_BUFFER_TYPE_INT: size = sizeof(int)*buf->size*buf->channels; break;
56
- case RA_BUFFER_TYPE_FLOAT: size = sizeof(float)*buf->size*buf->channels; break;
57
- case RA_BUFFER_TYPE_DOUBLE: size = sizeof(double)*buf->size*buf->channels; break;
54
+ case RA_BUFFER_TYPE_SHORT:
55
+ size = sizeof(short) * buf->size * buf->channels;
56
+ break;
57
+ case RA_BUFFER_TYPE_INT:
58
+ size = sizeof(int) * buf->size * buf->channels;
59
+ break;
60
+ case RA_BUFFER_TYPE_FLOAT:
61
+ size = sizeof(float) * buf->size * buf->channels;
62
+ break;
63
+ case RA_BUFFER_TYPE_DOUBLE:
64
+ size = sizeof(double) * buf->size * buf->channels;
65
+ break;
58
66
  }
59
67
  buf->data = (void*)xmalloc(size);
60
68
  return size;
@@ -95,7 +103,7 @@ static VALUE ra_buffer_init(int argc, VALUE *argv, VALUE self) {
95
103
  buf->channels = (argc == 3) ? FIX2INT(argv[2]) : 1;
96
104
 
97
105
  // Allocate data array based on type
98
- buf->size = FIX2INT(argv[1]);
106
+ buf->size = FIX2LONG(argv[1]);
99
107
  buf->real_size = 0;
100
108
  if(strcmp(buf_type, "short") == 0) buf->type = RA_BUFFER_TYPE_SHORT;
101
109
  else if(strcmp(buf_type, "int") == 0) buf->type = RA_BUFFER_TYPE_INT;
@@ -124,7 +132,7 @@ static VALUE ra_buffer_init_copy(VALUE copy, VALUE buf) {
124
132
 
125
133
  // Clone data
126
134
  memcpy(copy_struct, buf_struct, sizeof(RA_BUFFER));
127
- int size = ra_buffer_alloc_data(copy_struct);
135
+ long size = ra_buffer_alloc_data(copy_struct);
128
136
  memcpy(copy_struct->data, buf_struct->data, size);
129
137
 
130
138
  return copy;
@@ -151,7 +159,7 @@ static VALUE ra_buffer_channels(VALUE self) {
151
159
  static VALUE ra_buffer_size(VALUE self) {
152
160
  RA_BUFFER *buf;
153
161
  Data_Get_Struct(self, RA_BUFFER, buf);
154
- return INT2FIX(buf->size);
162
+ return LONG2FIX(buf->size);
155
163
  }
156
164
 
157
165
  /*
@@ -164,7 +172,7 @@ static VALUE ra_buffer_size(VALUE self) {
164
172
  static VALUE ra_buffer_real_size(VALUE self) {
165
173
  RA_BUFFER *buf;
166
174
  Data_Get_Struct(self, RA_BUFFER, buf);
167
- return INT2FIX(buf->real_size);
175
+ return LONG2FIX(buf->real_size);
168
176
  }
169
177
 
170
178
  /*:nodoc:*/
@@ -172,7 +180,7 @@ static VALUE ra_buffer_real_size_set(VALUE self, VALUE real_size) {
172
180
  RA_BUFFER *buf;
173
181
  Data_Get_Struct(self, RA_BUFFER, buf);
174
182
 
175
- int new_real_size = FIX2INT(real_size);
183
+ long new_real_size = FIX2LONG(real_size);
176
184
  if(new_real_size > buf->size) {
177
185
  buf->real_size = buf->size;
178
186
  } else if(new_real_size < 0) {
@@ -181,7 +189,7 @@ static VALUE ra_buffer_real_size_set(VALUE self, VALUE real_size) {
181
189
  buf->real_size = new_real_size;
182
190
  }
183
191
 
184
- return INT2FIX(buf->real_size);
192
+ return LONG2FIX(buf->real_size);
185
193
  }
186
194
 
187
195
  /*
@@ -219,15 +227,15 @@ static VALUE ra_buffer_aref(VALUE self, VALUE index) {
219
227
  Data_Get_Struct(self, RA_BUFFER, buf);
220
228
 
221
229
  // Bounds check
222
- int f = FIX2INT(index);
230
+ long f = FIX2LONG(index);
223
231
  if(f < 0 || f >= buf->real_size) return Qnil;
224
- int i = f * buf->channels;
232
+ long i = f * buf->channels;
225
233
 
226
234
  if(buf->channels == 1) {
227
235
  return ra_buffer_index_get(buf, i);
228
236
  } else {
229
237
  VALUE frame = rb_ary_new();
230
- int j;
238
+ long j;
231
239
  for(j = 0; j < buf->channels; j++) {
232
240
  rb_ary_push(frame, ra_buffer_index_get(buf, i+j));
233
241
  }
@@ -235,7 +243,7 @@ static VALUE ra_buffer_aref(VALUE self, VALUE index) {
235
243
  }
236
244
  }
237
245
 
238
- static VALUE ra_buffer_index_get(RA_BUFFER *buf, int i) {
246
+ static VALUE ra_buffer_index_get(RA_BUFFER *buf, long i) {
239
247
  switch(buf->type) {
240
248
  case RA_BUFFER_TYPE_SHORT: return INT2FIX((int)((short*)buf->data)[i]);
241
249
  case RA_BUFFER_TYPE_INT: return INT2FIX(((int*)buf->data)[i]);
@@ -263,9 +271,9 @@ static VALUE ra_buffer_aset(VALUE self, VALUE index, VALUE val) {
263
271
  Data_Get_Struct(self, RA_BUFFER, buf);
264
272
 
265
273
  // Bounds check
266
- int f = FIX2INT(index);
274
+ long f = FIX2LONG(index);
267
275
  if(f < 0 || f >= buf->size) rb_raise(eRubyAudioError, "setting frame out of bounds");
268
- int i = f * buf->channels;
276
+ long i = f * buf->channels;
269
277
 
270
278
  // Set data
271
279
  if(buf->channels == 1) {
@@ -275,7 +283,7 @@ static VALUE ra_buffer_aset(VALUE self, VALUE index, VALUE val) {
275
283
  long length = RARRAY_LEN(val);
276
284
  if(length != buf->channels) rb_raise(eRubyAudioError, "array length must match channel count");
277
285
 
278
- int j;
286
+ long j;
279
287
  for(j = 0; j < length; j++) {
280
288
  ra_buffer_index_set(buf, i+j, rb_ary_entry(val, j));
281
289
  }
@@ -289,7 +297,7 @@ static VALUE ra_buffer_aset(VALUE self, VALUE index, VALUE val) {
289
297
  return val;
290
298
  }
291
299
 
292
- static void ra_buffer_index_set(RA_BUFFER *buf, int i, VALUE val) {
300
+ static void ra_buffer_index_set(RA_BUFFER *buf, long i, VALUE val) {
293
301
  switch(buf->type) {
294
302
  case RA_BUFFER_TYPE_SHORT:
295
303
  ((short*)buf->data)[i] = (short)FIX2INT(val);
data/ext/ra_buffer.h CHANGED
@@ -13,8 +13,8 @@ typedef enum {
13
13
  typedef struct {
14
14
  BUFFER_TYPE type;
15
15
  void *data;
16
- int size;
17
- int real_size;
16
+ long size;
17
+ long real_size;
18
18
  int channels;
19
19
  } RA_BUFFER;
20
20
 
@@ -33,8 +33,8 @@ static VALUE ra_buffer_real_size(VALUE self);
33
33
  static VALUE ra_buffer_real_size_set(VALUE self, VALUE new_real_size);
34
34
  static VALUE ra_buffer_type(VALUE self);
35
35
  static VALUE ra_buffer_aref(VALUE self, VALUE index);
36
- static VALUE ra_buffer_index_get(RA_BUFFER *buf, int i);
36
+ static VALUE ra_buffer_index_get(RA_BUFFER *buf, long i);
37
37
  static VALUE ra_buffer_aset(VALUE self, VALUE index, VALUE val);
38
- static void ra_buffer_index_set(RA_BUFFER *buf, int i, VALUE val);
38
+ static void ra_buffer_index_set(RA_BUFFER *buf, long i, VALUE val);
39
39
 
40
40
  #endif // #ifndef RA_BUFFER_H
data/ext/ra_sound.c CHANGED
@@ -437,7 +437,7 @@ static VALUE ra_sound_write(VALUE self, VALUE buf) {
437
437
  }
438
438
 
439
439
  // Write data
440
- sf_count_t written;
440
+ sf_count_t written = 0;
441
441
  switch(b->type) {
442
442
  case RA_BUFFER_TYPE_SHORT:
443
443
  written = sf_writef_short(snd->snd, b->data, b->real_size);
@@ -49,7 +49,7 @@ module RubyAudio
49
49
 
50
50
  private
51
51
  def calculate_format
52
- RubyAudio.constants.grep(/FORMAT_/).each do |f|
52
+ RubyAudio.constants.grep(/FORMAT_/).map(&:to_s).each do |f|
53
53
  next if f.include?('MASK') # Skip mask constants
54
54
 
55
55
  val = RubyAudio.const_get(f)
data/spec/buffer_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/spec_helper.rb'
1
+ require "spec_helper.rb"
2
2
 
3
3
  describe RubyAudio::Buffer do
4
4
  it "should initialize properly" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/spec_helper.rb'
1
+ require "spec_helper.rb"
2
2
 
3
3
  describe RubyAudio::SoundInfo do
4
4
  it "should initialize with default properties" do
data/spec/sound_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/spec_helper.rb'
1
+ require "spec_helper.rb"
2
2
 
3
3
  describe RubyAudio::Sound do
4
4
  MONO_TEST_WAV = File.dirname(__FILE__)+'/data/what.wav'
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-audio
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 7
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
- - 3
8
+ - 4
8
9
  - 0
9
- version: 1.3.0
10
+ version: 1.4.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Stephen Augenstein
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-29 00:00:00 -04:00
18
+ date: 2010-12-23 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -67,23 +68,27 @@ rdoc_options:
67
68
  require_paths:
68
69
  - lib
69
70
  required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
70
72
  requirements:
71
73
  - - ">="
72
74
  - !ruby/object:Gem::Version
75
+ hash: 3
73
76
  segments:
74
77
  - 0
75
78
  version: "0"
76
79
  required_rubygems_version: !ruby/object:Gem::Requirement
80
+ none: false
77
81
  requirements:
78
82
  - - ">="
79
83
  - !ruby/object:Gem::Version
84
+ hash: 3
80
85
  segments:
81
86
  - 0
82
87
  version: "0"
83
88
  requirements:
84
89
  - libsndfile (http://www.mega-nerd.com/libsndfile/)
85
90
  rubyforge_project:
86
- rubygems_version: 1.3.6
91
+ rubygems_version: 1.3.7
87
92
  signing_key:
88
93
  specification_version: 3
89
94
  summary: ruby-audio wraps around libsndfile to provide simplified sound reading and writing support to ruby programs