FOSSPicks

FOSSPicks

Author(s):

This month Graham checks out OpenRGB, QMPlay2, OctaSine, HiFiBerryOS, Speed Dreams, and much more!

Universal PC LED controller

OpenRGB

Even if flashy PC hardware with multicolor lights isn't your thing, it's now difficult to buy something that doesn't want to glow or flash in some way. RAM modules, mainboards, cooling systems, CPU fans, power supply units, and even USB ports often sport complex arrays of LEDs and displays that can be used to indicate everything from temperature to their owner's lack of taste. Of course, all of this can typically be turned off or tuned to the same color, but only if you have each manufacturer's custom executable for each brand and product branch. Oh, and you'll need a copy of Microsoft Windows. Linux users are often left in the dark, literally, when it comes to software support for these lights. We're often left struggling with Wine when we need to bend these devices to our will.

This has led to groups of enthusiastic users and developers reverse engineering the protocols behind many of these devices. They then skillfully use this information to create third-party tools that chase product IDs and serial numbers, as well as the huge variety of methods and mechanisms these products use to create their blend of red, green, and blue light. This is what OpenCorsairLink did, for example, and liquidctl, both of which we've covered in these pages. But even with these brilliant tools, you're still left with a disparate collection of utilities for different devices, all of which make their own interface choices and design decisions. This is why the all-encompassing OpenRGB project is so brilliant.

OpenRGB is a desktop application that can talk to hundreds of different light-emitting devices from dozens of different manufacturers. It does this in a consistent and predictable way across all the devices it supports. There's support for devices from AMD, ASRock, ASUS, Cooler Master, Corsair, eVision, Gainward, Gigabyte, Logitech (keyboards and mice), MSI, Razer, Thermaltake, and many others. Most will just work, while a few require some kernel tweaks or a kernel module for your distribution. If your device connects via USB, you'll need to add a new (documented) rule to enable non-root access. Others, such as the Philips Hue Bridge, require a few configuration options such as IP and MAC addresses added to the global configuration file.

After this has been done, you can launch OpenRGB. It first needs to scan your system for everything it supports. This can take some time, but there's also the option to filter this scan to only devices you know you have. As soon as the scan is complete, the devices will appear as a vertically tabbed list in the main window. Regardless of each device's capabilities, you can change the colors of the selected lights in the same way, using the same hue wheels and sliders. You can also create zones for sets of lights, apply color changes to an entire set, and save an entire setup to a profile. This is great if you want different setups for different uses, such as watching movies (complete with Philips Hue control), playing games, or just low light in the evening. It's remarkable that this all works from a single application.

Project Website

https://gitlab.com/CalcProgrammer1/OpenRGB

1. Universal access: Control all of your LED devices from one place. 2. API access: Integrated server and client enables remote access to your lights. 3. Zones: Group LEDs together, across brands and devices, and control them in unison. 4. Color definitions: Regardless of the hardware, there is a single approach to color programming across every device. 5. Profiles: Save a configuration set as a profile for easy retrieval and profile switching. 6. Hardware support: Dozens of PC-connected devices work with OpenRGB, even Hue 2nd generation devices. 7. Plugin support: Extend the simple color configurations with your own light show plugins.

Media player

QMPlay2

The quest for the perfect media player has become a little like the quest for the Holy Grail. There are many options to explore, with many potential candidates. VLC gets close; it plays a huge variety of audio and video formats and is used by millions. But its many easy and expert configuration panels are difficult to navigate, and the application sometimes fails at even simple tasks, such as playing online content or creating a playlist. QMPlay2 makes it easier to do both of these things, and it supports just as many media formats, thanks to its FFmpeg back end. Another excellent feature of QMPlay2 is its hardware acceleration. This works on OpenGL and Vulkan graphics drivers and can make the difference between being able to play 4K sources, or simply 720p, on low-power hardware.

This being a Qt application, almost everything about the main window can be configured. By default, it's split into quarters. The top left is a tabbed container that holds the playback pane and tabs for the equalizer, download status, Internet radios, and lyrics. The top right holds the content information, with the playlist located bottom right. The bottom left offers two audio visualization modes. Everything is very intuitive. If you paste a YouTube URL into the application window, for example, youtube-dl is first installed (if needed) and the target video plays automatically. There are no intrusive ads, and the video and audio quality is exceptional. You can even control this quality via the Modules configuration page by requesting a specific resolution. The same is true for many of the playback modules supported by FFmpeg. The configuration pages are a huge improvement over those offered by VLC, because they're easy to navigate and understand. There are options from PulseAudio to ALSA, audio and decoder priority, latency values, audio delays, subtitles, decoding options, and hardware acceleration, all of which are accessible and easy to apply.Project Website

