Music image

tap is a terminal-based music player with fuzzy-finder

In Operation

A quirk of tap is that you must either start tap from a directory that contains music folders or specify a path that does e.g $ tap ~/Music. tap doesn’t start from my home directory unless I specify a path. If I change into the Music directory, tap starts without needing a path.

The image below shows what I see from ~/Music (it’s a small collection of albums published under a Creative Commons license).

tap fuzzy search

When starting tap, the software builds up a list of directories to search over. The software caches these directories at startup. The approach taken has the downside that tap is slow to start with large music collections. I’d prefer some sort of progress bar while the list of directories is being built. And the startup lag is repeated on each occasion as the software doesn’t store the directory list. A solution would be a option to write out the directory list to disk which could then be synced.

Here’s an image of playback of an album. The first thing to say is that I really love the cleanness of the interface. At the top is the album title, a list of the songs in the album, and a progress bar. Nothing else. It’s very simple but effective.

tap playing album

Another virtue of tap is that it’s surprising nimble navigating your music collection from a terminal courtesy of its various searching options. We can look up albums using the fuzzy search, as well as depth, filtered, artist, and album searching.

The fuzzy searching works in the same way as the fzf fuzzy finder utility but tap doesn’t rely on any external program. Press Ctrl + a shows all artists sorted alphabetically. If I now type a couple of letters (say b followed by e) tap displays only the artists which contain those letters. The tab key immediately returns me to a fuzzy search. The approach is much quicker than a file system browser approach and avoids all the issues associated with parsing metadata from albums containing more than one artist (which is actually fiendishly difficult to solve) although your music collection still needs correct audio tags.

One of the essential attributes of any music player is gapless playback. In political parlance, that’s a red line not to cross. Gapless playback is the uninterrupted playback of consecutive audio tracks, such that relative time distances in the original audio source are preserved over track boundaries on playback. It’s an essential feature if, like me, you listen to classical, electronic music, concept albums, and progressive rock. Probably 10% of my music collection is ruined without gapless playback.

When I first discovered tap, gapless playback wasn’t supported. Given how promising the software is, I raised an issue on the project’s GitHub repository. Within a few days, the developer added support for gapless playback. tap uses the Symphonia library which handles most popular audio codecs with support for gapless playback.

tap supports FLAC, the most important audio codec in my opinion, together with AAC, MP3, M4A, OGG, and WAV. Support for CUE would be useful.

Summary

I honestly think tap is awesome. The interface is wonderfully clean, there’s the essential gapless playback, and searching functionality aided by mouse support makes navigation a breeze. There are nice touches such as the option to listen to a random album, or random tracks.

The software is very frugal with system resources. The ps_mem utility reports memory usage is around 7.6MB. That’s wonderful!

Linux already has remarkable terminal-based open source music players, but tap genuinely offers something different.

If you’re looking for a more feature-laden terminal based music player I recommend musikcube, cmus, or termusic. But if you just want to listen to your music aided with great searching, tap is probably all you could possibly want.

Many Linux music players are stuffed with features such as smart playlist systems, cover art, MPRIS2 support, internet radio and so on. You won’t find any of those features with tap. And that’s actually really refreshing.

The developer intends to add track seeking which would be useful. A volume control would also be helpful. I’d love to see a ROADMAP of some sort to indicate what other features are planned. In some ways, I’m hoping the feature set will remain small and the developer will focus on fixing bugs. For example, with the hyper and tabby terminal emulators the track listing occasionally disappears, or blinks off and on when moving to the next track. Whatever the developer’s plans, let’s hope frippery such as a graphic equalizer is never on the cards.

Website: github.com/timdubbins/tap
Support:
Developer: Tim Dubbins
License: MIT License

tap is written in Rust. Learn Rust with our recommended free books and free tutorials

You’ll want to learn the keyboard shortcuts which are shown by pressing the ? key.

tap keyboard shortcuts

Pages in this article:
Page 1 – Introduction and Installation
Page 2 – In Operation and Summary

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments