nu_wav 0.3.4 → 0.4.2
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 +15 -0
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE +2 -0
- data/Rakefile +2 -46
- data/lib/nu_wav.rb +5 -608
- data/lib/nu_wav/chunk.rb +331 -0
- data/lib/nu_wav/version.rb +3 -0
- data/lib/nu_wav/wave_file.rb +286 -0
- data/nu_wav.gemspec +20 -45
- data/test/files/test.mp2 +0 -0
- data/test/files/test_basic.wav +0 -0
- data/test/files/test_bwf.wav +0 -0
- data/test/test_nu_wav.rb +40 -25
- metadata +81 -64
- data/VERSION +0 -1
data/nu_wav.gemspec
CHANGED
@@ -1,50 +1,25 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'nu_wav/version'
|
5
5
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "nu_wav"
|
8
|
+
spec.version = NuWav::VERSION
|
9
|
+
spec.authors = ["Andrew Kuklewicz"]
|
10
|
+
spec.email = ["andrew@beginsinwonder.com"]
|
11
|
+
spec.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.}
|
12
|
+
spec.summary = %q{NuWav is a pure ruby audio WAV file parser and writer.}
|
13
|
+
spec.homepage = %q{http://github.com/kookster/nu_wav}
|
14
|
+
spec.license = "MIT"
|
9
15
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
s.email = %q{andrew@beginsinwonder.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
"LICENSE",
|
21
|
-
"README.rdoc",
|
22
|
-
"Rakefile",
|
23
|
-
"VERSION",
|
24
|
-
"lib/nu_wav.rb",
|
25
|
-
"nu_wav.gemspec",
|
26
|
-
"test/helper.rb",
|
27
|
-
"test/test_nu_wav.rb"
|
28
|
-
]
|
29
|
-
s.homepage = %q{http://github.com/kookster/nu_wav}
|
30
|
-
s.require_paths = ["lib"]
|
31
|
-
s.rubygems_version = %q{1.4.2}
|
32
|
-
s.summary = %q{NuWav is a pure ruby audio WAV file parser and writer.}
|
33
|
-
s.test_files = [
|
34
|
-
"test/helper.rb",
|
35
|
-
"test/test_nu_wav.rb"
|
36
|
-
]
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
37
20
|
|
38
|
-
|
39
|
-
s.specification_version = 3
|
21
|
+
spec.add_runtime_dependency "ruby-mp3info", ">= 0.6.13"
|
40
22
|
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
s.add_dependency(%q<ruby-mp3info>, [">= 0.6.13"])
|
45
|
-
end
|
46
|
-
else
|
47
|
-
s.add_dependency(%q<ruby-mp3info>, [">= 0.6.13"])
|
48
|
-
end
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
spec.add_development_dependency "rake"
|
49
25
|
end
|
50
|
-
|
data/test/files/test.mp2
ADDED
Binary file
|
Binary file
|
Binary file
|
data/test/test_nu_wav.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'nu_wav'
|
3
3
|
require 'tempfile'
|
4
|
-
require 'ftools'
|
5
4
|
|
6
5
|
class TestNuWav < Test::Unit::TestCase
|
7
6
|
include NuWav
|
8
7
|
|
9
8
|
def test_parse_wav
|
10
9
|
memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes
|
11
|
-
puts "begin test: #{memory_usage/1024} mb"
|
10
|
+
# puts "begin test: #{memory_usage/1024} mb"
|
12
11
|
w = WaveFile.parse(File.expand_path(File.dirname(__FILE__) + '/files/test_basic.wav'))
|
13
|
-
puts w
|
12
|
+
# puts w
|
14
13
|
assert_equal 4260240, w.header.size
|
15
14
|
|
16
15
|
assert_equal 2, w.chunks.size
|
@@ -25,24 +24,29 @@ class TestNuWav < Test::Unit::TestCase
|
|
25
24
|
|
26
25
|
data = w.chunks[:data]
|
27
26
|
assert_equal 4260204, data.size
|
28
|
-
|
27
|
+
|
28
|
+
File.delete('test_out.wav') rescue nil
|
29
29
|
w.to_file('test_out.wav')
|
30
|
+
assert File.exists?('test_out.wav')
|
31
|
+
assert_equal File.size('test_out.wav'), 4260250
|
32
|
+
|
30
33
|
memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes
|
31
|
-
puts "end of test: #{memory_usage/1024} mb"
|
34
|
+
# puts "end of test: #{memory_usage/1024} mb"
|
35
|
+
File.delete('test_out.wav')
|
32
36
|
end
|
33
37
|
|
34
38
|
def test_parse_wav_with_bwf_and_cart_chunk
|
35
39
|
memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes
|
36
|
-
puts "begin test: #{memory_usage/1024} mb"
|
40
|
+
# puts "begin test: #{memory_usage/1024} mb"
|
37
41
|
|
38
|
-
w = WaveFile.parse(File.expand_path(File.dirname(__FILE__) + '/files/
|
42
|
+
w = WaveFile.parse(File.expand_path(File.dirname(__FILE__) + '/files/test_bwf.wav'))
|
39
43
|
memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes
|
40
|
-
puts "after parse: #{memory_usage/1024} mb"
|
44
|
+
# puts "after parse: #{memory_usage/1024} mb"
|
41
45
|
|
42
46
|
assert_equal 6, w.chunks.size
|
43
47
|
|
44
48
|
# duration is calculated differently for mpeg and pcm
|
45
|
-
assert_equal
|
49
|
+
assert_equal 60, w.duration
|
46
50
|
|
47
51
|
# fmt
|
48
52
|
assert_equal 2, w.chunks[:fmt].number_of_channels
|
@@ -54,42 +58,53 @@ class TestNuWav < Test::Unit::TestCase
|
|
54
58
|
assert_equal 2, w.chunks[:fmt].head_layer
|
55
59
|
assert_equal 256000, w.chunks[:fmt].head_bit_rate
|
56
60
|
assert_equal 1, w.chunks[:fmt].head_mode
|
57
|
-
assert_equal
|
58
|
-
assert_equal
|
59
|
-
assert_equal
|
61
|
+
assert_equal 0, w.chunks[:fmt].head_mode_ext
|
62
|
+
assert_equal 1, w.chunks[:fmt].head_emphasis
|
63
|
+
assert_equal 30, w.chunks[:fmt].head_flags
|
60
64
|
|
61
65
|
# fact
|
62
|
-
assert_equal
|
66
|
+
assert_equal 2646144, w.chunks[:fact].samples_number
|
63
67
|
|
64
68
|
# mext
|
65
|
-
assert_equal
|
69
|
+
assert_equal 5, w.chunks[:mext].sound_information
|
66
70
|
assert_equal 835, w.chunks[:mext].frame_size
|
67
71
|
|
68
72
|
# bext
|
69
|
-
assert_equal "A=MPEG1L2,F=44100,B=256,M=
|
73
|
+
assert_equal "A=MPEG1L2,F=44100,B=256,M=stereo,T=PRX", unpad(w.chunks[:bext].coding_history)
|
70
74
|
|
71
75
|
# cart
|
72
76
|
assert_equal '0101', w.chunks[:cart].version
|
73
|
-
assert_equal
|
74
|
-
assert_equal
|
75
|
-
assert_equal '
|
76
|
-
assert_equal '
|
77
|
-
assert_equal '
|
78
|
-
assert_equal '
|
79
|
-
assert_equal '
|
80
|
-
assert_equal '
|
77
|
+
assert_equal "5: 415: Sound Opinions Show, 11/8/2013", unpad(w.chunks[:cart].title)
|
78
|
+
assert_equal "Sound Opinions", unpad(w.chunks[:cart].artist)
|
79
|
+
assert_equal '30014', unpad(w.chunks[:cart].cut_id)
|
80
|
+
assert_equal '2013/11/08', unpad(w.chunks[:cart].start_date)
|
81
|
+
assert_equal '00:00:00', unpad(w.chunks[:cart].start_time)
|
82
|
+
assert_equal '2013/11/14', unpad(w.chunks[:cart].end_date)
|
83
|
+
assert_equal '23:59:59', unpad(w.chunks[:cart].end_time)
|
84
|
+
assert_equal 'PRX', unpad(w.chunks[:cart].producer_app_id)
|
81
85
|
assert_equal '1.0', unpad(w.chunks[:cart].producer_app_version)
|
82
86
|
|
83
87
|
# data
|
84
|
-
assert_equal
|
88
|
+
assert_equal 1917995, w.chunks[:data].size
|
85
89
|
memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes
|
86
|
-
puts "end of test: #{memory_usage/1024} mb"
|
90
|
+
# puts "end of test: #{memory_usage/1024} mb"
|
87
91
|
end
|
88
92
|
|
89
93
|
def test_from_mpeg
|
90
94
|
w = WaveFile.from_mpeg(File.expand_path(File.dirname(__FILE__) + '/files/test.mp2'))
|
95
|
+
|
96
|
+
File.delete('test_from_mpeg.wav') rescue nil
|
91
97
|
w.to_file('test_from_mpeg.wav')
|
98
|
+
assert File.exists?('test_from_mpeg.wav')
|
99
|
+
assert_equal File.size('test_from_mpeg.wav'), 182522
|
100
|
+
File.delete('test_from_mpeg.wav')
|
101
|
+
|
102
|
+
|
103
|
+
File.delete('test_from_mpeg.mp2') rescue nil
|
92
104
|
w.write_data_file('test_from_mpeg.mp2')
|
105
|
+
assert File.exists?('test_from_mpeg.mp2')
|
106
|
+
assert_equal File.size('test_from_mpeg.mp2'), 179712
|
107
|
+
File.delete('test_from_mpeg.mp2')
|
93
108
|
end
|
94
109
|
|
95
110
|
def unpad(str)
|
metadata
CHANGED
@@ -1,91 +1,108 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: nu_wav
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 4
|
10
|
-
version: 0.3.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.2
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
13
|
-
-
|
6
|
+
authors:
|
7
|
+
- Andrew Kuklewicz
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-11-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
22
14
|
name: ruby-mp3info
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 29
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 6
|
33
|
-
- 13
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
34
19
|
version: 0.6.13
|
35
20
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.13
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: NuWav is a pure ruby audio WAV file parser and writer. It supports Broadcast
|
56
|
+
Wave Format (BWF), inclluding MPEG audio data, and the public radio standard cart
|
57
|
+
chunk.
|
58
|
+
email:
|
59
|
+
- andrew@beginsinwonder.com
|
39
60
|
executables: []
|
40
|
-
|
41
61
|
extensions: []
|
42
|
-
|
43
|
-
|
44
|
-
-
|
45
|
-
-
|
46
|
-
files:
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- .gitignore
|
65
|
+
- Gemfile
|
47
66
|
- LICENSE
|
48
67
|
- README.rdoc
|
49
68
|
- Rakefile
|
50
|
-
- VERSION
|
51
69
|
- lib/nu_wav.rb
|
70
|
+
- lib/nu_wav/chunk.rb
|
71
|
+
- lib/nu_wav/version.rb
|
72
|
+
- lib/nu_wav/wave_file.rb
|
52
73
|
- nu_wav.gemspec
|
74
|
+
- test/files/test.mp2
|
75
|
+
- test/files/test_basic.wav
|
76
|
+
- test/files/test_bwf.wav
|
53
77
|
- test/helper.rb
|
54
78
|
- test/test_nu_wav.rb
|
55
|
-
has_rdoc: true
|
56
79
|
homepage: http://github.com/kookster/nu_wav
|
57
|
-
licenses:
|
58
|
-
|
80
|
+
licenses:
|
81
|
+
- MIT
|
82
|
+
metadata: {}
|
59
83
|
post_install_message:
|
60
84
|
rdoc_options: []
|
61
|
-
|
62
|
-
require_paths:
|
85
|
+
require_paths:
|
63
86
|
- lib
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
hash: 3
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
version: "0"
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ! '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
82
97
|
requirements: []
|
83
|
-
|
84
98
|
rubyforge_project:
|
85
|
-
rubygems_version:
|
99
|
+
rubygems_version: 2.0.6
|
86
100
|
signing_key:
|
87
|
-
specification_version:
|
101
|
+
specification_version: 4
|
88
102
|
summary: NuWav is a pure ruby audio WAV file parser and writer.
|
89
|
-
test_files:
|
103
|
+
test_files:
|
104
|
+
- test/files/test.mp2
|
105
|
+
- test/files/test_basic.wav
|
106
|
+
- test/files/test_bwf.wav
|
90
107
|
- test/helper.rb
|
91
108
|
- test/test_nu_wav.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.3.4
|