audio_waveform-ruby 1.0.1 → 1.0.3
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 +4 -4
- data/.travis.yml +11 -0
- data/ChangeLog +13 -2
- data/Gemfile.lock +30 -19
- data/README.md +55 -32
- data/audio_waveform-ruby.gemspec +7 -6
- data/lib/audio_waveform/version.rb +1 -1
- data/spec/audio_waveform/version_spec.rb +1 -1
- data/spec/audio_waveform/waveform_data_file_spec.rb +88 -88
- metadata +32 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 254e16b5fdb1eba0590d9eac335b3fad7e36091b
|
|
4
|
+
data.tar.gz: 73c6fcb68b6fc9d05a729b84e3a6f56fe0233aea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c693633478c6dd42e293a163a497d3892400b9ae3a1f9a9b3a4569a9a1fafcd4b8f0c72a58b0d2a33e73ac2a8ad47c610d11d5f5eb88b5f9344ae3f0663907e8
|
|
7
|
+
data.tar.gz: 153812a9fef03bec897a964465c912f8f9af148853bb2371f5e91634f5756df9c46f0ee0366c4cee520d3472ec53b5a1eddb0abf0f815a438e13b3f48b49b730
|
data/.travis.yml
ADDED
data/ChangeLog
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
v1.0.3, 2017-03-23, Chris Needham <chris.needham@bbc.co.uk>
|
|
2
2
|
|
|
3
|
-
*
|
|
3
|
+
* Updated json gem to 1.8.5 for Ruby 2.4.0 compatibility
|
|
4
|
+
* Corrected example code in README.md
|
|
5
|
+
* Moved repository from https://github.com/bbcrd/audio_waveform-ruby to
|
|
6
|
+
https://github.com/bbc/audio_waveform-ruby
|
|
7
|
+
|
|
8
|
+
v1.0.2, 2015-03-27, Chris Needham <chris.needham@bbc.co.uk>
|
|
9
|
+
|
|
10
|
+
* Updated gem dependencies
|
|
11
|
+
|
|
12
|
+
v1.0.1, 2013-10-14, Chris Needham <chris.needham@bbc.co.uk>
|
|
13
|
+
|
|
14
|
+
* Initial public release
|
data/Gemfile.lock
CHANGED
|
@@ -1,36 +1,47 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
audio_waveform-ruby (1.0.
|
|
5
|
-
json
|
|
4
|
+
audio_waveform-ruby (1.0.3)
|
|
5
|
+
json (~> 1.8.5)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
diff-lcs (1.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
rspec-
|
|
17
|
-
rspec-
|
|
18
|
-
|
|
19
|
-
rspec-
|
|
20
|
-
|
|
21
|
-
rspec-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
10
|
+
diff-lcs (1.3)
|
|
11
|
+
docile (1.1.5)
|
|
12
|
+
json (1.8.6)
|
|
13
|
+
rake (12.0.0)
|
|
14
|
+
redcarpet (3.4.0)
|
|
15
|
+
rspec (3.5.0)
|
|
16
|
+
rspec-core (~> 3.5.0)
|
|
17
|
+
rspec-expectations (~> 3.5.0)
|
|
18
|
+
rspec-mocks (~> 3.5.0)
|
|
19
|
+
rspec-core (3.5.4)
|
|
20
|
+
rspec-support (~> 3.5.0)
|
|
21
|
+
rspec-expectations (3.5.0)
|
|
22
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
23
|
+
rspec-support (~> 3.5.0)
|
|
24
|
+
rspec-mocks (3.5.0)
|
|
25
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
26
|
+
rspec-support (~> 3.5.0)
|
|
27
|
+
rspec-support (3.5.0)
|
|
28
|
+
simplecov (0.14.1)
|
|
29
|
+
docile (~> 1.1.0)
|
|
30
|
+
json (>= 1.8, < 3)
|
|
31
|
+
simplecov-html (~> 0.10.0)
|
|
32
|
+
simplecov-html (0.10.0)
|
|
33
|
+
yard (0.9.8)
|
|
27
34
|
|
|
28
35
|
PLATFORMS
|
|
29
36
|
ruby
|
|
30
37
|
|
|
31
38
|
DEPENDENCIES
|
|
32
39
|
audio_waveform-ruby!
|
|
40
|
+
rake
|
|
33
41
|
redcarpet
|
|
34
42
|
rspec
|
|
35
43
|
simplecov
|
|
36
44
|
yard
|
|
45
|
+
|
|
46
|
+
BUNDLED WITH
|
|
47
|
+
1.13.7
|
data/README.md
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# audio_waveform-ruby
|
|
2
2
|
|
|
3
|
+
[](http://rubygems.org/gems/audio_waveform-ruby) [](https://travis-ci.org/bbc/audio_waveform-ruby)
|
|
4
|
+
|
|
3
5
|
The audio_waveform-ruby gem provides a Ruby API for access to audio waveform data
|
|
4
|
-
files generated by the [audiowaveform](https://github.com/
|
|
6
|
+
files generated by the [audiowaveform](https://github.com/bbc/audiowaveform) program.
|
|
5
7
|
|
|
6
|
-
Refer to the [audiowaveform](https://github.com/
|
|
8
|
+
Refer to the [audiowaveform](https://github.com/bbc/audiowaveform) documentation for more information and [this page](https://github.com/bbc/audiowaveform/blob/master/doc/DataFormat.md) for file format details.
|
|
7
9
|
|
|
8
10
|
## Installation
|
|
9
11
|
|
|
@@ -13,9 +15,16 @@ To install:
|
|
|
13
15
|
|
|
14
16
|
or, if using bundler, add this line to your application's Gemfile:
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
```ruby
|
|
19
|
+
gem 'audio_waveform-ruby', :require => 'audio_waveform'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
or, to use the latest code from the GitHub repository:
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
```ruby
|
|
25
|
+
gem 'audio_waveform-ruby', :require => 'audio_waveform',
|
|
26
|
+
:git => 'https://github.com/bbc/audio_waveform-ruby.git'
|
|
27
|
+
```
|
|
19
28
|
|
|
20
29
|
and run
|
|
21
30
|
|
|
@@ -25,54 +34,68 @@ and run
|
|
|
25
34
|
|
|
26
35
|
To use this Gem in your program, add:
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
```ruby
|
|
38
|
+
require 'audio_waveform'
|
|
39
|
+
```
|
|
29
40
|
|
|
30
41
|
Then, to load and use data from an existing waveform data file:
|
|
31
42
|
|
|
32
|
-
|
|
43
|
+
```ruby
|
|
44
|
+
waveform = AudioWaveform::WaveformDataFile.new(filename: "test.dat")
|
|
33
45
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
puts waveform.sample_rate # Returns audio sample rate, in Hz
|
|
47
|
+
puts waveform.bits # Returns resolution of waveform data points
|
|
48
|
+
puts waveform.samples_per_pixel # Returns waveform zoom level, in samples per pixel
|
|
49
|
+
puts waveform.size # Returns number of waveform data points
|
|
38
50
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
(0...waveform.size).each do |i|
|
|
52
|
+
puts waveform.min_sample(i) # Returns waveform minimum at index i
|
|
53
|
+
puts waveform.max_sample(i) # Returns waveform maximum at index i
|
|
54
|
+
end
|
|
55
|
+
```
|
|
43
56
|
|
|
44
57
|
To generate a binary representation of a waveform data file:
|
|
45
58
|
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
```ruby
|
|
60
|
+
waveform = AudioWaveform::WaveformDataFile.new(filename: "test.dat")
|
|
61
|
+
data = waveform.to_binary
|
|
62
|
+
```
|
|
48
63
|
|
|
49
64
|
To save waveform data as a file in binary format:
|
|
50
65
|
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
```ruby
|
|
67
|
+
waveform = AudioWaveform::WaveformDataFile.new(filename: "test.dat")
|
|
68
|
+
waveform.save_as_binary("output.dat")
|
|
69
|
+
```
|
|
53
70
|
|
|
54
71
|
To generate a JSON representation of a waveform data file:
|
|
55
72
|
|
|
56
|
-
|
|
57
|
-
|
|
73
|
+
```ruby
|
|
74
|
+
waveform = AudioWaveform::WaveformDataFile.new(filename: "test.dat")
|
|
75
|
+
waveform.to_json
|
|
76
|
+
```
|
|
58
77
|
|
|
59
78
|
To save waveform data as a file in JSON format:
|
|
60
79
|
|
|
61
|
-
|
|
62
|
-
|
|
80
|
+
```ruby
|
|
81
|
+
waveform = AudioWaveform::WaveformDataFile.new(filename: "test.dat")
|
|
82
|
+
waveform.save_as_json("output.json")
|
|
83
|
+
```
|
|
63
84
|
|
|
64
85
|
To create a new waveform data file:
|
|
65
86
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
87
|
+
```ruby
|
|
88
|
+
waveform = AudioWaveform::WaveformDataFile.new(
|
|
89
|
+
sample_rate: 44100,
|
|
90
|
+
samples_per_pixel: 512,
|
|
91
|
+
bits: 8
|
|
92
|
+
)
|
|
71
93
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
94
|
+
waveform.append(-10, 10)
|
|
95
|
+
.append(-11, 11)
|
|
96
|
+
.append(-3, 3)
|
|
97
|
+
# etc
|
|
98
|
+
```
|
|
76
99
|
|
|
77
100
|
## License
|
|
78
101
|
|
|
@@ -88,4 +111,4 @@ This software was written by [Chris Needham](https://github.com/chrisn), chris.n
|
|
|
88
111
|
|
|
89
112
|
## Copyright
|
|
90
113
|
|
|
91
|
-
Copyright
|
|
114
|
+
Copyright 2017 British Broadcasting Corporation
|
data/audio_waveform-ruby.gemspec
CHANGED
|
@@ -9,17 +9,18 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.email = ["chris.needham@bbc.co.uk"]
|
|
10
10
|
s.description = "The audiowaveform_ruby gem provides a Ruby API for access to audio waveform data files generated by the audiowaveform program"
|
|
11
11
|
s.summary = "Reads, writes, and rescales audio waveform data files"
|
|
12
|
-
s.homepage = "https://github.com/
|
|
12
|
+
s.homepage = "https://github.com/bbc/audio_waveform-ruby"
|
|
13
13
|
|
|
14
14
|
s.files = `git ls-files`.split($/)
|
|
15
15
|
s.test_files = s.files.grep(%r{^spec/audio_waveform/.*\.rb$})
|
|
16
16
|
|
|
17
17
|
s.require_paths = ["lib"]
|
|
18
18
|
|
|
19
|
-
s.add_dependency
|
|
19
|
+
s.add_dependency 'json', '~> 1.8.5'
|
|
20
20
|
|
|
21
|
-
s.add_development_dependency
|
|
22
|
-
s.add_development_dependency
|
|
23
|
-
s.add_development_dependency
|
|
24
|
-
s.add_development_dependency
|
|
21
|
+
s.add_development_dependency 'rake'
|
|
22
|
+
s.add_development_dependency 'rspec'
|
|
23
|
+
s.add_development_dependency 'simplecov'
|
|
24
|
+
s.add_development_dependency 'redcarpet'
|
|
25
|
+
s.add_development_dependency 'yard'
|
|
25
26
|
end
|
|
@@ -12,19 +12,19 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
12
12
|
it "should return binary data" do
|
|
13
13
|
output = file.to_binary
|
|
14
14
|
|
|
15
|
-
output.bytesize.
|
|
15
|
+
expect(output.bytesize).to eq(3620)
|
|
16
16
|
|
|
17
17
|
expected = Digest::MD5.hexdigest(File.read(filename))
|
|
18
18
|
actual = Digest::MD5.hexdigest(output)
|
|
19
19
|
|
|
20
|
-
actual.
|
|
20
|
+
expect(actual).to eq(expected)
|
|
21
21
|
|
|
22
22
|
fields = output.unpack("lLllL")
|
|
23
|
-
fields[0].
|
|
24
|
-
fields[1].
|
|
25
|
-
fields[2].
|
|
26
|
-
fields[3].
|
|
27
|
-
fields[4].
|
|
23
|
+
expect(fields[0]).to eq(1) # version
|
|
24
|
+
expect(fields[1]).to eq(1) # flags (8-bit)
|
|
25
|
+
expect(fields[2]).to eq(16000)
|
|
26
|
+
expect(fields[3]).to eq(64)
|
|
27
|
+
expect(fields[4]).to eq(1800)
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -39,11 +39,11 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
39
39
|
|
|
40
40
|
it "should write binary data to a file" do
|
|
41
41
|
result = file.save_as_binary(temp_filename)
|
|
42
|
-
result.
|
|
42
|
+
expect(result).to eq(file)
|
|
43
43
|
|
|
44
44
|
data = File.open(temp_filename, "rb") { |f| f.read }
|
|
45
45
|
|
|
46
|
-
data.bytesize.
|
|
46
|
+
expect(data.bytesize).to eq(3620)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -53,21 +53,21 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
53
53
|
|
|
54
54
|
data = JSON.parse(output)
|
|
55
55
|
|
|
56
|
-
data.
|
|
57
|
-
data["sample_rate"].
|
|
56
|
+
expect(data).to have_key("sample_rate")
|
|
57
|
+
expect(data["sample_rate"]).to eq(16000)
|
|
58
58
|
|
|
59
|
-
data.
|
|
60
|
-
data["samples_per_pixel"].
|
|
59
|
+
expect(data).to have_key("samples_per_pixel")
|
|
60
|
+
expect(data["samples_per_pixel"]).to eq(64)
|
|
61
61
|
|
|
62
|
-
data.
|
|
63
|
-
data["bits"].
|
|
62
|
+
expect(data).to have_key("bits")
|
|
63
|
+
expect(data["bits"]).to eq(8)
|
|
64
64
|
|
|
65
|
-
data.
|
|
66
|
-
data["length"].
|
|
65
|
+
expect(data).to have_key("length")
|
|
66
|
+
expect(data["length"]).to eq(1800)
|
|
67
67
|
|
|
68
|
-
data.
|
|
69
|
-
data["data"].
|
|
70
|
-
data["data"].size.
|
|
68
|
+
expect(data).to have_key("data")
|
|
69
|
+
expect(data["data"]).to be_instance_of(Array)
|
|
70
|
+
expect(data["data"].size).to eq(3600)
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -82,55 +82,55 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
82
82
|
|
|
83
83
|
it "should write JSON data to a file" do
|
|
84
84
|
result = file.save_as_json(temp_filename)
|
|
85
|
-
result.
|
|
85
|
+
expect(result).to eq(file)
|
|
86
86
|
|
|
87
87
|
data = File.open(temp_filename, "rb") { |f| f.read }
|
|
88
88
|
|
|
89
89
|
obj = JSON.parse(data)
|
|
90
|
-
obj.
|
|
91
|
-
obj.
|
|
92
|
-
obj.
|
|
93
|
-
obj.
|
|
94
|
-
obj.
|
|
90
|
+
expect(obj).to have_key("sample_rate")
|
|
91
|
+
expect(obj).to have_key("samples_per_pixel")
|
|
92
|
+
expect(obj).to have_key("bits")
|
|
93
|
+
expect(obj).to have_key("length")
|
|
94
|
+
expect(obj).to have_key("data")
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
describe "attributes" do
|
|
99
99
|
it "should return sample rate in hertz" do
|
|
100
|
-
file.sample_rate.
|
|
100
|
+
expect(file.sample_rate).to eq(16000)
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
it "should return samples per pixel" do
|
|
104
|
-
file.samples_per_pixel.
|
|
104
|
+
expect(file.samples_per_pixel).to eq(64)
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
it "should return waveform data resolution in bits" do
|
|
108
|
-
file.bits.
|
|
108
|
+
expect(file.bits).to eq(8)
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
it "should not have a start time" do
|
|
112
|
-
file.start_time.
|
|
112
|
+
expect(file.start_time).to be_nil
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
it "should return number of min and max waveform data pairs" do
|
|
116
|
-
file.size.
|
|
116
|
+
expect(file.size).to eq(1800)
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it "should return waveform data" do
|
|
120
|
-
file.min_sample(0).
|
|
121
|
-
file.max_sample(0).
|
|
120
|
+
expect(file.min_sample(0)).to eq(0)
|
|
121
|
+
expect(file.max_sample(0)).to eq(0)
|
|
122
122
|
|
|
123
|
-
file.min_sample(26).
|
|
124
|
-
file.max_sample(26).
|
|
123
|
+
expect(file.min_sample(26)).to eq(-53)
|
|
124
|
+
expect(file.max_sample(26)).to eq(64)
|
|
125
125
|
|
|
126
|
-
file.min_sample(206).
|
|
127
|
-
file.max_sample(206).
|
|
126
|
+
expect(file.min_sample(206)).to eq(8)
|
|
127
|
+
expect(file.max_sample(206)).to eq(17)
|
|
128
128
|
|
|
129
|
-
file.min_sample(217).
|
|
130
|
-
file.max_sample(217).
|
|
129
|
+
expect(file.min_sample(217)).to eq(-15)
|
|
130
|
+
expect(file.max_sample(217)).to eq(-1)
|
|
131
131
|
|
|
132
|
-
file.min_sample(1799).
|
|
133
|
-
file.max_sample(1799).
|
|
132
|
+
expect(file.min_sample(1799)).to eq(0)
|
|
133
|
+
expect(file.max_sample(1799)).to eq(0)
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
136
|
end
|
|
@@ -141,40 +141,40 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
141
141
|
|
|
142
142
|
describe "attributes" do
|
|
143
143
|
it "should return sample rate in hertz" do
|
|
144
|
-
file.sample_rate.
|
|
144
|
+
expect(file.sample_rate).to eq(16000)
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
it "should return samples per pixel" do
|
|
148
|
-
file.samples_per_pixel.
|
|
148
|
+
expect(file.samples_per_pixel).to eq(64)
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
it "should return waveform data resolution in bits" do
|
|
152
|
-
file.bits.
|
|
152
|
+
expect(file.bits).to eq(16)
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
it "should not have a start time" do
|
|
156
|
-
file.start_time.
|
|
156
|
+
expect(file.start_time).to be_nil
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
it "should return number of min and max waveform data pairs" do
|
|
160
|
-
file.size.
|
|
160
|
+
expect(file.size).to eq(1800)
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
it "should return waveform data" do
|
|
164
|
-
file.min_sample(0).
|
|
165
|
-
file.max_sample(0).
|
|
164
|
+
expect(file.min_sample(0)).to eq(0)
|
|
165
|
+
expect(file.max_sample(0)).to eq(0)
|
|
166
166
|
|
|
167
|
-
file.min_sample(26).
|
|
168
|
-
file.max_sample(26).
|
|
167
|
+
expect(file.min_sample(26)).to eq(-13606)
|
|
168
|
+
expect(file.max_sample(26)).to eq(16602)
|
|
169
169
|
|
|
170
|
-
file.min_sample(206).
|
|
171
|
-
file.max_sample(206).
|
|
170
|
+
expect(file.min_sample(206)).to eq(2166)
|
|
171
|
+
expect(file.max_sample(206)).to eq(4512)
|
|
172
172
|
|
|
173
|
-
file.min_sample(217).
|
|
174
|
-
file.max_sample(217).
|
|
173
|
+
expect(file.min_sample(217)).to eq(-4052)
|
|
174
|
+
expect(file.max_sample(217)).to eq(-430)
|
|
175
175
|
|
|
176
|
-
file.min_sample(1799).
|
|
177
|
-
file.max_sample(1799).
|
|
176
|
+
expect(file.min_sample(1799)).to eq(-8)
|
|
177
|
+
expect(file.max_sample(1799)).to eq(7)
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
180
|
end
|
|
@@ -185,23 +185,23 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
185
185
|
|
|
186
186
|
describe "attributes" do
|
|
187
187
|
it "should return sample rate in hertz" do
|
|
188
|
-
file.sample_rate.
|
|
188
|
+
expect(file.sample_rate).to eq(16000)
|
|
189
189
|
end
|
|
190
190
|
|
|
191
191
|
it "should return samples per pixel" do
|
|
192
|
-
file.samples_per_pixel.
|
|
192
|
+
expect(file.samples_per_pixel).to eq(64)
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
it "should return waveform data resolution in bits" do
|
|
196
|
-
file.bits.
|
|
196
|
+
expect(file.bits).to eq(8)
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
it "should not have a start time" do
|
|
200
|
-
file.start_time.
|
|
200
|
+
expect(file.start_time).to be_nil
|
|
201
201
|
end
|
|
202
202
|
|
|
203
203
|
it "should return number of min and max waveform data pairs" do
|
|
204
|
-
file.size.
|
|
204
|
+
expect(file.size).to eq(0)
|
|
205
205
|
end
|
|
206
206
|
end
|
|
207
207
|
end
|
|
@@ -257,15 +257,15 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
257
257
|
|
|
258
258
|
describe "append" do
|
|
259
259
|
it "should append waveform data points" do
|
|
260
|
-
file.size.
|
|
260
|
+
expect(file.size).to eq(0)
|
|
261
261
|
|
|
262
262
|
file.append(-99, 101).append(-49, 51)
|
|
263
263
|
|
|
264
|
-
file.size.
|
|
265
|
-
file.min_sample(0).
|
|
266
|
-
file.max_sample(0).
|
|
267
|
-
file.min_sample(1).
|
|
268
|
-
file.max_sample(1).
|
|
264
|
+
expect(file.size).to eq(2)
|
|
265
|
+
expect(file.min_sample(0)).to eq(-99)
|
|
266
|
+
expect(file.max_sample(0)).to eq(101)
|
|
267
|
+
expect(file.min_sample(1)).to eq(-49)
|
|
268
|
+
expect(file.max_sample(1)).to eq(51)
|
|
269
269
|
end
|
|
270
270
|
end
|
|
271
271
|
|
|
@@ -273,14 +273,14 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
273
273
|
it "should return binary data" do
|
|
274
274
|
output = file.to_binary
|
|
275
275
|
|
|
276
|
-
output.bytesize.
|
|
276
|
+
expect(output.bytesize).to eq(20)
|
|
277
277
|
|
|
278
278
|
fields = output.unpack("lLllL")
|
|
279
|
-
fields[0].
|
|
280
|
-
fields[1].
|
|
281
|
-
fields[2].
|
|
282
|
-
fields[3].
|
|
283
|
-
fields[4].
|
|
279
|
+
expect(fields[0]).to eq(1) # version
|
|
280
|
+
expect(fields[1]).to eq(0) # flags (16-bit)
|
|
281
|
+
expect(fields[2]).to eq(44100)
|
|
282
|
+
expect(fields[3]).to eq(512)
|
|
283
|
+
expect(fields[4]).to eq(0)
|
|
284
284
|
end
|
|
285
285
|
end
|
|
286
286
|
|
|
@@ -290,23 +290,23 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
290
290
|
|
|
291
291
|
data = JSON.parse(output)
|
|
292
292
|
|
|
293
|
-
data.
|
|
294
|
-
data["sample_rate"].
|
|
293
|
+
expect(data).to have_key("sample_rate")
|
|
294
|
+
expect(data["sample_rate"]).to eq(44100)
|
|
295
295
|
|
|
296
|
-
data.
|
|
297
|
-
data["samples_per_pixel"].
|
|
296
|
+
expect(data).to have_key("samples_per_pixel")
|
|
297
|
+
expect(data["samples_per_pixel"]).to eq(512)
|
|
298
298
|
|
|
299
|
-
data.
|
|
300
|
-
data["bits"].
|
|
299
|
+
expect(data).to have_key("bits")
|
|
300
|
+
expect(data["bits"]).to eq(16)
|
|
301
301
|
|
|
302
|
-
data.
|
|
303
|
-
data["length"].
|
|
302
|
+
expect(data).to have_key("length")
|
|
303
|
+
expect(data["length"]).to eq(0)
|
|
304
304
|
|
|
305
|
-
data.
|
|
306
|
-
data["data"].
|
|
307
|
-
data["data"].size.
|
|
305
|
+
expect(data).to have_key("data")
|
|
306
|
+
expect(data["data"]).to be_instance_of(Array)
|
|
307
|
+
expect(data["data"].size).to eq(0)
|
|
308
308
|
|
|
309
|
-
data.
|
|
309
|
+
expect(data).not_to have_key("start_time")
|
|
310
310
|
end
|
|
311
311
|
end
|
|
312
312
|
end
|
|
@@ -323,7 +323,7 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
323
323
|
|
|
324
324
|
describe "attributes" do
|
|
325
325
|
it "should return start time" do
|
|
326
|
-
file.start_time.
|
|
326
|
+
expect(file.start_time).to eq(8.5)
|
|
327
327
|
end
|
|
328
328
|
end
|
|
329
329
|
|
|
@@ -333,8 +333,8 @@ describe AudioWaveform::WaveformDataFile do
|
|
|
333
333
|
|
|
334
334
|
data = JSON.parse(output)
|
|
335
335
|
|
|
336
|
-
data.
|
|
337
|
-
data["start_time"].
|
|
336
|
+
expect(data).to have_key("start_time")
|
|
337
|
+
expect(data["start_time"]).to eq(8.5)
|
|
338
338
|
end
|
|
339
339
|
end
|
|
340
340
|
|
metadata
CHANGED
|
@@ -1,83 +1,97 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: audio_waveform-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chris Needham
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-03-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 1.8.5
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 1.8.5
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
40
|
version: '0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: rspec
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
|
-
- -
|
|
45
|
+
- - ">="
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
47
|
version: '0'
|
|
34
48
|
type: :development
|
|
35
49
|
prerelease: false
|
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
|
-
- -
|
|
52
|
+
- - ">="
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
54
|
version: '0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: simplecov
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- -
|
|
59
|
+
- - ">="
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
61
|
version: '0'
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- -
|
|
66
|
+
- - ">="
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
68
|
version: '0'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: redcarpet
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
|
-
- -
|
|
73
|
+
- - ">="
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
75
|
version: '0'
|
|
62
76
|
type: :development
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
79
|
requirements:
|
|
66
|
-
- -
|
|
80
|
+
- - ">="
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: yard
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- -
|
|
87
|
+
- - ">="
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
89
|
version: '0'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- -
|
|
94
|
+
- - ">="
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
96
|
version: '0'
|
|
83
97
|
description: The audiowaveform_ruby gem provides a Ruby API for access to audio waveform
|
|
@@ -88,6 +102,7 @@ executables: []
|
|
|
88
102
|
extensions: []
|
|
89
103
|
extra_rdoc_files: []
|
|
90
104
|
files:
|
|
105
|
+
- ".travis.yml"
|
|
91
106
|
- COPYING
|
|
92
107
|
- ChangeLog
|
|
93
108
|
- Gemfile
|
|
@@ -109,7 +124,7 @@ files:
|
|
|
109
124
|
- spec/data/version2.dat
|
|
110
125
|
- spec/data/zero_length.dat
|
|
111
126
|
- spec/spec_helper.rb
|
|
112
|
-
homepage: https://github.com/
|
|
127
|
+
homepage: https://github.com/bbc/audio_waveform-ruby
|
|
113
128
|
licenses: []
|
|
114
129
|
metadata: {}
|
|
115
130
|
post_install_message:
|
|
@@ -118,21 +133,20 @@ require_paths:
|
|
|
118
133
|
- lib
|
|
119
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
135
|
requirements:
|
|
121
|
-
- -
|
|
136
|
+
- - ">="
|
|
122
137
|
- !ruby/object:Gem::Version
|
|
123
138
|
version: '0'
|
|
124
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
140
|
requirements:
|
|
126
|
-
- -
|
|
141
|
+
- - ">="
|
|
127
142
|
- !ruby/object:Gem::Version
|
|
128
143
|
version: '0'
|
|
129
144
|
requirements: []
|
|
130
145
|
rubyforge_project:
|
|
131
|
-
rubygems_version: 2.
|
|
146
|
+
rubygems_version: 2.6.8
|
|
132
147
|
signing_key:
|
|
133
148
|
specification_version: 4
|
|
134
149
|
summary: Reads, writes, and rescales audio waveform data files
|
|
135
150
|
test_files:
|
|
136
151
|
- spec/audio_waveform/version_spec.rb
|
|
137
152
|
- spec/audio_waveform/waveform_data_file_spec.rb
|
|
138
|
-
has_rdoc:
|