In the past, it could be done using such devices as /dev/dsp, /dev/audio and some others. It is Open Sound System (OSS) interfaces. It is really old and is currently deprecated. But it is still possible to redirect information to the sound device. This can still be done by using PulseAudio that can emulate OSS devices.
Playing random noise using PulseAudio
The utility is called padsp. It is included in pulseaudio-utils package on Debian-based distributions. This is set as a dependency when installing pulseaudio from repository.
cat /dev/urandom | padsp tee /dev/dsp > /dev/null
In same manner it is possible to play files, images, html pages…
Writing to file using pulseaudio tools
This can be done with the following command:
padsp cat /dev/dsp > file.raw
Now we can listen to this with the following command:
cat file.raw | padsp tee /dev/dsp > /dev/null
But the sound quality is really bad. To improve the sound quality is better to use ALSA tools which we talk about below.
Playing random noise using ALSA
The utility is called aplay. It is included in alsa-utils package and may require installation if it is not installed yet.
sudo apt update sudo apt install alsa-utils
Now it is possible to realize the following command:
cat /dev/urandom | aplay
aplay command requires user to be in audio group, otherwise it can be done by using with sudo.
Write to file from audio device ALSA
There is also arecord utility in alsa-utils package which allows us to write in files from audio device. Here is the simple use, :
arecord > radio.wav
Now it can be played by the following command:
cat radio.wav | aplay
The next technique is much better. Writing a file in WAVE format with CD quality settings (16 bit little endian, 44100, stereo):
arecord -t wav -f cd > radio.wav
Now it requires a media player:
The sound quality is really good. This is more than enough to record music from the radio in high quality. But not all Internet radio broadcast music in high quality.
ffprobe radio.wav .. Stream #0:0: Audio: pcm_s16le ( / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s.