[[ja:ボンゴ]]
Bongo is a usable, flexible, buffer-oriented media player for Emacs, developed in parallel to [[EMMS]] 2.0.  It runs on GNU Emacs 21 and above.

* [[https://github.com/dbrock/bongo GitHub Repository]]
* [[http://lists.nongnu.org/mailman/listinfo/bongo-devel Mailing List]] (Accessible with [[Gmane]])

Notable features of Bongo include
* separate playlist and library buffers (each of which you may have any number --- even zero of both is okay if you don’t need playlist functionality),
* hierarchical buffers with collapsable sections for each artist and album,
* familiar Emacs bindings for editing Bongo buffers (edit playlists much like you would regular text),
* a nice visual seeking interface doubling as a progress meter (hit `s'),
* a visual audio volume control ([[Volume]], which is actually a stand-alone package),
* built-in support for playing and retreiving information about audio CDs,
* built-in support for submitting information to Last.fm using `lastfmsubmitd',
* the ability to perform arbitrary actions (stopping playback is a simple example) once playback reaches certain points in the playlist, using so-called “action tracks”,
* an XMMS-like keymap for XMMS refugees,
* zero-configuration, out-of-the-box rock’n’roll action.

Bongo currently comes with backends for VLC, mpg321, ogg123, speexdec, Ti''''''Midity and Mik''''''Mod.  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 ==

: *2006/11/11* -- The Last.fm feature is enabled by default. If the ##lastfmsubmit## binary isn't in your ##exec-path##, customize ##lastfmsubmit-program-name##.

To toggle Last.fm mode for *individual* playlist buffers, use ##bongo-lastfm-mode##. To toggle it for *all* playlist buffers, customize ##bongo-global-lastfm-mode##

: ##bongo-lastfm.el## was merged into Bongo, so if you use Custom, it is no longer necessary to put anything in your <code>~/.emacs</code>