https://github.com/zaps166/QMPlay2

Chip music, YouTube, Internet radio, CD images: QMPlay2 can play. almost anything and is more accessible than alternatives like VLC.

Synthesizer

OctaSine

Back in the very early 1980s, synthesizers were analog and, consequently, very expensive. Rather than the mass manufactured surety of digital, analog required masses of discrete components to make a single sound. If you wanted two sounds, all those components were copied to an identical circuit. Some of those analog synths used two or three sounds to make a single voice, and some could play eight voices together. They cost the same as a small house. The digital Yamaha DX7 was the opposite and almost single-handedly destroyed this analog hegemony. It produced amazing sounds purely digitally and mathematically by exploiting the harmonics that occur when you modulate the frequency of one sound (an operator) with another. Its circuits used software to create 16 voices, whose patches could be saved to memory. The DX7 was relatively cheap, reliable, and soon on every PC soundcard and home games console. The frequency modulation (FM) of the DX7 is still very much with us today.

OctaSine is a VST plugin software synthesizer that updates the sound of the original DX7 on your Linux box. Unlike the wonderful Dexed, which authentically recreates the DX7 sound, OctaSine branches out into new sonic territory and has a slightly different configuration. It has only four operators, unlike the DX7's six, but allows these to be connected and interconnected in almost any way. Each operator is independent and can be modulated by three different frequency modifiers, the envelope, and many other sources. Operator output can be merged to the final output or routed to the input of other operators, recreating the algorithms of the original DX7 plus many more differential configurations. It's complex, but unlike the small LED screen and membrane buttons of the DX7, OctaSine's user interface and audio quality rewards simple experimentation. You can achieve great results by simply clicking around or modifying one of the presets – it sounds fantastic.

Project Website

https://github.com/greatest-ape/OctaSine

As a plugin, OctaSine will need to run within a plugin host, such as Ardour.

Storage monitor

Parallel Disk Usage

There are lots of tools for looking at disk usage, and we've covered quite a few of them over time in these pages. On the command line, many of us simply resort to piping the output from du into a variety of other tools or use either dutree or ncdu for a more visual approach. The only problem is that all of these tools can take a considerable amount of time to grind through your data before they can produce their output. And you invariably want to change the search after getting the results, which means going through the same process again. Parallel Disk Usage (pdu) has been developed to solve this problem.

Parallel Disk Usage is orders of magnitude faster than any of the alternatives. On modern systems with SSD storage and multiple cores to spare, we barely noticed the difference in output time between the humble ls and pdu. This is despite pdu displaying all the files and directories beneath your chosen destination, complete with lines to show their relationships, their size, and an incredibly useful bar chart that gives you a quick overview of which files and folders are taking the most space. The chart defaults to showing a percentage value for how much of the destination space a specific file or directory is taking. It's a brilliant way to find unexpected resource sinks, such as hidden cache directories or forgotten virtual machines. There are configuration options to change its width, measure blocks rather than bytes, limit trawling depth, and even output the results as JSON. The "parallel" in its name refers to the mechanism that makes pdu so quick – or "blazingly fast," as the project puts it. This mechanism harnesses the parallelized nature of the Rust programming language to make best use of the multiple cores in your CPU, which is why pdu results are delivered with the same speed and agility as ls.

Project Website

https://crates.io/crates/parallel-disk-usage

Running Parallel Disk Usage in your home directories will easily reveal where unknown storage is being used.

File sharing

LANDrop

There are many ways to share files, but the ad hoc, local file-sharing functionality found on Android and Apple devices has become very popular. This hasn't been easy to replicate on Linux – because people don't use Linux enough because it's missing features such as these. LANDrop is a refreshing change from the norm. It's an open source, ad hoc, local file-sharing tool that supports nearly all platforms equally, including iOS, macOS, Android, Windows, and Linux. It promises to seamlessly let you share files without giving up your privacy, going through an online proxy, or even using cellular data. You don't have to worry about how a third-party may intercept the transfer, and it does all of this while being open source. All the data required for a transfer is stored on your device, and the only data visible to whomever you are sharing a file with is the device name, type, and IP address. Even these can be turned off.

There are official apps for iOS and Android (the latter via a non-store APK), which makes transferring files with friends much easier, or you can, of course, build the package yourself. On the Linux desktop, after building and running the background daemon, the app will helpfully notify you that it's now running and can be managed via its small panel icon. From this icon, you can change your device name and whether your device is discoverable, along with where you want files to go. If device discoverability doesn't work, or you don't want to use it, you can also resort to sharing raw IP addresses, which obviously adds an extra technical step. This option is available when you choose to send one or more files, which can be listed in the Send to window before you simply click Transfer. Your files are then quickly and efficiently copied to the remote device.

Project Website

