Linux Candy is a series of articles covering interesting eye candy software. We only feature open source software in this series.
Some of the programs in this series are purely cosmetic, frivolous pieces of fun. Candy at their finest. But we also include some programs that aren’t purely decorative.
A diverse range of programs are included in this series. Programs such as eDEX-UI and Variety are actually highly practical programs. ASCIIQuarium has soothing and relaxing qualities for your desktop. Other programs included in this series (such as lolcat, cacafire) are included purely for their decorative qualities. And then there’s some really fun software that just raises a smile or two.
linuxwave is a small utility that’s designed to generate music from the entropy of Linux. What’s entropy? Think of entropy as the computer’s way of getting close to “randomness”.
Computers are incapable, by design, of generating truly random numbers, because no number produced by a mathematical operation is truly random. However, computers can get pretty close with entropy. A Linux machine collates “random numbers” by monitoring different events such as network activity, key-clicks etc. These are fed to the kernel entropy pool, which is used by /dev/random and /dev/urandom. Some programs need to use /dev/random or /dev/uradom as their source of entropy e.g. cryptography tools. linuxwave also uses entropy via /dev/urandom.
Installation
The developer provides binaries for Linux, macOS, and Windows. For Linux, there are binaries for different architectures too.
If you want to compile linuxwave, you’ll need Zig (a general-purpose programming language and toolchain). On an Ubuntu system, this can be installed using snap:
$ snap install zig --classic --beta
Clone the project’s GitHub repository and change into the newly created directory:
$ git clone https://github.com/orhun/linuxwave
$ cd linuxwave
Update the git submodules:
$ git submodule update --init --recursive
Now we can build the source.
$ zig build -Drelease-safe
In Operation
linuxwave is a CLI tool, so you’ll want to know the available options. They are listed by issuing the command $ linuxwave --help
.
Let’s make a 20 second composition in the C major scale:
$ linuxwave -n 261.63 -d 20 -o music.wav
Here’s the generated wav file.
Summary
The generated wav files in themselves aren’t going to create a piece of music to challenge the greats of minimalism such as Philip Glass. But look what can be achieved with the software if you add some synths and drums, illustrated beautifully with the developer’s video.
Quite impressive to say the least.
The author of linuxwave, Orhun Parmaksız, is best known for kmon, a text-based tool to help you manage the Linux kernel modules and monitor the kernel activities.
Website: github.com/orhun/linuxwave
Support:
Developer: Orhun Parmaksız
License: MIT License
linuxwave is written in Zig. Learn Zig with our recommended free tutorials.
Complete list of articles in this series:
Linux Candy | |
---|---|
ASCIIQuarium | Embrace marine life from the terminal with beautiful ASCII art |
ASCII Art Converter | A small utility that converts images into ASCII art |
BobRossQuotes | Collection of quotes from Bob Ross |
Boxes | Command line ASCII boxes |
Buoh | Online strips comics reader |
cacafire | Color ASCII fire |
catclock | xclock with an enhanced cat mode |
cbonsai | Generate bonsai trees in the terminal |
christmasfetch | Festive cheer on the desktop |
chucknorris | Chuck Norris jokes in your terminal |
cornyjokes | Corny jokes for the terminal |
CMatrix | ncurses program that simulates the display from “The Matrix” |
ctree | A Christmas tree right on your terminal |
eDEX-UI | Sci-fi computer terminal emulator and system monitor |
emoj | Simple tool that to find suitable emojis for pasting to your clipboard |
Emote | Modern popup emoji picker |
Evolvotron | Interactive generative art |
Fantascene | Dynamic wallpaper changer |
Fondo | Find beautiful wallpapers from Unsplash |
gti | Typo-based curio inspired by Steam Locomotive |
Hollywood | Fill your console with Hollywood melodrama technobabble |
linuxwave | Generate music from the entropy of Linux |
lolcat | Rainbows and unicorns |
No More Secrets | Recreates the data decryption effect from the Sneakers movie |
nook | Plays Animal Crossing hourly themes on the hour |
nyancat | Terminal-based Pop Tart Cat Animation |
oneko | Animal chasing fun |
pipes.sh | Animated pipes terminal screensaver |
ponysay | cowsay reimplemention for ponies |
projectM | Music visualizer originally based on Milkdrop |
pscircle | A different take on the venerable ps command |
PyBonsai | Generates procedural ASCII art trees |
pyjokes | One line jokes for programmers |
Pywal | Generate color schemes on the fly |
Relaxator | Relax to soothing sounds |
Rusty Aquarium | Monitoring by visualization |
Steam Locomotive | C program written in 295 lines. It's harmless fun |
Ternimal | Animated lifeform in the terminal |
terminal-parrot | Party parrot time |
tetris | Tile-matching puzzle video game in your terminal |
Variety | Wallpaper manager with many desktops and wallpaper sources |
WallGen | Generate HQ poly wallpapers with a few arguments. |
WallpaperDownloader | Download, change, and manage wallpapers |
xcowsay | Displays a cow on your desktop with message |
XDecorations | Add some festive cheer to your desktop |
XScreenSaver | Framework and collection of screensavers |
yosay | Like cowsay but with less cow |