audio_hero 0.1.1 → 0.1.2

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: f3648b9480f862ec47b982e8883f1d8e329ee9a3
4
- data.tar.gz: 8b1228ca980943bb77a1e80c631271c73e7086e1
3
+ metadata.gz: 4bb1e0dddd042652fedc3c8afa209a38782599ad
4
+ data.tar.gz: e240c77cdc42674a5c16beb480714a5078315577
5
5
  SHA512:
6
- metadata.gz: 02d4bbb19b2754a205459014bfeb62ce02e6709f672f0a23762d3a445ebe1ad30a27f8061fb764bf169065ff670599c28cd1bee14278d45e13fea2be5ae03287
7
- data.tar.gz: 4cd6164c3d846ac9f12bc0edb7c9caa9e3cfa2821b2406fb83bb0a4ed31dce0944d50814f28a7e911c1ec1fa7fe11d516fe04299184844be2764c5aabc30dfa6
6
+ metadata.gz: b04e7418655b10d21e43444104c3d4d0c8610d30022203cd95b7fc310ea7e0d7bba1b92a5267607dd32c8662987274ba59c5b9de69d97b2fa220fe85f9218338
7
+ data.tar.gz: 9fe578470e0bf6c95e6cc220a89e13b7615e277b87a6c107126f04be2b83e91ddf7a1c742e77c0f67f81f003187df3d3e73c1b1a33e65821997aa87ae12f9fb9
data/README.md CHANGED
@@ -31,6 +31,8 @@ Or install it yourself as:
31
31
  Return the converted audio as ruby temp file object
32
32
 
33
33
  ```ruby
34
+ require "open-uri"
35
+
34
36
  file = open("url/or/path/to/audio/file")
35
37
 
36
38
  new_file = AudioHero::Sox.new(file).convert({output_options: "-c 1", output_format: "mp3", channel: "left"})
@@ -73,12 +75,23 @@ Options(hash):
73
75
  * file2 (path to second audio file, I use this to split both channels of an audio file at one go, require a modified sox that will not overwrite file1's output. Eg. my modified sox output [milliseconds].wav instead of 001.wav)
74
76
  * gc (no default, set to "true" to auto close! input file)
75
77
 
78
+ ###Stats
79
+ Get statistics report on audio file (support up to 2 channels).
80
+
81
+ ```ruby
82
+ stats = AudioHero::Sox.new(file).stats({input_format: "wav"})
83
+ # {"dc_offset"=>"0.000398", "min_level"=>"-0.299591", "max_level"=>"0.303711", "pk_lev_db"=>"-10.35", "rms_lev_db"=>"-23.08", "rms_pk_db"=>"-16.19", "rms_tr_db"=>"-96.84", "crest_factor"=>"4.33", "flat_factor"=>"0.00", "pk_count"=>"2", "bit-depth"=>"15/16", "num_samples"=>"233k", "length_s"=>"14.544", "scale_max"=>"1.000000", "window_s"=>"0.050"}
84
+ ```
85
+ Options(hash):
86
+ * input_format (default to "mp3")
87
+ * gc (no default, set to "true" to auto close! input file)
88
+
76
89
  ###Custom Command
77
90
 
78
91
  Run any sox command with this method.
79
92
  ```ruby
80
93
  file = AudioHero::Sox.new(file).command({global: "-V3", input_option: "-t mp3", output_option: "-c 1", effect: "remix 0 1", gc: "true"})
