Read and write .wav sound files with Ruby

For Example

Let’s say you have these three Wave files:

This program will concatenate them into one file called one_two_three.wav:

require "wavefile"
include WaveFile    # To avoid prefixing classes with "WaveFile::"

FILES_TO_APPEND = ["one.wav", "two.wav", "three.wav"]
OUTPUT_FORMAT =, :pcm_16, 44100)"one_two_three.wav", OUTPUT_FORMAT) do |writer|
  FILES_TO_APPEND.each do |file_name| do |buffer|

Intrigued? Check out more examples.

Or, check out the Getting Started guide for a tutorial.


First, install the WaveFile gem from

gem install wavefile

…and include it in your Ruby program:

require "wavefile"

…or Gemfile:

gem "wavefile"

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.