Listen.el (new music player for Emacs)

Been playing around with this over the weekend: GitHub - alphapapa/listen.el: Audio/music player for Emacs Got tired of the complexity of other Emacs music players (like, just try setting up EMMS for the first time). And although I like and use MPD, I sometimes want to play files not in its library. This listen.el just uses VLC as a backend to play individual tracks, and the rest is handled in Emacs. (And other backends could be added as that’s generalized.)

No documentation yet, but it’s already quite usable, has queue buffers, transient menu, etc.

Decided to eschew the word “playlist” and just go with “queue.” Queues are currently saved with persist.

There will still be bugs, so don’t be surprised if you have to wipe out all the queues at some point.

Also, if you do use MPD, there’s a command to add files from MPD’s library to a Listen queue: listen-queue-add-from-mpd.

[Edit: Now available on GNU ELPA: GNU ELPA - listen]

10 Likes

FYI, I added a readme and have continued adding and polishing.

2 Likes

I’ve been using emms, but am having a hard time getting the browser and playlist views to play nice when I’ve updated my collection.

Looking forward to try this approach!

1 Like

FYI, listen is now available from GNU ELPA, and I just released v0.3: Release v0.3 · alphapapa/listen.el · GitHub

2 Likes

Note that Listen.el uses VLC to play audio, so it must be installed.

Do you plan support for other backends, e.g., mpv?

Patches welcome. The infrastructure is there, but VLC is all I need. :slight_smile:

FYI, I released v0.5: Release v0.5 · alphapapa/listen.el · GitHub

Also, a screenshot is in the readme now:

This looks really good! I’ve been looking for a good reason to start using mp3s more and streaming services less.

Yep, nothing beats a finely curated personal music library. :slight_smile:

1 Like

Amazing work, definitely am enjoying it though had some weirdness with elpaca getting it going. A couple of questions/usecases that I’m curious about: (And if these don’t line up with what you’re planning, that’s fine)

  • I’d like to point it at a directory and just say play everything underneath here. Shuffle or not. Is that a queue thing? (Add everything to a queue and go?)

  • I also would like to point it at a directory and have a search for everything below that directory to play an individual track. Currently I do this by adding to a queue and then playing from the queue. playing a track or viewing a library doesn’t seem to work by files.

  • And finally, albums, is there a way to make it do album based on the metadata? If not , that’s fine, can create m3us and go from there :smiley:

But all in all, this is really great and I’m definitely a fan. (On a side note, and if I’m asking too much I apologize, but I see a huge number of your projects and use many of them because they are wonderful, and I’ve always wondered what your workflow looks like in general. These things all seem to play very well together and I’m curious what that looks like! Is there a blogpost or similar somewhere? )

EDIT TO ADD:

MPD. MPD is the answer I was looking for :smiley:

Hi Jeremy,

FYI, if you have issues with Elpaca, you should talk to its maintainer, Nic, as he’s very responsive and wants to fix issues with it.

I’d like to point it at a directory and just say play everything underneath here. Shuffle or not. Is that a queue thing? (Add everything to a queue and go?)

Yes, M-x listen-queue-add-files RET, choose a file or a directory. You can then shuffle the queue (tracks are always played in order, but you can shuffle the queue at any time, and you can set the repeat mode to shuffle the queue after it’s done).

I also would like to point it at a directory and have a search for everything below that directory to play an individual track. Currently I do this by adding to a queue and then playing from the queue. playing a track or viewing a library doesn’t seem to work by files.

Use the listen-library command to view a “library” view for a directory. Then RET on a file or section of files to add them to a queue and play it.

And finally, albums, is there a way to make it do album based on the metadata? If not , that’s fine, can create m3us and go from there

I don’t know what you mean by “make it do album”, but metadata is already shown in library and queue buffers.

MPD. MPD is the answer I was looking for

I’m not sure what you mean, but, yes, you can search for tracks from a local MPD server and play them with listen. The transient menu shows commands for it (and almost all other commands–feel free to explore with M-x or apropos-command for a few others).

But all in all, this is really great and I’m definitely a fan.

Thanks, I’m glad to hear that it’s useful to you. Please feel free to send feedback (and file any bugs on the tracker).

(On a side note, and if I’m asking too much I apologize, but I see a huge number of your projects and use many of them because they are wonderful, and I’ve always wondered what your workflow looks like in general. These things all seem to play very well together and I’m curious what that looks like! Is there a blogpost or similar somewhere?)

It’s hard to say what my workflow looks like in general. If you have more specific questions, I can try to answer them. I don’t have a blog (yet? I dunno, I’ve thought about it for years…).

The best I can probably say at this point is that my workflows are now based upon my new activities library. Almost everything I do in Emacs now is based on switching to an “activity” first. It saves me a tremendous amount of time and effort, and it makes some things trivial which would otherwise be impractical (e.g. switching to a window configuration showing three specific Org subtrees in three different Org files so I can review clocktables for different contexts all at once).

I also make use of my bufler package for switching buffers (although I also now use activities-switch-buffer since adding it recently), and burly bookmarks for some things, and project commands.

And if I’m having trouble getting motivated or getting started, my hammy package is helpful for using interval timers (e.g. “pomodoro”-style).

Anyway, let me know if you have more specific questions.

1 Like

FYI, listen.el v0.7 is released: Release v0.7 · alphapapa/listen.el · GitHub

FYI, v0.8 is released: Release v0.8 · alphapapa/listen.el · GitHub

1 Like

FYI, v0.9 is released: Release v0.9 · alphapapa/listen.el · GitHub

This finally fixes a bug with the main Transient menu’s autoloads, which was unnoticed by me since my config loaded the library immediately. So now, for users who just install the package and call M-x listen RET, it should work!