Showing posts with label rhythmbox. Show all posts
Showing posts with label rhythmbox. Show all posts

Monday, March 5, 2012

Rate songs in notifications with Rhythmbox

Update: Keeping in mind the feedback, I have enabled instant update of the notification once the ratings are changed in my new patch to the notification plugin of Rhythmbox.


When do you rate your songs?

I have a huge music library. Enough to keep me engaged for more than a month if I listen to each song in a row with no repeats. Hence, my preferred time for rating songs is while I am listening to it.


Currently, this process is somewhat complicated. I have to go to Rhythmbox's workspace, rate the song and then figure out which workspace did I just leave and then continue my previous work. This interrupts my work flow.

However, Gnome 3 allows actions in its notifications and one can already do the Previous, Play/Pause, Next actions from within the notification.

Sunday, May 29, 2011

USB drive as a music carrier using Banshee/Rhythmbox

The old ways of sharing music may soon become passé with Amazon and Google both stepping into the cloud music ring, but till that becomes mainstream, here is a nifty trick to easily share music using your USB stick and a music player such as Rhythmbox or Banshee.

My USB Drive/Audio book reader

Saturday, November 13, 2010

Get more play count information in Rhythmbox

I am obsessed with keeping track of what my musical taste is like, and to be able to get quantitative as well as qualitative information about it. Last.fm (and now libre.fm)with audio scrobbling (both via Rhythmbox as well as my old iPod Shuffle), satiates my needs for numbers most of the time, but I would like to know a little more. Initially, I just wanted to know which is the album I listen to the most, but it could easily be generalised to much more easily.
Hence, I made a small plugin extra-playcount for Rhythmbox, (Note: It maybe better to get more recent version of the files from the launchpad code branch) which gives me just that little bit more information. To see the plugin in action, select multiple songs and select properties to get an extra tab in the info window.
The additional data presented is:

  1. Number of songs by each artist
  2. Playcount of songs by each artist
  3. Number of songs in each album
  4. Playcount of each album
For bug tracking and development I have set it up as a project on launchpad here.

Installation instructions:
  • Extract the contents of the tar ball in home_directory/.gnome2/rhythmbox/plugins
  • Restart Rhythmbox.
  • Go to menu Edit  Plugins and enable Extra-Playcount

extraPlaycounts.jpg
Extra playcount plugin in action in Rhythmbox

Getting Rhythmbox to play desired songs in awesome

Awesome is a pretty good tiling window manager I have recently taken some liking to. I initially started with it for the simple reason that I was working with a Matlab script which spawned tens of figures and I wanted to view them simultaneously. I am sure there are easier ways of viewing those graphs than switching window managers from Gnome (which I still think is pretty good) to Awesome, but it was a valid reason to procrastinate in my own way. :-)
Anyhow, some of the things I really missed from Gnome were:
  1. sticky notes
  2. Gnome-Do and Pidgin integration (opening IM windows by just Super + Space + Buddy name )
  3. Gnome-Do and Rhythmbox integration (playing songs by just Super + Space + Song name )
It is the last thing which I got tired of today and looked at how I can fix it. The configuration turned out to be fairly easy to, thanks to the general awesomeness of Awesome and handy Lua documentation. It happened in the following steps:
  1. Getting to know rhythmbox-client can play songs using their URI, which is just the path of the file in case of local files.
  2. Understanding how to configure awesome using /.config/awesome/rc.lua
  3. Figuring out how to get a prompt to type in a song name, which turned out fairly simple thanks to awful.prompt
  4. Understanding functions in Lua and writing functions for Notification and running the rhythmbox client:

    myRhythmboxFunction = 
    function (c)
    home = os.getenv("HOME")
    file = io.open(home .. "/.song_list")
    if not file then
    myNotifyFunction("~/.song_list does not exist")
    else
    found = false
    myNotifyFunction("Searching for " .. c)
    c = string.lower(c)
    for song in file:lines() do
    songLower = string.lower(song)
    if string.find(songLower, c) then found = true awful.util.spawn ("rhythmbox-client --play-uri=\"" .. song .. "\"") myNotifyFunction("Found, playing") break end end file:close() if not found then myNotifyFunction("Not found") end end end


    It is not difficult to guess what this function does:
    • Open the file /.song_list
    • Read one line at a time and figure out whether the parameter $c$ occurs in the string or not (not very robust)
    • If so, great! Play it!
    • Otherwise, if no song is found, display a notification and let things be
    I have not described how I made myNotifyFunction , because it is embarrassingly simple to implement using naughty, but I did it in a horribly complicated way using awful.util.spawn and notify-send . But, hey! This is just supposed to be a proof of concept, right? :-)
  5. Understanding how to add global key bindings:
    awful.key({ modkey,           }, "p",
               function ()
                 awful.prompt.run({ prompt = "Play: " },
                 mypromptbox[mouse.screen].widget,
                 myRhythmboxFunction,
                 nil)
               end),
    
    Here, mypromptbox is just the usual Run prompt which I have borrowed to act as the play prompt box.
After these rudimentary changes, I did:

find /my/music/folder | grep -v 'No directories' > ~/.song_list 

To prepare the .song_list file needed in myRhythmboxFunction , and voila!
My songs are now Super + P + Song name away!
The next additions on my dashboard are the Pidgin integration and some sort of periodic mail notification without needing either evolution or thunderbird running in the background.
Some other holiday ...

Automatic playlists in Rhythmbox

This is a neat trick that I didn't know Rhythmbox had up its sleeve. I have made a few automatic playlists which keep me a little closer to my songs:

  1. Play count > 5 and last play time is at least a week before.
  2. Play count = 4
  3. Rating 4 stars and play count > 4
  4. ...
This option is available in menu Music -> Playlist -> New automatic playlist.
If you haven't already, you must give it a try!