Tag Archives: audio

mps: Not unlike its brother

I was sorely tempted to gloss over mps, because I mentioned mps-youtube way back in September. But I’ve spent a short time with it and I think it’s worthy of mention in its own right.


mps sticks very close to mps-youtube in terms of operation and playback; enter a search term at the startup and mps will show a series of results. Cue the number of the track and mps feeds it into mplayer (or mpv), and the standard keys and controls are available to you.

The home page for mps suggests it can also create playlists, search for single tracks or through album lists, download tracks as well as stream, and a few other nifty tricks.

The home page also says the program works with python 2.7 and 3.3, but does not require any python dependencies. I’m a little fuzzy on that, but as a general rule of life, I subscribe to the principle that less dependencies is better.

I’ll keep this short since much of what mps does is similar to mps-youtube, and rehashing the features of one isn’t necessarily an endorsement of the other. If you liked the way mps-youtube worked — and I did, quite a lot as a matter of fact — mps is going to be familiar and enjoyable. Try one, try the other. 😉

juke: Just a little more than the bare minimum

At the absolute minimum, you could expect to get sound playback out of your computer simply by tacking on file names and a few oddball flags to something like mpg123 or sox.

It’s not ideal, and it lacks the grace and dignity of a proper console application, but it will work and there are plenty of similar tools that can do it. So even in a worst-case scenario, you have your tunes.

In that sense, juke doesn’t offer a whole lot over those programs, either in terms of an interface or playback controls. In fact, juke is really only doing the tiniest bit over the bare minimum.

2014-12-24-jsgqk71-juke-01 2014-12-24-jsgqk71-juke-02

juke takes on a two-screen approach that might remind you of cplay or its kin. By default juke starts in a browser mode, showing files that you can add to a playlist with “a”, or navigate with HJKL or arrow keys.

Once you add a tune, it immediately starts playing. Press “t” to switch to the playlist view, and your navigation keys will again allow you to move through queue. If you need more help than that, press “h” and juke is kind enough to give you a rundown on key commands. There aren’t many to learn.

I made the point about juke offering very little over a command-line playback tool because juke is really just a frontend for mpg123 or sox. So you might find that it’s only the tiniest improvement over tacking filenames on to those programs.

juke adds a small layer of obfuscation as well. juke won’t start without a .juke.conf file in your home directory, but there’s no sample, and you need to copy-and-paste one out of the MANUAL file in the source tarball (it’s not terribly confusing).

juke also seems to also require a target directory, in the same way as ksmp3play or muzikq. I won’t split hairs here: That style is obtuse for me, and all the more so since juke is prepared to navigate through directories to find music files. So why not just start in the directory where the executable was issued? :\

juke is also not particularly beautiful, and aside from tagging files with a “q” when they are added to the queue, not a whole lot happens visually.

There’s also no time display, no obvious controls for playback except to skip titles, and no indicator that playback is started, unless you can hear it playing. I would strongly recommend you don’t use juke to troubleshoot your audio hardware. 😦

juke has two small positive points that I can find: It’s written in C, and that means it’s fairly light. Neither of those makes up for juke’s extremely lackluster performance though.

If you clicked on the link above, you already know the home page 404s. The source code for juke is in the Debian repos, and I was able to build it in Arch and use juke without issue. Oddly, the Debian rendition would install through the Mint repos but wouldn’t play back any sounds for me.

No major loss. I don’t think juke is a particularly fantastic audio playback tool, but I suppose it could hold its charms … if you’re looking for one step above the absolute minimum. 😐

bashtagger: Joining the coalition party

I eagerly await the arrival of the console tool that replaces EasyTag on my system — even more so now than I have for the past five or six years, because EasyTag took it upon itself to make the leap to GTK3, and now splatters my screen with all kinds of ungodly ugliness. 😳

I’ve come close, with both stag and cursetag, and my hope is that the prophet appears soon who will herald the arrival of the chosen one. I did get another tip from hakerdefo that bashtagger might be close, but I’m withholding my endorsement until the miracles can be verified. 😉


bashtagger works in a menu format, allowing you access to tag information in flac or ogg files (no mp3, which suits me fine). You can set and erase tags over single or multiple files at once, and most every interaction is done through a line-editing prompt.

