Info

Every now and then, I like to play around in the Signal Processing world – more so in the audio realm than anything else. The thought that sound can be represented by an array containing a whole bunch of (seemingly arbitrary) numbers ready for manipulation is just awesome!. Yes, I had a lot of fun in my signal processing labs at school and I still love messing around with GNU Octave post-college.

Waveform of the Track I Used.




So, onto today’s topic. Some of you may ask, What is Backmasking?

Backmasking is playing an audio track in reverse. There is nothing new about this concept and lots of artists do it (examples: The Beatles, Frank Zappa, Pink Floyd, Weird Al…the list goes on and on) and apparently backmasking stirred up quite the controversy when some groups claimed that backmasked messages made listeners fall into drug use and devil worshipping practices. Hmm…did anybody else think of the “Party Posse” episode of “The Simpsons?” You can read more about backmasking and the controversies in this Wikipedia article.

Definitions and controversies aside, let’s backmask a track. It’s super easy!
Digital audio formats make it really easy to duplicate the effect. I used GNU Octave to carry out the operations, but if you are fortunate enough to have a copy of MATLAB you can use that too (as an added bonus, the commands I use here can also be used in MATLAB!).

The audio clip that I used was one that I made myself. The clip is called “Ponderosa” and you can download it* by clicking on the “downward pointing arrow” found on the right side of the player below. The file format is .wav and it will need to remain that way for Octave to accept it.

Ponderosa before Backmasking


Putting the file into the Octave working directory, I executed the following commands:

octave:1> foo = wavread("ponderosa.wav");
octave:2> bar = flipud(foo);
octave:3> wavwrite(bar, 44100, "ponderosa_backmask.wav");

What’s happening here?

In line 1, “wavread” reads the audio file and puts all of its contents into a matrix “foo.” The contents are the digitized amplitude values of the audio as it was converted to .wav. Foo will contain two columns, one for the Left Channel and another for the Right but we don’t need to concern ourselves with this.

Line 2 takes “foo” and flips it upside down. For example:

foo = 1 2 3
      4 5 6

% after applying flipud(foo)...

foo = 4 5 6
      1 2 3

In other words, I reversed the values of the audio clip, so now the last numbers are now first and the first last.

Finally, line 3 takes the reversed matrix and turns it back into a .wav file called “ponderosa_backmask.wav” with a sampling rate of 44.1 kHz (this is pretty standard).

Here’s the result:

Ponderosa Backmasked


Pretty cool huh? Basically, re-ordering a bunch of numbers and playing them back results in an eerie, yet pleasant sounding track!

Lots of audio recording programs like Audacity already come with track reversal features so you don’t have to work with Octave. I decided to use it because it gives more insight in the manipulations involved, even if it is just flipping a matrix. So, that’s backmasking. Try it out!

*The tracks are covered by the Creative Commons Attribution-Sharealike 3.0 License. You can read more about it at http://creativecommons.org/licenses/by-sa/3.0/