Bongo

Bongo is a beautiful, flexible and usable buffer-oriented media player for Emacs, developed in parallel to EMMS 2.0. It runs on GNU Emacs 21 and above.

Code
https://github.com/dbrock/bongo
Mailing list
<bongo-devel@nongnu.org> (see http://lists.nongnu.org/mailman/listinfo/bongo-devel) — in Gmane as gmane.emacs.bongo.devel (see http://dir.gmane.org/gmane.emacs.bongo.devel)

Notable features of Bongo include

Bongo currently comes with backends for VLC, mpg321, ogg123, speexdec, TiMidity and MikMod. All backends support pausing and resuming, but only VLC and mpg321 support interactive seeking. Defining your own non-interactive backends is very simple. For example, this is how a couple of the built-in backends are defined:

 (define-bongo-backend speexdec
   :matcher '(local-file "spx"))
 (define-bongo-backend timidity
   :pretty-name "TiMidity"
   :extra-program-arguments '("--quiet")
   :matcher '(local-file "mid" "midi" "mod" "rcp" "r36" "g18" "g36"))

Of course, it is also possible to add your own complex backends with support for interactive operations like seeking.

There is a collection of nifty hacks at BongoHacks.

Last.fm

As of November 11, 2006, the Last.fm functionality is enabled by default if the ‘lastfmsubmit’ executable can be found (if it’s not in your ‘exec-path’, please customize ‘lastfmsubmit-program-name’). To toggle Bongo Last.fm mode for individual playlist buffers, use ‘bongo-lastfm-mode’. To toggle it for all playlist buffers, use or customize ‘bongo-global-lastfm-mode’. (The file bongo-lastfm.el has been merged into bongo.el, and if you use Custom it is no longer necessary to put anything in your ~/.emacs.)