Color use is good, and the menus are exceptionally easy to navigate. In fact, the only difficulty that I had with bashtagger was its preference to run from the same directory as its target files. I am not sure why my attempts to feed it a target directory were turned down, but it was easily sidestepped by moving the script to the same folder as the files.

bashtagger does allow for a configuration file, and apparently that’s where the options to rename files based on their tags must reside. I tried once or twice to rename music files according to their internal tags, but the results I got were different from what I expected. I will take responsibility for those errors though.

By my experience, bashtagger lacks the one small feature that might rank it with things like stag or cursetag — the ability to reverse the rename function, and fill tag data based on the file name.

It’s a bit of an oddball feature, but it’s the one I look for as a sign of a true believer. I looked long and hard at bashtagger, but I don’t think it includes that feature, which makes me sad. If I have overlooked it, please help me.

bashtagger does seem to streamline the omnipresent console tools that can fill data or erase tags via command-line flags, which I count as an improvement. I’d like for it to make the last remaining steps toward the few features it doesn’t yet have, but I am patient.

The collective irony is that between these three — stag, cursetag and bashtagger — and the built-in tagging tool in ncmpcpp, EasyTag might no longer be needed. … 😕

morsegen and morse2ascii: Since we’re on the subject

I have a couple of other small Morse telegraphy tools in my list, and since we covered cwcp in the last post, it’s probably a good time to throw them into the mix. Here’s morsegen, from Luigi Auriemma.


As you can see, morsegen is very straightforward, and really only reads text files and converts the contents into dash-or-dot sequences. No flags or frills, unless you consider the readout of Luigi’s fixed header to be a frill.

In that sense, I would prefer morsegen work a little more like morse, and accept text either as a target, or through a pipe. morsegen seems hard-coded to look for a target file, and read through that.

Which is all neither here nor there, and perhaps if you like, you can ask Luigi’s permission to adjust morsegen. I wonder if that wouldn’t make morsegen nearly identical to morse, though.

Here’s something a little more ambitious, by the same author: morse2ascii.


The inner workings of morse2ascii are beyond me, but suffice to say that it reads through a wav file, senses the tones, and converts them into text. You can see the analysis and the results in the screenshot, taken from a random sound file borrowed from The Internet. 😕

As far as I can tell, as someone unskilled in the art of decoding Morse telegraphy, morse2ascii is doing a good job. The file I borrowed was supposedly a training session, working through basic letters and digits before moving into specific sequences. It looks right, anyway.

morse2ascii has the same arrangement as morsegen though, and won’t accept strings and wants a target file. So if you want to stream audio through morse2ascii, you might need to first capture the broadcast, then feed it to morse2ascii. I leave it to you to solve.

Both programs compile and run fine in Arch; morse2ascii is in AUR if you prefer. Debian has both prepackaged. Debian users get all the cool toys. … 😉

aylet: Sounds across the Spectrum

I never had a ZX Spectrum. I never had a *00-series Atari computer either. I spent my formative years in front of a C64, as I have oft mentioned, and so a lot of the developments or innovations on other hardware is a little lost on me.

I can appreciate attempts to preserve the musical artistry of a generation or architecture though, so aylet is interesting to me.


So if the genius of the General Instrument AY-3-8910 sound chip escapes my appreciation, aylet is still fun to work with.

This might look a little like stymulator to you, and that was the first thing I thought of when I saw it. I didn’t take the time to dig through the history of aylet and stymulator, but it may be that they share the same author or code tree.

Key controls are on the screen, with switches for track control and a few other options. aylet may not be as visually attractive as some other players, but it knows its audience and does not disappoint.

aylet is in Debian but not in Arch/AUR; I compiled what you see there with the original source code from the Debian package page and had no problems. I needed alsa-oss again to keep it working with “modern” sound arrangements though. 😉

Oh, I almost forgot: You’ll need some sound files, of course. Start here and see what you can find. I am sure there’s something in there that will trigger the nostalgia region of your brain. 😉

bpm-tools: Music and … stuff

I think I might have mentioned in the past that I have an amazing, amazing lack of musical ability. I count myself lucky in some other departments, but talent with music is not one of them.

So I’m going to take it on faith that when bpm-tools tells me there are 94.196 beats per minute in Revolution Void‘s “Invisible Walls,” it’s telling the truth.


