Simple White Noise Machine with Raspberry Pi
When my daughter was very small we often used an iPad playing a 10 hour long YouTube video that was simply a repeating track of ocean sounds. Eventually I downloaded the mp3 of the sounds and set up an old android phone to play the track on a constant loop. I connected this mp3 player to an old set of computer speakers and put the whole system under my daughter’s bed. This worked great until I looked at the phone one day and the case was cracked open because the battery had doubled in size.
My first thought was to try to buy a simple mp3 player on Amazon. I haven’t tried to buy an mp3 player in about a decade but I thought I should be able to get one for under $10. Unfortunately it seems like nobody manufactures a simple enough mp3 player. It’s easy to find a $25 player with a nice LCD screen, but not a $10 knock-off equivalent of an iPod Shuffle.
Discouraged by what I didn’t find on Amazon, I decided to grab an old Raspberry Pi and see how hard it would be to turn it into a simple mp3 player that will loop one file forever. It ended up being easier than I thought and I had it done in less time than a Prime delivery.
Steps to create a Raspberry Pi white noise machine
I installed Rasberry Pi OS and configured it to my liking. I installed omxplayer which has the ability to play an mp3 on a loop.
sudo apt-get install omxplayer
I downloaded a 1-minute long mp3 of ocean sounds. I duplicated the ocean sound mp3 until I had a 30-minute long file. This was accomplished simply using the cat
command to repeatedly double the length of the file:
cat ocean_sounds_1m.mp3 ocean_sounds_1m.mp3 > ocean_sounds_2m.mp3
cat ocean_sounds_2m.mp3 ocean_sounds_2m.mp3 > ocean_sounds_4m.mp3
...
cat ocean_sounds_16m.mp3 ocean_sounds_16m.mp3 > ocean_sounds_32m.mp3
I tested omxplayer’s looping functionality with the following command:
omxplayer --adev local --loop ocean_sounds_32m.mp3
Once that all worked, I created a systemd service to keep omxplayer running in the background. The service file is saved in /etc/systemd/system/ocean.service
and looks like this:
[Unit]
Description=ocean
[Service]
ExecStart=/usr/bin/omxplayer -o local --loop /home/pi/ocean_sounds_32m.mp3
[Install]
WantedBy=multi-user.target
Then I just enabled and started the service and I was in business.
sudo systemctl daemon-reload
sudo systemctl enable ocean
sudo systemctl start ocean
Now my daughter has her white noise machine back and this one doesn’t have an explodable battery.