nu_wav 0.3.3 → 0.3.4
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/VERSION +1 -1
- data/lib/nu_wav.rb +16 -8
- data/nu_wav.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.4
|
data/lib/nu_wav.rb
CHANGED
@@ -8,6 +8,7 @@ require 'rubygems'
|
|
8
8
|
require 'mp3info'
|
9
9
|
require 'date'
|
10
10
|
require 'tempfile'
|
11
|
+
require 'fileutils'
|
11
12
|
|
12
13
|
module NuWav
|
13
14
|
|
@@ -43,9 +44,7 @@ module NuWav
|
|
43
44
|
attr_accessor :header, :chunks
|
44
45
|
|
45
46
|
def self.parse(wave_file)
|
46
|
-
|
47
|
-
wf.parse(wave_file)
|
48
|
-
wf
|
47
|
+
NuWav::WaveFile.new.parse(wave_file)
|
49
48
|
end
|
50
49
|
|
51
50
|
def initialize
|
@@ -54,6 +53,8 @@ module NuWav
|
|
54
53
|
|
55
54
|
def parse(wave_file)
|
56
55
|
NuWav::WaveFile.log "Processing wave file #{wave_file.inspect}...."
|
56
|
+
wave_file_size = File.size(wave_file)
|
57
|
+
|
57
58
|
File.open(wave_file, File::RDWR) do |f|
|
58
59
|
|
59
60
|
#only for windows, make sure we are operating in binary mode
|
@@ -64,8 +65,10 @@ module NuWav
|
|
64
65
|
riff, riff_length = read_chunk_header(f)
|
65
66
|
NuWav::WaveFile.log "riff: #{riff}"
|
66
67
|
NuWav::WaveFile.log "riff_length: #{riff_length}"
|
68
|
+
NuWav::WaveFile.log "wave_file_size: #{wave_file_size}"
|
69
|
+
|
67
70
|
raise NotRIFFFormat unless riff == 'RIFF'
|
68
|
-
riff_end = f.tell + riff_length
|
71
|
+
riff_end = [f.tell + riff_length, wave_file_size].min
|
69
72
|
|
70
73
|
riff_type = f.read(4)
|
71
74
|
raise NotWAVEFormat unless riff_type == 'WAVE'
|
@@ -95,6 +98,7 @@ module NuWav
|
|
95
98
|
end
|
96
99
|
@chunks.each{|k,v| NuWav::WaveFile.log "#{k}: #{v}\n\n" unless k.to_s == 'data'}
|
97
100
|
NuWav::WaveFile.log "parse done"
|
101
|
+
self
|
98
102
|
end
|
99
103
|
|
100
104
|
def duration
|
@@ -272,7 +276,10 @@ module NuWav
|
|
272
276
|
|
273
277
|
def read_chunk_header(file)
|
274
278
|
hdr = file.read(8)
|
275
|
-
|
279
|
+
# puts "hdr: #{hdr}"
|
280
|
+
chunkName, chunkLen = hdr.unpack("A4V") rescue [nil, nil]
|
281
|
+
# puts "chunkName: '#{chunkName}', chunkLen: '#{chunkLen}'"
|
282
|
+
[chunkName, chunkLen]
|
276
283
|
end
|
277
284
|
|
278
285
|
def chunk_class(name)
|
@@ -335,7 +342,7 @@ module NuWav
|
|
335
342
|
end
|
336
343
|
|
337
344
|
def read_char(start, length=(@raw.length-start))
|
338
|
-
@raw[start..(start+length-1)]
|
345
|
+
(@raw[start..(start+length-1)] || '').strip
|
339
346
|
end
|
340
347
|
|
341
348
|
def write_dword(val)
|
@@ -350,6 +357,7 @@ module NuWav
|
|
350
357
|
|
351
358
|
def write_char(val, length=nil)
|
352
359
|
val ||= ''
|
360
|
+
val = val.to_s
|
353
361
|
length ||= val.length
|
354
362
|
# NuWav::WaveFile.log "length:#{length} val.length:#{val.length} val:#{val}"
|
355
363
|
padding = "\0" * [(length - val.length), 0].max
|
@@ -602,9 +610,9 @@ module NuWav
|
|
602
610
|
def self.new_from_file(file)
|
603
611
|
tmp_data = Tempfile.open('data_chunk')
|
604
612
|
tmp_data.binmode
|
605
|
-
|
613
|
+
FileUtils.cp(file.path, tmp_data.path)
|
606
614
|
tmp_data.rewind
|
607
|
-
self.new('data', File.size(
|
615
|
+
self.new('data', File.size(tmp_data.path).to_s, tmp_data)
|
608
616
|
end
|
609
617
|
|
610
618
|
def initialize(id=nil, size=nil, tmp_data_file=nil)
|
data/nu_wav.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{nu_wav}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["kookster"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2012-07-19}
|
13
13
|
s.description = %q{NuWav is a pure ruby audio WAV file parser and writer. It supports Broadcast Wave Format (BWF), inclluding MPEG audio data, and the public radio standard cart chunk.}
|
14
14
|
s.email = %q{andrew@beginsinwonder.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nu_wav
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 4
|
10
|
+
version: 0.3.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- kookster
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-07-19 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|