Because to be honest, I’d be at a real loss to prove it wrong. 😦

I don’t have any real reason to doubt bpm-tools, even if the home page is a little vague on the exact formulas used to analyze a particular track. I’m sure if you dip into the source code, all will be revealed.

Of course, even knowing how it goes about its calculations wouldn’t do me much good, since tempo analysis is probably something that … well, requires knowledge about … music and … stuff. Which I have already admitted I don’t have. :\

bpm-tools includes the bpm executable, and comes with a tagging utility so you can insert the results of the bpm executable into a file, for future reference. If you moonlight as a DJ from your Linux admin job, it might make things easier when looking for interlocking tunes.

bpm itself built perfectly for me in Arch, and I only touched up the bpm-tag script so it would access the executable in the same directory. Other than that, bpm-tools was a completely hands-free experience.

bpm-tools is in Debian for Jessie. There is a PKGBUILD in AUR that will hold your hand while you build bpm-tools, but doesn’t seem to take into account that sox is necessary to make it run. And if you want to draw on the tagging feature, you’ll need the appropriate library to support that (vorbis-tools for ogg files, just so you know).

stag: A good find, and a good tool

I got an e-mail from hakerdefo last week with a link to stag, which is an mp3/ogg/flac tag editor for the console, and this one is quite interesting.


I sense a lot of potential here. It seems to have all the requisite parts — a tree browser, a list of files to edit and a panel of tag data, all connected via the TAB key.

To get you started with stag, remember that the directory panel in the upper left only shows folders. I was stuck for a little while wondering why stag couldn’t “see” the files in a folder, until I realized it was expecting me to press the spacebar over a folder to add all the files in it.

Do that, and the files will appear in the right panel, as candidates for editing. Press TAB to bounce to the right, and you can again navigate up and down again with the arrow keys.

Now pressing the spacebar marks a file for editing, and you jump straight to the bottom panel and the available tag info with ENTER. If you press ENTER on a selected tag, you’ll be able to edit it along the lowest line of the screen, and press ENTER to submit it to that file.

You’re not done yet. Press TAB twice more to navigate back to the file window, and press “s” to save one file, or “w” to write them all to disk. And your work should be done.

I am thrilled with stag because it can handle editing more than one tag at a time. If you use the spacebar to highlight more than one file — or use the slash with a regex string for more control — then enter the info panel, differing tag info will disappear, and matching tag info will remain in the display.

Edit anything you like down there, and the information is held for all the files that are selected. Tags marked with an asterisk need saving. Write the files all out again, and you have multi-tag editing, in a nutshell. 😀

From there it becomes a quick matter to mass-correct or mass-fill music tags, correct dates or misspellings, or just about anything you could want to do.

There are a couple of things I’d like stag to do, and hakerdefo mentioned one or two of these as well:

  • Mass-erase specific fields, or even erase an entire tag, down to nothing. Sometimes that’s necessary. 🙄
  • Read tags from filenames and apply them as tag data. Some CLI tools will do this, and it doesn’t seem like a huge task.
  • Read tag data and apply it as filenames. Again, some CLI tools can do this, so it can’t be too preposterous.
  • An acknowledgment that files have been written to disk. As it is the cursor jiggles over a little, but no other visual cue that your changes have been applied.
  • Offer some sort controls over the file panel. If you were to open a giant folder of mixed files, you’d never find what you were looking for. Similarly, I have a tendency to look for particular things in order, and it’s weird to see things scattered out of sequence, like they are in that screenshot.
  • Color, and this time it just makes sense to me. You have three panels with a selection bar that bounces between all three. Adding color to each panel would make things easier to spot, and make the selection bar stand out dramatically.

I’m very pleased with stag, mostly because I think it has the potential to fill the gap at the Linux console for a proper, fullscreen tag editor application. It has a little way to go before it stands up to something like EasyTag, but I sense the Force is strong with this one. 😉

cuse: For this, I shall recuse myself

I have spoken previously on my lack of musical skill or talent, and it has come back to haunt me again with cuse.


cuse is a midi sequencer written completely in ncurses, with a fantastic colorful interface, drop-down menus, load-and-save functions, horizontal scrolling on playback, pop-up dialog menus, a slew of track functions and specific controls … almost all of which is completely lost on the vulgar, like me.

Add to that my meager luck with midi applications — I think timidity++ was the only thing midi-ish that has ever actually worked for me — and you can see why I should probably sit this one out.

I’m impressed though, even if I don’t know what I’m doing with cuse, or how to use it properly. If you have more experience with it or can offer some basic advice to a noob like me, I’d be happy to get it.

For the mean time, I’m content with lots of color, a fullscreen and full-width display, easy-to-navigate menu access, nifty peak level animation, steady horizontal panning and a slim running profile. I shouldn’t need to know how to use it — all that is more than enough to keep me happy. 🙂

cuse is in AUR and will require libcdk as a dependency; the cdk version I got out of AUR was out-of-date, but just needed a version correction and updated integrity sums before it would build. cuse itself gave me no problems.

I don’t see this in Debian. Come on, Debian! Let’s get going here! 😉

klick: Well that was awkward

So I find myself in the awkward situation of having shot my mouth off about klick, a digital metronome, and the lack of sound it made when I tried it out.

ids1024 pointed out my mistake — that the -P flag tells klick to output to speakers. I apologize for my error; my only explanation is that I didn’t recognize the prompt from the help page of “automatically connect to hardware ports” meant “make sound.” That, and I didn’t expect a digital metronome to default to silence. 😳 🙄

And as if all that wasn’t bad enough, now that it’s working as I suppose it should, I realize that it’s rather pointless for me to show you klick in the first place.


Well, that much I found on my own. And I can’t convey the sound klick makes through a PNG file*, so I could have spared myself the embarrassment, posted the same screenshot with a dorky smiley face and a thumbs up, and a caption of “Works great for me!” 🙄

So the moral of the story is: Lie. Don’t ask too many questions. Just lie. 😡

What you see there is the Debian version running in LMDE. klick is in the repos, but won’t draw in jackd so be sure to add that to your system.

Start it up with klick -i -P for the interactive mode and actual sound. Adjust the meter with the 1 through 0 and the q through r keys. Volume can be adjusted with the plus and minus keys, and the tempo is controlled with arrows.

My final confession is that I have all the musical talent of a brick; I can make music if rattling pots and pans or pressing the “play” button on a CD player is “making music.”

Which means the last and greatest irony of this little misadventure is that I have no practical reason to keep klick around. All that embarrassment, and nothing to show for it. 😦

*Well, I suppose I could, if I recorded the sound, then embedded it in the file with something like steghide. But that would be more work to record and inject and extract than just letting you install klick yourself. …

lienmp3: How far we’ve come

Ordinarily when a program fails to deliver as badly as lienmp3 did, I’m content to roll it into a post with some other remainders. In this case though, I’m going to make an exception.

Everything about lienmp3 is likely to be disappointing to you: The download link was hidden, the source code is as much as a dozen years out of date, the interface is loud and poorly arranged, and ultimately, even though it would compile and run, when comes time to play music, lienmp3 just flat quits and returns you to the prompt. It’s a collection of faults.

So why mention it at all?


No, it’s not the abundant use of color, even if that’s more than I could ever ask for. And it’s not the relatively easy navigation and on-screen key legend. Even that is a bit … mangled.

If I have to be honest, it’s because I’m sentimental. :\

Almost a decade ago, I was pushing people not to discard 800Mhz machines. Five years ago that had risen to 2.5Ghz. Now I find myself suffering the dreadful weight of the web on a 12-year-old Pentium 4. Times change.

So when the home page for lienmp3 claimed it was (at some point in time) quite usable on 90Mhz Pentium-grade hardware, and could possibly work on slower machines if you were willing to downgrade to mono output … I felt a little nostalgic.

A boast of that nature just doesn’t happen any more. Nobody tries to align their software with the hardware of 1998; it’s just assumed that you’re running multiple cores and double-digit gigabytes of memory. Console software isn’t valued by its ability to transfer to sub-100Mhz CPUs any longer.

And claiming a foothold on the Pentium-era hardware means lienmp3 ostensibly falls into a discrete class of software, on par with things like mjs and a few other ancient titles, that were striving for lower system specs at a time when “lower” meant pre-1996. 😐

So forgive me if I hold up a broken, poorly arranged, difficult-to-find mp3 player on the grounds of a claim I can’t even verify. In this case, it’s just interesting to look back, and see how far we’ve come.