https://landrop.app

Local transfer encryption is courtesy of the widely adopted libsodium.

Technical text editor

KeenWrite

There are now (probably) more people writing words than ever before. Whether it's an email, feature specification, social media post, blog post, article, tutorial, or even a book, technology has liberated us. Any old text editor can be used for small documents, but as soon as you need to organize your writing, edit, reference your research, or single source a part for reuse, you typically need to find a more ambitious option. We've previously looked at novelWriter, a brilliant Markdown-based IDE for collecting your thoughts alongside writing and editing your words. KeenWrite is another writer's IDE, with a more unique proposition. It too offers a writing environment, but with a greater emphasis on the "development" in the IDE part.

What makes KeenWrite unique, and more like a programmer's development environment, is that it's a Markdown editor that uses string interpolation to separate and modularize the content you write from the presentation and layout. The main view is split into three panes, with the middle pane being the traditional editor, the right pane holding a real-time preview of the output, and the left pane holding variables. These variables are literally the key to string interpolation because they allow you to assign key and value pairs within a YAML-formatted document that can then be referenced and interpolated in the main Markdown document. A simple example would set a book's title as a string, with the string then used in the Markdown rather than the name itself. The book's title can then be easily changed as quickly as it takes to change the string name, which is always reflected in the real-time preview. The editor helps with all of this by offering autocomplete for the key and value pairs you define. The editor also integrates R syntax, SVG support, Mermaid, Graphviz, UML elements, Pandoc-like HTML div elements, and PDF output.

Project Website

https://github.com/DaveJarvis/keenwrite

KeenWrite can substitute strings for their values within a body of text to help keep edits and mistakes to a minimum.

Modal text editor

Helix

Keeping with text editors, but moving away from the Java GUI of KeenWrite (above) to the command line, Helix is a self-described "post-modern text editor" for programmers. Post-modern in this sense seems to mean doing something different from the long-accepted ways of editing, and that difference is working on multiple selections at once – a process also known as modal text editing. We've seen this before in an editor called Kakoune. Helix is similar, but its implementation of the same idea feels more endemic to the application. Multiple selections are made by first selecting everything using the % key, then using the s key to enter a regular expression and pressing Enter to fix the results. You can then perform an action on that multiple/modal selection, such as pressing d to delete whatever is selected or even move the now multiple result cursors with h, j, k, and l.

This sounds intimidating, but the editor isn't hard to use. Being on the command line, it does assume you're familiar with other command-line editors, such as Vim, and even mimics some of Vim's keyboard shortcuts. Unlike Vim (and like Kakoune), however, many of the commands are reversed to reflect the selection bias. Instead of dw to delete a word, for example, you press w to highlight the word and d to delete it. This feels more intuitive than Vim, especially when you start to understand the multiple selection potential. Helix lists all the commands available within a lower panel, complete with help text; you can select these commands using the cursor keys, so you don't need to remember the shortcuts manually. Similarly, the documentation lists all the possible commands on a single page, so it's worth keeping this open as you learn the basics. Editing in this way quickly becomes intuitive, and you can always undo a mistake. On top of this, syntax highlighting looks fantastic, and there's context-aware code completion. It's also very light on system resources, performant, and runs perfectly in a remote shell. Give it a try!

Project Website

https://helix-editor.com/

In a pleasant contrast to many terminal text editors, Helix is purple by default. This can of course be changed, but we liked it.

Music distro

HiFiBerryOS

HiFiBerryOS is an open source Linux distribution, but not in the way most of us expect. It's a distribution designed to perform one specific function, and as such, facilitates neither the installation of extra packages nor the modification of its configuration. That one specific function is music playback, whether it's from Spotify, a roaming iOS device, a network-connected music library, Internet radio, or from any of several other sources. It's also a distribution that's been designed to work with the audio converters sold by HiFiBerry, but it works just as well with third-party converters, and, in particular, a DIY hacking board by Bang & Olufsen called Beocreate.

HiFiBerryOS's web interface is superb and looks fantastic on any device. Updates are transparent and automatic.

What sets HiFiBerryOS apart from other distributions is its razor-sharp focus. It has been designed to do nothing other than play music, and it does this by being immutable. This is why there's no package manager, and it only officially supports the Raspberry Pi as a platform. The system image is built using Buildroot. With the source available, it should be straightforward building your own for other platforms. You can also copy across your own binaries using the SSH connection. However, in concession to many people wanting more from their Raspberry Pi deployments (and the likely unused resource potential in devices such as a RPi4), the latest release of HiFiBerryOS also runs Docker, making it ideal for extra servers or web applications you might want to run safely confined without compromising the finely tuned integrity of the operating system.

