Support 8k 16-bit LE wav samples as if they were raw - warvox - Unnamed reposit… | |
Log | |
Files | |
Refs | |
README | |
--- | |
commit a9ad034c2ca9d3696f4df97850acb722b6570475 | |
parent 64de9b38015105cdf440fcb6c5bba5e660b8f66d | |
Author: HD Moore <[email protected]> | |
Date: Sun, 1 May 2016 23:39:14 -0500 | |
Support 8k 16-bit LE wav samples as if they were raw | |
Diffstat: | |
M bin/import_audio.rb | 9 +-------- | |
M lib/warvox/audio/raw.rb | 8 ++++++++ | |
2 files changed, 9 insertions(+), 8 deletions(-) | |
--- | |
diff --git a/bin/import_audio.rb b/bin/import_audio.rb | |
@@ -38,7 +38,7 @@ require 'config/environment' | |
project_id = ARGV.shift | |
provider_id = ARGV.shift | |
-todo = Dir["#{dir}/**/*.raw"].to_a + Dir["#{dir}/**/*.wav"].to_a | |
+todo = Dir["#{dir}/**/*.{raw,wav}"].to_a | |
if todo.empty? | |
$stderr.puts "Error: No raw audio files found within #{dir}" | |
@@ -115,13 +115,6 @@ todo.each do |rfile| | |
mr = dr.media | |
::File.open(rfile, "rb") do |fd| | |
- | |
- # Dirty support for RIFF (little-endian) data, WAVE audio, Microsoft PCM, … | |
- if rfile =~ /\.wav$/ | |
- # Toss the WAV header | |
- head = fd.read(44) | |
- end | |
- | |
mr.audio = fd.read(fd.stat.size) | |
mr.save | |
end | |
diff --git a/lib/warvox/audio/raw.rb b/lib/warvox/audio/raw.rb | |
@@ -52,6 +52,14 @@ class Raw | |
attr_accessor :samples | |
def initialize(data) | |
+ | |
+ # Accept raw WAV files, but remove the header | |
+ if data[ 0,4].to_s == "RIFF" && | |
+ data[ 8,4].to_s == "WAVE" && | |
+ data[36,4].to_s == "data" | |
+ data[0, 44] = '' | |
+ end | |
+ | |
self.samples = data.unpack('v*').map do |s| | |
(s > 0x7fff) ? (0x10000 - s) * -1 : s | |
end |