waveinfo 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74a2aa7c0afcd31cf13309b02c971a3ec1facff6
4
- data.tar.gz: 93a26151a2c6c9c1d0cf9fccc28ea02ab9ffe0b3
3
+ metadata.gz: 3992b0d0d7399d87f208ba8f945ccc5222d17e42
4
+ data.tar.gz: a2bfac5fb6489d62c3e8d62a18d884adab5e660b
5
5
  SHA512:
6
- metadata.gz: 386634ff49009b618160c000d993a09307ef92f5c23b9402e0039fc6c28951c5fcae968cc5a3828d8093ab3369fa99dd0c98d8930afc057f33a9b3e76b326ec5
7
- data.tar.gz: af7208c56fe6a80876ac86fa8a605747ae8e393750fbce281f405be4122cd34e8149b5b8831f0e3218a98f66cdec89fe642132448db0c8e8d4a4f91f5aa52919
6
+ metadata.gz: 4e94a35da99220464a0aedab63733eaa2d3c080de0ef22ada7fcd5e91f2d06e1b44fcb1d94c573fc6b04e1e1cfb36326f4af6df6ba82b71d2131cf477c54fc9f
7
+ data.tar.gz: bb01a4c1eeef8a5e7031f4591c95687874c9ef70470d1b8913e9a0d191f61e3041fce4d6fc288f05d323215de0789c35226df5b86b28c9ebbce7a792ab6d2403
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2009-2014 Nicholas J Humfrey
3
+ Copyright (c) 2009-2015 Nicholas J Humfrey
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -26,21 +26,6 @@ Synopsis
26
26
  puts "Duration: #{wave.duration} secs"
27
27
 
28
28
 
29
- TODO
30
- ----
31
-
32
- * Add support for the extensible format which uses GUIDs
33
- * Inplement more validity checks
34
- - file is shorter than reported chunk size
35
- - file is longer than reported chunk size
36
- * Implement more chunk types
37
- - bext - Broadcast Wave Extention
38
- - mext - MPEG audio extension chunk
39
- - DISP - Title
40
- - cart - CartChunk/aes46-2002
41
- - LIST
42
- * Test against more weird Wave files
43
-
44
29
 
45
30
  Resources
46
31
  ---------
@@ -60,6 +45,6 @@ Contact
60
45
  -------
61
46
 
62
47
  * Author: Nicholas J Humfrey
63
- * Email: njh@aelius.com
64
- * Home Page: http://www.aelius.com/njh/
48
+ * Twitter: [@njh](https://twitter.com/njh)
49
+ * Home Page: https://www.aelius.com/njh/
65
50
 
@@ -11,7 +11,7 @@ end
11
11
  ARGV.each do |arg|
12
12
  wave = WaveInfo.new(arg)
13
13
  puts "Filename : #{wave.filename}"
14
- puts "Audio Format : #{wave.audio_format} " +
14
+ puts "Audio Format : #{wave.audio_format} " +
15
15
  sprintf("(0x%2.2x)",wave.audio_format_id)
16
16
  puts "Duration : " + sprintf("%2.2fs", wave.duration)
17
17
  puts "Channels : #{wave.channels}"
@@ -8,10 +8,10 @@ class WaveInfo
8
8
  end
9
9
  self.debug = true
10
10
 
11
- # Create a new WaveInfo object to get information and metadata about a
11
+ # Create a new WaveInfo object to get information and metadata about a
12
12
  # Wave file (.wav). 'file' can either be a filename or an IO object.
13
13
  def initialize(file)
14
-
14
+
15
15
  # Set default values
16
16
  @audio_format_id = 0
17
17
  @bits_per_sample = nil
@@ -21,7 +21,7 @@ class WaveInfo
21
21
  @data_size = nil
22
22
  @sample_rate = nil
23
23
  @samples = nil
24
-
24
+
25
25
  # What was passed in to us?
26
26
  if file.is_a?(String)
27
27
  @io = File.new(file, 'rb')
@@ -34,12 +34,12 @@ class WaveInfo
34
34
  read_headers
35
35
  end
36
36
  end
37
-
37
+
38
38
  # Return the name of the input file.
39
39
  def filename
40
40
  File.basename(@filepath)
41
41
  end
42
-
42
+
43
43
  # Get the identifier of the audio codec (for example PCM would be 1).
44
44
  def audio_format_id
45
45
  @audio_format_id
@@ -74,7 +74,7 @@ class WaveInfo
74
74
  sprintf("Unknown (0x%2.2x)",@audio_format_id)
75
75
  end
76
76
  end
77
-
77
+
78
78
  # Get the number of channels.
79
79
  def channels
80
80
  @channels
@@ -99,39 +99,58 @@ class WaveInfo
99
99
  def bits_per_sample
100
100
  @bits_per_sample
101
101
  end
102
-
102
+
103
103
  # Get the total number of samples.
104
104
  def samples
105
105
  if @samples
106
106
  @samples
107
- else
108
- @data_size / @block_align
107
+ elsif @block_align.to_f.nonzero?
108
+ @data_size && @block_align ? @data_size / @block_align : 0.0
109
+ else
110
+ 0.0
109
111
  end
110
112
  end
111
-
113
+
112
114
  # Get the length of the audio data (in bytes).
113
115
  def size
114
116
  @data_size
115
117
  end
116
-
118
+
117
119
  # Get the duration of the audio (in seconds).
118
120
  def duration
119
- samples.to_f / sample_rate.to_f
121
+ if sample_rate.to_f.nonzero?
122
+ sample_rate ? samples.to_f / sample_rate.to_f : 0.0
123
+ else
124
+ 0.0
125
+ end
120
126
  end
121
127
 
128
+
122
129
  private
123
130
 
124
131
  def read_headers
125
132
  # Read in the chunk header
126
- chunk_id = read_fourchar
127
- raise FileFormatError.new("Chunk id is not 'RIFF' or 'RF64'") if chunk_id != 'RIFF' && chunk_id != 'RF64'
128
- chunk_size = read_longint
129
- chunk_format = read_fourchar
130
- raise FileFormatError.new("Chunk format is not 'WAVE'") if chunk_format != 'WAVE'
131
-
133
+ @chunk_id = read_fourchar
134
+ @chunk_size = read_longint
135
+ @chunk_format = read_fourchar
136
+ raise FileFormatError.new("Chunk format is not 'WAVE'") unless @chunk_format == 'WAVE'
137
+
138
+ if @chunk_id == 'RIFF'
139
+ position = 0xC
140
+ elsif @chunk_id == 'RF64'
141
+ # Next sub-chunk *has* to be a 'ds64'
142
+ subchunk_size = read_ds64_chunk
143
+ position = 0xC + subchunk_size
144
+ else
145
+ raise FileFormatError.new("Primary chunk id is not 'RIFF' or 'RF64'")
146
+ end
147
+
148
+ read_subchunks(position)
149
+ end
150
+
151
+ def read_subchunks(position)
132
152
  # Read in each of the sub-chunks
133
- position = 0x0C
134
- while(chunk_size-position) > 0 do
153
+ while(@chunk_size - position) > 0 do
135
154
  subchunk_id = read_fourchar
136
155
  subchunk_size = read_longint
137
156
  case subchunk_id
@@ -140,9 +159,15 @@ class WaveInfo
140
159
  when 'fact'
141
160
  read_fact_chunk(subchunk_size)
142
161
  when 'data'
162
+ unless subchunk_size == 0xFFFFFFFF
143
163
  @data_size = subchunk_size
164
+ end
144
165
  # Skip over the wave data
145
- @io.seek(subchunk_size,IO::SEEK_CUR)
166
+ @io.seek(@data_size,IO::SEEK_CUR)
167
+ when nil
168
+ # Give up if read fails
169
+ $stderr.puts "Warning: read error before reaching end of file" if WaveInfo.debug
170
+ break
146
171
  else
147
172
  pos = sprintf("0x%x", position)
148
173
  $stderr.puts "Warning: unsupported sub-chunk at #{pos}: #{subchunk_id}" if WaveInfo.debug
@@ -150,7 +175,7 @@ class WaveInfo
150
175
  end
151
176
  position += subchunk_size + 8
152
177
  end
153
-
178
+
154
179
  end
155
180
 
156
181
  def read_fmt_chunk(size)
@@ -160,35 +185,58 @@ class WaveInfo
160
185
  @byte_rate = read_longint
161
186
  @block_align = read_shortint
162
187
  @bits_per_sample = read_shortint
163
-
188
+
164
189
  # Skip any extra parameters
165
190
  @io.seek(size-16,IO::SEEK_CUR) if size > 16
166
191
  end
167
-
192
+
168
193
  def read_fact_chunk(size)
169
194
  # Read in the number of samples
170
- @samples = read_longint
195
+ sample_count = read_longint
196
+ unless sample_count == 0xFFFFFFFF
197
+ @samples = sample_count
198
+ end
171
199
 
172
200
  # Skip any extra data
173
201
  @io.seek(size-4,IO::SEEK_CUR) if size > 4
174
202
  end
175
-
203
+
204
+ def read_ds64_chunk
205
+ subchunk_id = read_fourchar
206
+ raise FileFormatError.new("First sub-chunk of RF64 file is not 'ds64'") unless subchunk_id == 'ds64'
207
+ subchunk_size = read_longint
208
+
209
+ riff_size_low = read_longint
210
+ riff_size_high = read_longint
211
+ data_size_low = read_longint
212
+ data_size_high = read_longint
213
+ sample_count_low = read_longint
214
+ sample_count_high = read_longint
215
+
216
+ @data_size = (data_size_high << 32) + data_size_low
217
+ @samples = (sample_count_high << 32) + sample_count_low
218
+ @chunk_size = (riff_size_high << 32) + riff_size_low
219
+
220
+ # Skip any extra data
221
+ @io.seek(subchunk_size-24,IO::SEEK_CUR) if subchunk_size > 24
222
+ end
223
+
176
224
  def read_fourchar
177
225
  @io.read(4)
178
226
  end
179
-
227
+
180
228
  def read_longint
181
229
  bytes = @io.read(4)
182
230
  bytes ? bytes.unpack('V').first : nil
183
231
  end
184
-
232
+
185
233
  def read_shortint
186
234
  bytes = @io.read(2)
187
235
  bytes ? bytes.unpack('v').first : nil
188
236
  end
189
-
237
+
190
238
  # Exception raised if there is a problem parsing the Wave file
191
239
  class FileFormatError < StandardError
192
240
  end
193
-
241
+
194
242
  end
@@ -1,3 +1,3 @@
1
1
  class WaveInfo
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -31,19 +31,19 @@ describe WaveInfo do
31
31
  it "should get the byte rate right" do
32
32
  expect(@wav.byte_rate).to eq(22050)
33
33
  end
34
-
34
+
35
35
  it "should get the block align value right" do
36
36
  expect(@wav.block_align).to eq(2)
37
37
  end
38
-
38
+
39
39
  it "should get the bits per sample right" do
40
40
  expect(@wav.bits_per_sample).to eq(16)
41
41
  end
42
-
42
+
43
43
  it "should get the audio length in bytes right" do
44
44
  expect(@wav.size).to eq(8820)
45
45
  end
46
-
46
+
47
47
  it "should get the number of samples right" do
48
48
  expect(@wav.samples).to eq(4410)
49
49
  end
@@ -51,7 +51,7 @@ describe WaveInfo do
51
51
  it "should get the audio duration right" do
52
52
  expect(@wav.duration).to eq(0.4)
53
53
  end
54
-
54
+
55
55
  it "should know the name of the file read from" do
56
56
  expect(@wav.filename).to eq(File.basename(@filepath))
57
57
  end
@@ -82,19 +82,19 @@ describe WaveInfo do
82
82
  it "should get the byte rate right" do
83
83
  expect(@wav.byte_rate).to eq(1625)
84
84
  end
85
-
85
+
86
86
  it "should get the block align value right" do
87
87
  expect(@wav.block_align).to eq(65)
88
88
  end
89
-
89
+
90
90
  it "should get the bits per sample right" do
91
91
  expect(@wav.bits_per_sample).to eq(0)
92
92
  end
93
-
93
+
94
94
  it "should get the audio length in bytes right" do
95
95
  expect(@wav.size).to eq(650)
96
96
  end
97
-
97
+
98
98
  it "should get the number of samples right" do
99
99
  expect(@wav.samples).to eq(3200)
100
100
  end
@@ -102,7 +102,7 @@ describe WaveInfo do
102
102
  it "should get the audio duration right" do
103
103
  expect(@wav.duration).to eq(0.4)
104
104
  end
105
-
105
+
106
106
  it "should know the name of the file read from" do
107
107
  expect(@wav.filename).to eq(File.basename(@filepath))
108
108
  end
@@ -133,19 +133,19 @@ describe WaveInfo do
133
133
  it "should get the byte rate right" do
134
134
  expect(@wav.byte_rate).to eq(176400)
135
135
  end
136
-
136
+
137
137
  it "should get the block align value right" do
138
138
  expect(@wav.block_align).to eq(4)
139
139
  end
140
-
140
+
141
141
  it "should get the bits per sample right" do
142
142
  expect(@wav.bits_per_sample).to eq(16)
143
143
  end
144
-
144
+
145
145
  it "should get the audio length in bytes right" do
146
146
  expect(@wav.size).to eq(100000)
147
147
  end
148
-
148
+
149
149
  it "should get the number of samples right" do
150
150
  expect(@wav.samples).to eq(25000)
151
151
  end
@@ -153,7 +153,7 @@ describe WaveInfo do
153
153
  it "should get the audio duration right" do
154
154
  expect((@wav.duration * 1000).to_i).to eq(566)
155
155
  end
156
-
156
+
157
157
  it "should know the name of the file read from" do
158
158
  expect(@wav.filename).to eq(File.basename(@filepath))
159
159
  end
@@ -184,19 +184,19 @@ describe WaveInfo do
184
184
  it "should get the byte rate right" do
185
185
  expect(@wav.byte_rate).to eq(5784)
186
186
  end
187
-
187
+
188
188
  it "should get the block align value right" do
189
189
  expect(@wav.block_align).to eq(128)
190
190
  end
191
-
191
+
192
192
  it "should get the bits per sample right" do
193
193
  expect(@wav.bits_per_sample).to eq(4)
194
194
  end
195
-
195
+
196
196
  it "should get the audio length in bytes right" do
197
197
  expect(@wav.size).to eq(2432)
198
198
  end
199
-
199
+
200
200
  it "should get the number of samples right" do
201
201
  expect(@wav.samples).to eq(4410)
202
202
  end
@@ -204,7 +204,7 @@ describe WaveInfo do
204
204
  it "should get the audio duration right" do
205
205
  expect(@wav.duration).to eq(0.4)
206
206
  end
207
-
207
+
208
208
  it "should know the name of the file read from" do
209
209
  expect(@wav.filename).to eq(File.basename(@filepath))
210
210
  end
@@ -235,19 +235,19 @@ describe WaveInfo do
235
235
  it "should get the byte rate right" do
236
236
  expect(@wav.byte_rate).to eq(11025)
237
237
  end
238
-
238
+
239
239
  it "should get the block align value right" do
240
240
  expect(@wav.block_align).to eq(1)
241
241
  end
242
-
242
+
243
243
  it "should get the bits per sample right" do
244
244
  expect(@wav.bits_per_sample).to eq(8)
245
245
  end
246
-
246
+
247
247
  it "should get the audio length in bytes right" do
248
248
  expect(@wav.size).to eq(4410)
249
249
  end
250
-
250
+
251
251
  it "should get the number of samples right" do
252
252
  expect(@wav.samples).to eq(4410)
253
253
  end
@@ -255,7 +255,7 @@ describe WaveInfo do
255
255
  it "should get the audio duration right" do
256
256
  expect(@wav.duration).to eq(0.4)
257
257
  end
258
-
258
+
259
259
  it "should know the name of the file read from" do
260
260
  expect(@wav.filename).to eq(File.basename(@filepath))
261
261
  end
@@ -286,19 +286,19 @@ describe WaveInfo do
286
286
  it "should get the byte rate right" do
287
287
  expect(@wav.byte_rate).to eq(11025)
288
288
  end
289
-
289
+
290
290
  it "should get the block align value right" do
291
291
  expect(@wav.block_align).to eq(1)
292
292
  end
293
-
293
+
294
294
  it "should get the bits per sample right" do
295
295
  expect(@wav.bits_per_sample).to eq(8)
296
296
  end
297
-
297
+
298
298
  it "should get the audio length in bytes right" do
299
299
  expect(@wav.size).to eq(4410)
300
300
  end
301
-
301
+
302
302
  it "should get the number of samples right" do
303
303
  expect(@wav.samples).to eq(4410)
304
304
  end
@@ -306,7 +306,7 @@ describe WaveInfo do
306
306
  it "should get the audio duration right" do
307
307
  expect(@wav.duration).to eq(0.4)
308
308
  end
309
-
309
+
310
310
  it "should know the name of the file read from" do
311
311
  expect(@wav.filename).to eq(File.basename(@filepath))
312
312
  end
@@ -337,19 +337,19 @@ describe WaveInfo do
337
337
  it "should get the byte rate right" do
338
338
  expect(@wav.byte_rate).to eq(11025)
339
339
  end
340
-
340
+
341
341
  it "should get the block align value right" do
342
342
  expect(@wav.block_align).to eq(1)
343
343
  end
344
-
344
+
345
345
  it "should get the bits per sample right" do
346
346
  expect(@wav.bits_per_sample).to eq(8)
347
347
  end
348
-
348
+
349
349
  it "should get the audio length in bytes right" do
350
350
  expect(@wav.size).to eq(4410)
351
351
  end
352
-
352
+
353
353
  it "should get the number of samples right" do
354
354
  expect(@wav.samples).to eq(4410)
355
355
  end
@@ -357,7 +357,7 @@ describe WaveInfo do
357
357
  it "should get the audio duration right" do
358
358
  expect(@wav.duration).to eq(0.4)
359
359
  end
360
-
360
+
361
361
  it "should know the name of the file read from" do
362
362
  expect(@wav.filename).to eq(File.basename(@filepath))
363
363
  end
@@ -388,18 +388,69 @@ describe WaveInfo do
388
388
  it "should get the byte rate right" do
389
389
  expect(@wav.byte_rate).to eq(5589)
390
390
  end
391
-
391
+
392
392
  it "should get the block align value right" do
393
393
  expect(@wav.block_align).to eq(256)
394
394
  end
395
-
395
+
396
396
  it "should get the bits per sample right" do
397
397
  expect(@wav.bits_per_sample).to eq(4)
398
398
  end
399
-
399
+
400
400
  it "should get the audio length in bytes right" do
401
401
  expect(@wav.size).to eq(2304)
402
402
  end
403
+
404
+ it "should get the number of samples right" do
405
+ expect(@wav.samples).to eq(4410)
406
+ end
407
+
408
+ it "should get the audio duration right" do
409
+ expect(@wav.duration).to eq(0.4)
410
+ end
411
+
412
+ it "should know the name of the file read from" do
413
+ expect(@wav.filename).to eq(File.basename(@filepath))
414
+ end
415
+ end
416
+
417
+ describe "parsing a Mono 11kHz PCM file in the RF64 format" do
418
+ before :each do
419
+ @filepath = sample_path('sine_11k_mono_16bit_pcm_rf64')
420
+ @wav = WaveInfo.new( @filepath )
421
+ end
422
+
423
+ it "should get the audio format id right" do
424
+ expect(@wav.audio_format_id).to eq(65534)
425
+ end
426
+
427
+ it "should get the audio format name right" do
428
+ expect(@wav.audio_format).to eq('Extensible wave format')
429
+ end
430
+
431
+ it "should get the number of channels right" do
432
+ expect(@wav.channels).to eq(1)
433
+ end
434
+
435
+ it "should get the sample rate right" do
436
+ expect(@wav.sample_rate).to eq(11025)
437
+ end
438
+
439
+ it "should get the byte rate right" do
440
+ expect(@wav.byte_rate).to eq(22050)
441
+ end
442
+
443
+ it "should get the block align value right" do
444
+ expect(@wav.block_align).to eq(2)
445
+ end
446
+
447
+ it "should get the bits per sample right" do
448
+ expect(@wav.bits_per_sample).to eq(16)
449
+ end
450
+
451
+ it "should get the audio length in bytes right" do
452
+ expect(@wav.size).to eq(8820)
453
+ end
403
454
 
404
455
  it "should get the number of samples right" do
405
456
  expect(@wav.samples).to eq(4410)
@@ -414,7 +465,7 @@ describe WaveInfo do
414
465
  end
415
466
  end
416
467
 
417
- describe "parsing a Stereo 96kHz 24bit RF64" do
468
+ describe "parsing a truncated Stereo 96kHz 24bit RF64" do
418
469
  before :each do
419
470
  @filepath = sample_path('empty_96k_stereo_24bit_rf64')
420
471
  @wav = WaveInfo.new( @filepath )
@@ -449,15 +500,15 @@ describe WaveInfo do
449
500
  end
450
501
 
451
502
  it "should get the audio length in bytes right" do
452
- expect(@wav.size).to eq(4294967295)
503
+ expect(@wav.size).to eq(4298665680)
453
504
  end
454
505
 
455
506
  it "should get the number of samples right" do
456
- expect(@wav.samples).to eq(715827882)
507
+ expect(@wav.samples).to eq(716444280)
457
508
  end
458
509
 
459
510
  it "should get the audio duration right" do
460
- expect(@wav.duration).to eq(7456.5404375)
511
+ expect(@wav.duration).to eq(7462.96125)
461
512
  end
462
513
 
463
514
  it "should know the name of the file read from" do
@@ -480,31 +531,50 @@ describe WaveInfo do
480
531
  data = StringIO.new("RIFF\4\0\0\0WAVE")
481
532
  expect { WaveInfo.new( data ) }.not_to raise_error
482
533
  end
483
-
534
+
484
535
  it "should set the audio format name to Unknown for an unknown audio codec" do
485
536
  data = StringIO.new("RIFF\x14\0\0\0WAVEfmt \x0a\0\0\0\xff\x00\x02\0\0\0\0\0\0\0\0\0\0\0\0\0")
486
537
  expect(WaveInfo.new( data ).audio_format).to eq('Unknown (0xff)')
487
538
  end
539
+
540
+ it "duration should be zero if WAVE file is valid but has no sub-chunks" do
541
+ data = StringIO.new("RIFF\4\0\0\0WAVE")
542
+ expect(WaveInfo.new( data ).duration).to eq(0)
543
+ end
544
+
545
+ it "samples should be zero if WAVE file is valid but has no sub-chunks" do
546
+ data = StringIO.new("RIFF\4\0\0\0WAVE")
547
+ expect(WaveInfo.new( data ).samples).to eq(0)
548
+ end
549
+
488
550
  end
489
551
 
490
- describe "outputs stderr when debug is true" do
491
- it "should default to true" do
492
- expect($stderr).to receive(:puts).with("Warning: unsupported sub-chunk at 0xc: ds64")
493
- @filepath = sample_path('empty_96k_stereo_24bit_rf64')
552
+ describe "WaveInfo.debug" do
553
+ before :each do
554
+ $realstderr = $stderr
555
+ $stderr = StringIO.new
556
+ @filepath = sample_path('unsupported_subchunk')
557
+ @wav = WaveInfo.new( @filepath )
558
+ end
559
+
560
+ after :each do
561
+ $stderr = $realstderr unless $realstderr.nil?
562
+ end
563
+
564
+ it "should default to outputting to stderr" do
565
+ expect($stderr).to receive(:puts).with("Warning: unsupported sub-chunk at 0x22a0: XYZZ")
494
566
  @wav = WaveInfo.new( @filepath )
495
567
  end
496
568
 
497
569
  it "should output to stderr when true" do
498
570
  WaveInfo.debug = true
499
- expect($stderr).to receive(:puts).with("Warning: unsupported sub-chunk at 0xc: ds64")
500
- @filepath = sample_path('empty_96k_stereo_24bit_rf64')
571
+ expect($stderr).to receive(:puts).with("Warning: unsupported sub-chunk at 0x22a0: XYZZ")
501
572
  @wav = WaveInfo.new( @filepath )
502
573
  end
503
574
 
504
575
  it "should not output to stderr when false" do
505
576
  WaveInfo.debug = false
506
- expect($stderr).to_not receive(:puts).with("Warning: unsupported sub-chunk at 0xc: ds64")
507
- @filepath = sample_path('empty_96k_stereo_24bit_rf64')
577
+ expect($stderr).to_not receive(:puts).with("Warning: unsupported sub-chunk at 0x22a0: XYZZ")
508
578
  @wav = WaveInfo.new( @filepath )
509
579
  end
510
580
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waveinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas J Humfrey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-09 00:00:00.000000000 Z
11
+ date: 2018-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,73 +16,73 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.0
19
+ version: '1.16'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.0
26
+ version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.10.0
33
+ version: 10.2.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.10.0
40
+ version: 10.2.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: yard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.8.0
47
+ version: 0.9.11
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.0
54
+ version: 0.9.11
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 3.2.0
61
+ version: 3.5.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 3.2.0
68
+ version: 3.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.9.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.9.2
83
83
  description: waveinfo is a pure-ruby gem to get the information from the headers of
84
84
  Wave (.wav) files.
85
- email: njh@aelius.com
85
+ email:
86
86
  executables:
87
87
  - waveinfo
88
88
  extensions: []
@@ -114,10 +114,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  requirements: []
116
116
  rubyforge_project: waveinfo
117
- rubygems_version: 2.2.2
117
+ rubygems_version: 2.6.14
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Pure-ruby gem to get the information from the headers of Wave (.wav) files.
121
121
  test_files:
122
122
  - spec/waveinfo_spec.rb
123
- has_rdoc: