Vuiet, the music player and explorer for Emacs
Playing and discovering new music from within Emacs has never been easier. With vuiet you can,
Search and play any song, artist or create your own playlists which you can listen.
Playlists can be created on a multitude of criteria. Most of the playlists contain a fixed number of songs which are played one after another. But some playlists are able to pick songs at random, indefinitely.
Playlists can be created from:
- songs from a given artist
- all the songs from an artist's given album
- songs from artists similar to a given artist, taken at random
- songs from artists with the given genre
- all the user loved songs, sequentially or at random
- songs from artists similar the user loved songs artists
- songs similar to the currently playing song
Take advantage of lastfm's huge music dataset to figure out what are an artist top songs, the similarities between artists, each artist music genre, a user loved songs and listening history, etc.
Search all the tracks on youtube and play them in the background with mpv, so not music files are necessary on your machine.
Display an artist or music genre in an interactive buffer from which you can direcly play songs or explore similar artists or genres.
Display the lyrics for the currently playing song and save it in a local database.
Search through all the lyrics in your local database and select a song to play.
Vuiet has the music discoverability factor of lastfm or spotify but with the comfort and power of Emacs.
You can ask vuiet to play random tracks from random artists similar to an artist you already know and like. For example,
(vuiet-play-artist-similar '("steven wilson"))
There is no limit to the number of artists specified in this call. New tracks will be selected from random artists similar to artists from this list. The number of similar artists and the number of top tracks to consider, among others, is fully customizable.
Or you can play random tracks from random artists that are tagged with any of the genres you specify,
(vuiet-play-tag-similar '("classic rock" "80s"))
There are multiple variations on these two type of playlists, some of them random and basically infinite, others finite and sequential, some based on artists, other on genres or on lastfm user loved tracks or even single track play, given directly or from a lyrics search. The posibilities are endless. See the playlists section for details.
Besides the player, there is also an explorer. I won't bore you with the details, just know that you can call it, and then explore everything on that page. Handy for picking out specific tracks for listening or for casually browsing similar artists or genres.
(vuiet-artist-info "steven wilson")
Search, browse and play from lyrics
Google is nice for searching that song that's in your head. But sometimes you just can't find it. Either the lyrics are too general and Google finds only cr**, either your track is obscure enogh that nobody has heard about it.
Either way, you can save the lyrics for each song you play with
your saved lyrics are searchable, filterable and playable. Having a Google-like
search for your local database of lyrics can come in handy.
Here, let me show you,
Vuiet searched through all the lyrics in my database for the ones that contain
secret in them. Hit
<enter> on any song from that list, and
play it. Nice, eh?
The recommendation system is based on lastfm. So you should have a lastfm account and the lastfm.el package installed first (see the lastfm.el README for details). The tracks themselves are taken from youtube via youtube-dl and played with mpv in the background (i.e. with the --no-video option). You should have both of them installed.
vuiet-play-artist artist random
Play the ARTIST top tracks. If RANDOM is t, play the tracks at random, indefinitely. The number of tracks is equal to VUIET-ARTIST-TRACKS-LIMIT.
Play the currently playing artist's top tracks. If RANDOM is t, play the tracks at random, indefinitely. The number of tracks is equal to VUIET-ARTIST-TRACKS-LIMIT.
Play the full album of the currently playing track.
Open an info buffer for the currently playing track album.
vuiet-play-album artist album
Play the whole ALBUM of the given ARTIST. If called interactively, the album can be picked interactively from the ARTIST's top albums.
Play tracks from artists similar to ARTISTS. ARTISTS is a list of strings of the form '(artist1 artist2 etc.) If called interactively, multiple artists can be provided in the minibuffer if they are sepparated by commas.
Play tracks from artists similar to the playing artist. This function is similar to `vuiet-play-artist-similar', only the list of artists is limited to the artist of the currently playing track.
Play tracks from artists similar to TAGS. If called directly, TAGS is a list of strings of the form '(tag1 tag2 etc.) If called interactively, multiple tags can be provided in the minibuffer if they are sepparated by commas. Random tracks from random artists that have tags equal to one of the TAGS are played. The number of artists with the given tag taken into account is equal to VUIET-TAG-ARTISTS-LIMIT while the number of tracks is equal to VUIET-ARTIST-TRACKS-LIMIT.
Play tracks from artists with similar tags as the current tags. Random tracks from random artists that have tags equal to one of the tags of the currently playing artist are played. The number of artists with the given tag taken into account is equal to VUIET-TAG-ARTISTS-LIMIT while the number of tracks is equal to VUIET-ARTIST-TRACKS-LIMIT.
vuiet-play-track artist name
Play the song NAME from the given ARTIST. If called interactively, let the user select and play one of the ARTIST's top songs, where ARTIST is given in the minibuffer.
Search TRACK and play the selected item. Similar to `vuiet-play-track', but search for TRACK on last.fm first and then let the user select one of the results. The selected item is what is played by vuiet. Useful if you don't know the exact name and/or artist of the song.
Search a track by LYRICS and play it.
Select a track from the user loved tracks and play it. The user loved tracks list is the one associated with the username given in the setup of the lastfm.el package.
vuiet-play-loved-tracks (random nil)
Play all the tracks from the user loved tracks. If RANDOM is t, play the tracks at random, indefinitely. The user loved tracks list is the one associated with the username given in the setup of the lastfm.el package.
vuiet-play-artist-loved-tracks artist random
Play all the ARTIST tracks found in the user loved tracks. Similar to `vuiet-play-loved-tracks', but play only the tracks from the given ARTIST.
Play one of the recent listened tracks.
Play tracks based on artists similar to loved tracks artists. Random tracks from random artists similar to a random artist from the list of user loved tracks are played. The user loved tracks list is the one associated with the username given in the setup of the lastfm.el package. The number of similar artists taken into account is equal to VUIET-ARTIST-SIMILAR-LIMIT and the number of tracks is equal to VUIET-ARTIST-TRACKS-LIMIT.
Display an album from ARTIST and optionally play it. The album is displayed in a dedicated buffer. See `vuiet-album-info' for details and active keybindings inside this buffer.
vuiet-play songs (random nil)
Play everyting in the SONGS list, randomly or sequentially. SONGS is a list of type ((artist1 song1) (artist2 song2) ...).
Display info about ARTIST in a new buffer. p play all the artist songs, sequentially. s select and display info for a similar artist with ivy. l visit the artist's lastfm page.
Search ARTIST and display info about the selected item. Similar to `vuiet-artist-info', but search for ARTIST on last.fm first and then let the user select one artist from the resulting list of artists. Vuiet then displays the info about the user selected artist. Useful if you don't know the exact name of the artist.
Display info about TAG in a new buffer.
vuiet-loved-tracks-info (page 1) (n 50)
Display N tracks from the user loved tracks in a new buffer. If the user has more than N loved tracks, PAGE can be used to show the next PAGE * N tracks. <enter> On a song entry, plays that song only. i Display the next PAGE * N songs. u Display the previous PAGE * N songs, if N > 1 s Choose a song to play, with ivy.
vuiet-album-info artist album
Display info about the ARTIST's ALBUM in a new buffer. s choose a song with ivy. a pick another album with ivy. p play all songs from the album. l save lyrics for this album.
Search all albums from ARTIST and display the selected one. The album is displayed in a dedicated buffer. See `vuiet-album-info' for details regarding the active keybindings inside this buffer.
Stop playing and clear the mode line.
Return the currently playing artist.
Return the currently playing track name.
Return the playing TRACK as a human-readable string.
Skip the currently playing track and play the next.
Play the currently playing track from the beginning.
vuiet-seek-backward (seconds 5)
Seek backward the given number of SECONDS.
vuiet-seek-forward (seconds 5)
Seek forward the given number of SECONDS.
Toggle the play/pause status.
Display info for the currently playing artist in a new buffer.
Open a youtube search for the currently playing track.
Visit the ARTIST lastfm page."
Visit he currently playing artist lastfm page.
Add the currently playing track to the user loved songs.
Remove the currently playing track from the user loved songs.
Display the lyrics for the currently playing track in a new buffer. See `versuri-display' for the active keybindings inside this buffer.
Update the mode line.
Time, in seconds, for the same song to play before scrobbling it.
Enable/disable last.fm scrobbling. Decide if the currently playing track should appear in your list of recently played tracks on last.fm.
Number of artists similar to the given artist. When considering artists similar to a given artist, take as many into consideration as this limit. A lower value might mean artists and tracks you already know and love. A higher value increases the chances you'll discover something totally new.
Number of tracks for the given artist. When considering the top tracks for a given artist, take as many into consideration as this limit. A lower value might mean tracks from this artist that you already know and love. A higher value increases the changes you'll discover something totally new but it also increases the chances that you'll get wrongly scrobbled songs and youtube will find something totally unrelated as a result.
Number of artists for the given tag. When considering the top artists for a given tag, take as many into consideration as this limit.
Number of tracks to take into consideration when playing user loved tracks. A number higher than your actual lastfm loved tracks, will take all of them into consideration. A lower values is useful for taking into consideration only the most recently loved tracks.