Read and write .wav sound files in pure Ruby
Let’s say you have these three Wave files:
This program will concatenate them into one file called
require 'wavefile' include WaveFile # To avoid prefixing classes with 'WaveFile::' FILES_TO_APPEND = ["one.wav", "two.wav", "three.wav"] SAMPLE_FRAMES_PER_BUFFER = 4096 OUTPUT_FORMAT = Format.new(:stereo, :pcm_16, 44100) Writer.new("one_two_three.wav", OUTPUT_FORMAT) do |writer| FILES_TO_APPEND.each do |file_name| Reader.new(file_name).each_buffer(SAMPLE_FRAMES_PER_BUFFER) do |buffer| writer.write(buffer) end end end
Intrigued? Check out more examples.
Don’t have any idea what this code means? Check out the Getting Started guide.
First, install the WaveFile gem from rubygems.org:
gem install wavefile
...and include it in your Ruby program:
Note: It’s recommended that you use a Ruby version manager such as rvm or rbenv. But if using the system Ruby that comes pre-installed on MacOS, you should used
sudo gem install wavefile. Otherwise you might run into a file permission error.
Joel Strait did.