For most users, none of this is going to be necessary. The default installation does everything you'll need to handle audio playback, and every important feature is accessible via a beautifully designed web interface. This lets you easily configure your network connection, which sources you wish to enable, before configuring your listening preferences. Its capabilities are dependent on your hardware, but you can typically assign channels to audio output, limit volume levels, and switch between and save listening presets. The digital signal processing (DSP) on the Beocreate, for instance, can be used to model speaker characteristics and even run your own audio-processing code, alongside a parametric equalizer, chaining playback to other devices and supporting room compensation. Room compensation lets you manually set the position of each speaker relative to your listening position, or automatically via a microphone, adding slight delays to ensure sound from each speaker reaches your ears at the right time.

Audio playback works without any further configuration. The open source spotifyd successfully takes over Spotify duties, and AirPlay from Apple's devices works perfectly, creating a seamless and totally transparent music playback system. The same is true of DLNA, OpenHome, Snapchat, Roon, and Logitech Media Server. There's an inbuilt Internet radio player, and you can also find Music Player Daemon (MPD) running in the background – its web UI does need to be enabled and started from the command line though. MPD can access local files and files mounted from a Samba source, either from an MPD client or the integrated Music browser, letting you host your own 24-bit FLACs for the true audiophile experience. As long as you've got the hardware to back it up, this creates an amazing, high-quality music playback system.

Project Website

https://www.hifiberry.com/hifiberryos/

The Music Player Daemon transparently serves your local music collection, but its web interface can also be enabled as an option.

Retro RTS

Widelands

There was something special about the Settlers game on the Amiga. While 1993 may still have been early days for real-time strategy (RTS) games, Settlers was already able to transcend the established mechanics of resource management and war machines to create something that could be equally pastoral and relaxing. From farming to milling and building infrastructure, it was a game that let you create your own medieval enclave at a time before creative modes of gameplay were a thing. Of course, if and when you wanted to use your supply chain to build an army that would take over neighboring settlements, you could do that, too. But the huge attraction to Settlers was that the game eased you into all these gameplay elements without forcing you too quickly into combat or empire building. If you wanted, you could simply farm corn.

This approach must have resonated with many players, because the gameplay in Settlers and its superior sequel, Settlers II, is still being developed today, especially in Widelands, which has finally attained a 1.0 release. Widelands is an open source RTS game that's been heavily inspired by Settlers II. We even looked at a much earlier release many years ago, and the project itself is 15 years old. However, Widelands has kept up development and has kept expanding on the original concept. You still start with a small clan that you need to put to task cutting down wood, smelting iron, building roads, and setting up a trading network with any neighboring tribes. There's both a single player mode and a multiplayer mode, and this is where the real fun begins. You and your friends (or random denizens of the Internet) can equally choose to trade together or to destroy each other, all while building and expanding your own settlements and resource routes. Modern hardware means Widelands can do all this while managing potentially thousands of your settlers, each of which might be performing their own jobs or preparing for war.

Project Website

https://www.widelands.org/

Unlike many modern versions of old games, Widelands has its own assets and its own fully matured game modes.

Racing simulator

Speed Dreams

We last looked at a racing car simulation nearly a year ago. That was a game called Trigger Rally, which was a fun and playable arcade rally game. That review mentioned TORCS and Speed Dreams as possible alternatives, and it's brilliant to see that Speed Dreams recently picked up some development momentum. It's actually a multiplatform fork of TORCS itself, updating the even sparser 3D graphics with a new rendering engine and adding force feedback support to specific steering wheels. The game itself feels very similar to Geoff Crammond's original Formula 1 Grand Prix games on the early PCs and Amigas, albeit with modern frame rates and wider hardware support. This isn't a bad thing. What those early simulations lacked in modelling accuracy and photo-accurate rendering, they made up for with addictive playability and gameplay.

Speed Dreams is a first-person, in-seat racing game with tracks and locations inspired by real places. There's a split-screen mode, a professional career mode, and plenty of tuning options and car statistics to worry about, from G-force to tire wear. This latest release adds a location called Sao Paulo, which is based on the JosÈ Carlos Pace circuit more commonly known as Interlagos. It also adds new categories and car collections inspired by F1 racing in 2005 and 1967, as well as some famous non-F1 supercars. It plays brilliantly and makes a refreshing change from modern racing games with their many distractions. In Speed Dreams, you're forced to concentrate on the challenge of driving a perfect lap while also aggressively making your way through a field of drivers or defending your position from drivers behind you. You don't have to concern yourself with a backstory or winning a contract next season, but purely on winning points against the other racers. This is what made racing games originally fun, and it's great to report that it's still fun all these years later.

Project Website

https://sourceforge.net/projects/speed-dreams/

The graphics may be austere, but they run blazingly fast on modern hardware and can run on a huge variety of computers.