81
- # Command generated: `sox -V3 -t mp3 input.mp3 -c 1 output.wav remix 0 1`
94
+ # Command generated: sox -V3 -t mp3 input.mp3 -c 1 output.wav remix 0 1
82
95
  ```
83
96
  Options(hash):
84
97
  * global (sox global options, inserted right after `sox`)
data/audio_hero.gemspec CHANGED
@@ -7,10 +7,10 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "audio_hero"
8
8
  spec.version = AudioHero::VERSION
9
9
  spec.authors = ["litenup"]
10
- spec.email = ["alanhsu@litenvoice.com"]
10
+ spec.email = ["alanhsu@mycallhero.com"]
11
11
 
12
12
  spec.summary = %q{Wrapper for sox for audio processing}
13
- spec.homepage = "http://rubygems.org/gems/audio_hero"
13
+ spec.homepage = "https://github.com/litenup/audio_hero"
14
14
  spec.license = "MIT"
15
15
 
16
16
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
@@ -1,3 +1,3 @@
1
1
  module AudioHero
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/audio_hero.rb CHANGED
@@ -24,9 +24,9 @@ module AudioHero
24
24
  output_options = options[:default] ? "-c 1 -b 16 -r 16k" : options[:output_options]
25
25
  case channel
26
26
  when "left"
27
- channel = "remix 1 0"
27
+ channel = "remix 1"
28
28
  when "right"
29
- channel = "remix 0 1"
29
+ channel = "remix 2"
30
30
  else
31
31
  channel = nil
32
32
  end
@@ -111,6 +111,24 @@ module AudioHero
111
111
  Dir["#{dir}/**/*#{format}"]
112
112
  end
113
113
 
114
+ def stats(options={})
115
+ input_format = options[:input_format] ? options[:input_format] : "mp3"
116
+ src = @file
117
+ begin
118
+ parameters = []
119
+ parameters << "-t #{input_format}"
120
+ parameters << ":source"
121
+ parameters << "-n stats"
122
+ parameters << "2>&1" # redirect stderr to stdout
123
+ parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ")
124
+ success = Cocaine::CommandLine.new("sox", parameters).run(:source => File.expand_path(src.path))
125
+ rescue => e
126
+ raise AudioHeroError, "These was an issue getting stats from #{@basename}"
127
+ end
128
+ src.close! if options[:gc] == "true"
129
+ parse_stats(success)
130
+ end
131
+
114
132
  def command(options={})
115
133
  global = options[:global_options]
116
134
  input_options = options[:input_options]
@@ -140,6 +158,47 @@ module AudioHero
140
158
  dst
141
159
  end
142
160
 
161
+ private
162
+
163
+ def parse_stats(stats)
164
+ hash = Hash.new { |h, k| h[k] = {} }
165
+ if stats.include? "Left"
166
+ stats.split("\n").drop(1).each do |row|
167
+ overall = hash[:overall]
168
+ left = hash[:left]
169
+ right = hash[:right]
170
+ array = row.split(" ")
171
+ if array.count == 4
172
+ label = array[0].downcase!
173
+ overall[label] = array[1]
174
+ left[label] = array[2]
175
+ right[label] = array[3]
176
+ elsif array.count > 4
177
+ label = array.first(array.count - 3).join(" ").gsub!(/( )/, '_').downcase!
178
+ values = array.last(3)
179
+ overall[label] = values[0]
180
+ left[label] = values[1]
181
+ right[label] = values[2]
182
+ else
183
+ label = array.first(array.count - 1).join(" ").gsub!(/( )/, '_').downcase!
184
+ overall[label] = array.last
185
+ left[label] = array.last
186
+ right[label] = array.last
187
+ end
188
+ end
189
+ else
190
+ stats.split("\n").each do |row|
191
+ array = row.split(" ")
192
+ if array.count == 2
193
+ hash[array.first.downcase!] = array.last
194
+ elsif array.count > 2
195
+ hash[array.first(array.count - 1).join(" ").gsub!(/( )/, '_').downcase!] = array.last
196
+ end
197
+ end
198
+ end
199
+ hash
200
+ end
201
+
143
202
  end
144
203
  end
145
204
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audio_hero
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - litenup
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-03 00:00:00.000000000 Z
11
+ date: 2016-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,7 +68,7 @@ dependencies:
68
68
  version: '0.5'
69
69
  description:
70
70
  email:
71
- - alanhsu@litenvoice.com
71
+ - alanhsu@mycallhero.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
@@ -86,7 +86,7 @@ files:
86
86
  - bin/setup
87
87
  - lib/audio_hero.rb
88
88
  - lib/audio_hero/version.rb
89
- homepage: http://rubygems.org/gems/audio_hero
89
+ homepage: https://github.com/litenup/audio_hero
90
90
  licenses:
91
91
  - MIT
92
92
  metadata: