1533 lines
67 KiB
Plaintext
1533 lines
67 KiB
Plaintext
This is bongo.info, produced by makeinfo version 6.8 from bongo.texi.
|
||
|
||
Copyright (C) 2007 Daniel Brockman
|
||
Copyright (C) 2007 Daniel Jensen
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.2 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, no Front-Cover Texts, and
|
||
no Back-Cover Texts. A copy of the license is included in the
|
||
section entitled "GNU FDL".
|
||
INFO-DIR-SECTION Emacs
|
||
START-INFO-DIR-ENTRY
|
||
* Bongo: (bongo). Play music with Emacs.
|
||
END-INFO-DIR-ENTRY
|
||
|
||
|
||
File: bongo.info, Node: Top, Next: Introduction, Up: (dir)
|
||
|
||
The Bongo Media Player
|
||
**********************
|
||
|
||
Bongo is a flexible and usable media player for GNU Emacs. This manual
|
||
describes how to use Bongo and some of how to customize and extend it.
|
||
|
||
Copyright (C) 2007 Daniel Brockman
|
||
Copyright (C) 2007 Daniel Jensen
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.2 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, no Front-Cover Texts, and
|
||
no Back-Cover Texts. A copy of the license is included in the
|
||
section entitled "GNU FDL".
|
||
|
||
* Menu:
|
||
|
||
* Introduction:: An overview of basic Bongo concepts.
|
||
|
||
Using Bongo
|
||
|
||
* Inserting Tracks:: Populating your buffers with media.
|
||
* Playing Tracks:: Listening to audio and watching video.
|
||
* Enqueuing Tracks:: Picking tracks from libraries into playlists.
|
||
* Marking Tracks:: Choosing sets of tracks to operate on.
|
||
* Saving and Loading:: Storing Bongo buffers in files.
|
||
|
||
Advanced Topics
|
||
|
||
* The P/R/M Convention:: Convention used by many Bongo commands.
|
||
* Action Tracks:: Special tracks that perform actions.
|
||
|
||
Hacking Bongo
|
||
|
||
* Internals:: How Bongo works and how to hack it.
|
||
* Writing Backends:: Telling Bongo how to use other players.
|
||
|
||
Copying Bongo
|
||
|
||
* GNU GPL:: Conditions for copying and changing Bongo.
|
||
* GNU FDL:: The license for this documentation.
|
||
|
||
Here are some other nodes which are really inferiors of the ones
|
||
already listed, mentioned here so you can get to them in one step:
|
||
|
||
Basics
|
||
|
||
* Tracks:: Media files, URIs, audio CDs, DVDs, etc.
|
||
* Backends:: External applications used to play tracks.
|
||
* Players:: External processes actually playing tracks.
|
||
* Playlists:: Buffers holding tracks to be played.
|
||
* Libraries:: Buffers holding entire media collections.
|
||
|
||
Playback
|
||
|
||
* Pausing:: Temporarily stopping playback.
|
||
* Stopping:: Permanently stopping playback.
|
||
* Seeking:: Rewinding or fast-forwarding tracks.
|
||
* Volume:: Changing the volume of your sound card.
|
||
* Switching Tracks:: Playing the next or previous track.
|
||
* Playback Modes:: Choosing the order in which tracks are played.
|
||
* Sprinkle Mode:: Keeping playlists populated with random tracks.
|
||
|
||
|
||
File: bongo.info, Node: Introduction, Next: Inserting Tracks, Prev: Top, Up: Top
|
||
|
||
1 Introduction
|
||
**************
|
||
|
||
You are reading about Bongo, a flexible and usable media player for GNU
|
||
Emacs. Bongo is flexible because it does not assume that you want to do
|
||
things in a certain way.
|
||
|
||
On the other hand, its default settings and key bindings are good and
|
||
carefully thought-out. So Bongo is usable because it does not force you
|
||
to come up with your own way of doing things.
|
||
|
||
To open a Bongo buffer, use 'M-x bongo <RET>'. To switch between
|
||
playlist and library, use the 'h' ('bongo-switch-buffers') command.
|
||
There are a few different ways to go from here.
|
||
|
||
* One way to use Bongo is to go to a playlist, insert some tracks,
|
||
and just play those tracks in some order (*note Playing Tracks::).
|
||
* Another way is to insert a lot of tracks into a library, and pick
|
||
out some of them into a playlist (*note Enqueuing Tracks::).
|
||
* Yet another way is to let Bongo continuously pick out fresh random
|
||
tracks from the library into the playlist (*note Sprinkle Mode::).
|
||
|
||
Five ideas central to Bongo are "tracks", which represent media
|
||
resources; "backends", which are applications used to play media;
|
||
"players", which are instances of backends; and "playlists" and
|
||
"libraries", which are buffers used to organize tracks.
|
||
|
||
The following sections explain these basic ideas in turn.
|
||
|
||
* Menu:
|
||
|
||
* Tracks:: Media files, URIs, audio CDs, DVDs, etc.
|
||
* Backends:: External applications used to play tracks.
|
||
* Players:: External processes actually playing tracks.
|
||
* Playlists:: Buffers holding tracks to be played.
|
||
* Libraries:: Buffers holding entire media collections.
|
||
|
||
|
||
File: bongo.info, Node: Tracks, Next: Backends, Up: Introduction
|
||
|
||
1.1 Tracks
|
||
==========
|
||
|
||
Bongo is a media player; its job is to play things. The things that it
|
||
plays are called "tracks". Bongo tracks can represent local audio and
|
||
video files, remote media streams (such as internet radio stations),
|
||
audio CD tracks and DVD chapters.
|
||
|
||
There are even tracks that perform arbitrary actions when played
|
||
(*note Action Tracks::). Such tracks may be used, for example, to force
|
||
playback to stop at certain points in a playlist.
|
||
|
||
To insert a local file track into a playlist or library, use 'i'.
|
||
Other kinds can be inserted using 'I' (*note Inserting Tracks::).
|
||
|
||
|
||
File: bongo.info, Node: Backends, Next: Players, Prev: Tracks, Up: Introduction
|
||
|
||
1.2 Backends
|
||
============
|
||
|
||
Instead of actually attempting to decode media files to produce sound
|
||
and display video, Bongo relies on external applications to do this.
|
||
The applications it uses for this purpose are called "backends".
|
||
|
||
The term "backend" is used loosely to refer to either an external
|
||
application, or to the glue code in Bongo specific to that application,
|
||
or even to both the application and the glue code seen as a whole.
|
||
(This usage is quite natural and normally does not cause any confusion.)
|
||
|
||
Bongo currently ships with backends for VLC, 'mpg123', 'ogg123',
|
||
'speexdec', TiMidity and MikMod. Unfortunately, only VLC and 'mpg123'
|
||
support fast-forwarding and rewinding (*note Seeking::).
|
||
|
||
|
||
File: bongo.info, Node: Players, Next: Playlists, Prev: Backends, Up: Introduction
|
||
|
||
1.3 Players
|
||
===========
|
||
|
||
Instances of backends (*note Backends::) are called "players" (or
|
||
"backend players"). Every time a track starts playing, a new backend
|
||
player is created. Multiple players may exist simultaneously.
|
||
|
||
For example, while there is only one VLC _backend_, there may be
|
||
multiple VLC _players_ at any given time -- each probably playing a
|
||
different track.
|
||
|
||
Every player has an associated process (which does the actual work of
|
||
playing) and an associated buffer (from which it may be controlled).
|
||
Bongo buffers designed to hold players are called "playlist buffers".
|
||
|
||
|
||
File: bongo.info, Node: Playlists, Next: Libraries, Prev: Players, Up: Introduction
|
||
|
||
1.4 Playlists
|
||
=============
|
||
|
||
Playlist buffers, or simply "playlists", are buffers specifically
|
||
designed to hold and control backend players (*note Players::).
|
||
|
||
Playlists have a number of commands used to control playback: play
|
||
the track at point (<RET>), pause/resume playback (<SPC>), go to the
|
||
next track ('C-c C-n'), go to the previous track ('C-c C-p'), stop
|
||
playback ('C-c C-s'), and so on (*note Playing Tracks::).
|
||
|
||
Some backends support fast-forwarding and rewinding (*note
|
||
Seeking::).
|
||
|
||
|
||
File: bongo.info, Node: Libraries, Prev: Playlists, Up: Introduction
|
||
|
||
1.5 Libraries
|
||
=============
|
||
|
||
Library buffers, or simply "libraries", are buffers specifically
|
||
designed to hold tracks for convenient insertion into playlist buffers.
|
||
|
||
After inserting tracks into a library (using 'i' and 'I'), you may
|
||
enqueue into the nearest playlist using the 'e' command (which appends
|
||
to the end of the playlist) and the 'E' command (which inserts into the
|
||
playlist directly after the currently playing track).
|
||
|
||
All the commands for controlling playback (*note Playlists::) are
|
||
also available in library buffers, where they simply control playback in
|
||
the most recently used, or "nearest", playlist buffer. Similarily, if
|
||
you attempt to play a track in a library (using <RET>), the track will
|
||
be enqueued into the nearest playlist and played there instead.
|
||
|
||
You may prefer to use Bongo without library buffers, simply inserting
|
||
tracks directly into playlists. There is no problem with that:
|
||
libraries are provided only as a convenience.
|
||
|
||
|
||
File: bongo.info, Node: Inserting Tracks, Next: Playing Tracks, Prev: Introduction, Up: Top
|
||
|
||
2 Inserting Tracks
|
||
******************
|
||
|
||
'i'
|
||
Insert a file or directory ('bongo-insert-file').
|
||
|
||
'I'
|
||
Insert one or more non-file tracks ('bongo-insert-special').
|
||
|
||
If you try to insert a directory with subdirectories, Bongo will ask
|
||
whether you want to recursively insert them too. To get rid of this
|
||
question, customize the variable 'bongo-insert-whole-directory-trees'.
|
||
|
||
The 'I' command prompts for the type of thing to insert -- an action
|
||
track, a CD, a URI, or the contents of a PLS or an M3U playlist. These
|
||
special insert commands are described individually below.
|
||
|
||
'I action <RET>'
|
||
Insert an action track ('bongo-insert-action').
|
||
|
||
This command prompts for an Emacs Lisp form to be evaluated when
|
||
the action track is played. *note Emacs Lisp Reference:
|
||
(elisp)Top.
|
||
|
||
'I cd <RET>'
|
||
Insert one track for each audio track on the CD in the tray
|
||
('bongo-insert-cd'). If the track information is unavailable,
|
||
insert a single track representing the entire disc.
|
||
|
||
The customization group 'bongo-audio-cd' covers this feature.
|
||
*note (emacs)Easy Customization::
|
||
|
||
'I uri <RET>'
|
||
Insert a URI track ('bongo-insert-uri').
|
||
|
||
This commands prompts for the URI (or URL) and for an optional
|
||
title. If specified, the title will be displayed instead of the
|
||
URI. For most internet radio streams, leaving out the title enables
|
||
the radio station to specify a title on its own.
|
||
|
||
'I playlist <RET>'
|
||
Insert the contents of a PLS or an M3U playlist file
|
||
('bongo-insert-playlist-contents').
|
||
|
||
The type of the playlist is determined by its file extension:
|
||
|
||
* 'pls' for PLS playlists;
|
||
* 'm3u' or 'm3u8' (forces UTF-8) for M3U playlists.
|
||
|
||
While PLS files are rather complex, M3U files are simple lists of
|
||
file names (one per line, except that lines starting with '#' are
|
||
comments).
|
||
|
||
|
||
File: bongo.info, Node: Playing Tracks, Next: Enqueuing Tracks, Prev: Inserting Tracks, Up: Top
|
||
|
||
3 Playing Tracks
|
||
****************
|
||
|
||
To play some particular track, move point to it and hit <RET> (or click
|
||
on it). Doing that on a section header will just collapse the section;
|
||
to play a section, use 'g' ('bongo-play').
|
||
|
||
<RET>
|
||
Play the track at point. If point is on a section header, collapse
|
||
or expand the section.
|
||
'g'
|
||
Play the track or section at point, unless there is an active
|
||
region or marking (*note Marking Tracks::).
|
||
|
||
In choosing which tracks and sections to play, this command follows
|
||
the prefix/region/marking (*note The P/R/M Convention::), so it may
|
||
not actually always play the track or section at point.
|
||
'1 g'
|
||
Play the track or section at point, even if there is an active
|
||
region or marking.
|
||
|
||
Since libraries are not meant to play tracks, the <RET> and 'g'
|
||
commands enqueue into the nearest playlist and play there instead when
|
||
used in a library buffer.
|
||
|
||
* Menu:
|
||
|
||
* Pausing:: Temporarily stopping playback.
|
||
* Stopping:: Permanently stopping playback.
|
||
* Seeking:: Rewinding or fast-forwarding tracks.
|
||
* Volume:: Changing the volume of your sound card.
|
||
* Switching Tracks:: Playing the next or previous track.
|
||
* Playback Modes:: Choosing the order in which tracks are played.
|
||
* Sprinkle Mode:: Keeping playlists populated with random tracks.
|
||
|
||
|
||
File: bongo.info, Node: Pausing, Next: Stopping, Up: Playing Tracks
|
||
|
||
3.1 Pausing Playback
|
||
====================
|
||
|
||
It is often useful to temporarily pause playback without killing the
|
||
backend process. The <SPC> command toggles the paused state of the
|
||
currently playing track.
|
||
|
||
<SPC>
|
||
Pause or resume playback ('bongo-pause/resume').
|
||
|
||
Some backends (e.g., VLC and 'mpg123') support pausing by talking to
|
||
the backend process through a pipe. For backends where this is not
|
||
possible (due to lack of any such remote control facility), pausing is
|
||
implemented using 'SIGTSTP' (or 'SIGSTOP') and 'SIGCONT', which forces
|
||
the entire process to stop (just as 'C-z' would in a job control shell).
|
||
|
||
|
||
File: bongo.info, Node: Stopping, Next: Seeking, Prev: Pausing, Up: Playing Tracks
|
||
|
||
3.2 Stopping Playback
|
||
=====================
|
||
|
||
The 'C-c C-s' command stops playback and kills the backend process.
|
||
However, if nothing is being played, then 'C-c C-s' instead _starts_
|
||
playing the first track.
|
||
|
||
'C-c C-s'
|
||
Start or stop playback ('bongo-start/stop').
|
||
'C-u C-c C-s'
|
||
Switch to start/stop playback mode, in which playback stops
|
||
whenever any track finishes playing (*note Playback Modes::).
|
||
'1 C-c C-s'
|
||
Insert a stopping action track (*note Action Tracks::) immediately
|
||
after the current track. ("Stop after playing this track.")
|
||
'5 C-c C-s'
|
||
Insert a stopping action track five tracks below the current track.
|
||
("Stop after playing these five tracks.")
|
||
'C-u C-u C-c C-s'
|
||
Insert a stopping action track at point.
|
||
|
||
|
||
File: bongo.info, Node: Seeking, Next: Volume, Prev: Stopping, Up: Playing Tracks
|
||
|
||
3.3 Fast-forwarding and Rewinding
|
||
=================================
|
||
|
||
Some backends support fast-forwarding and rewinding -- often referred to
|
||
as "seeking" forward or backward. This allows you to skip over some
|
||
part of a track or go back and play some part of it again.
|
||
|
||
'f', 'b'
|
||
Fast-forward or rewind the current track 1 second (or N seconds,
|
||
given a prefix argument N).
|
||
|
||
'F', 'B', 'S-<right>', 'S-<left>'
|
||
Fast-forward or rewind 3 seconds (or 3 N seconds).
|
||
|
||
'M-F', 'M-B', 'M-S-<right>', 'M-S-<left>'
|
||
Fast-forward or rewind 10 seconds (or 10 N seconds).
|
||
|
||
'C-M-F', 'C-M-B', 'C-M-S-<right>', 'C-M-S-<left>'
|
||
Fast-forward or rewind 60 seconds (or N minutes).
|
||
|
||
While 'C-M-B' and 'C-M-F' cannot be typed in all terminals, you may
|
||
use the following commands as substitutes:
|
||
|
||
'60 b', '60 f'
|
||
Seek 60 seconds.
|
||
|
||
'C-u C-u C-u b', 'C-u C-u C-u f'
|
||
Seek 64 seconds.
|
||
|
||
To seek a specific number of seconds, give a numeric prefix argument
|
||
to 'f' or 'b'. (For example, '27 f' would seek 27 seconds forward.)
|
||
|
||
To seek to a specific position, use the 's' ('bongo-seek') command
|
||
with a numeric prefix argument. (For example, '80 s' would jump
|
||
directly to 1 minute and 20 seconds from the beginning of the track.)
|
||
Giving just 'C-u' as the prefix argument to 's' will prompt for the
|
||
position to seek to and allows you to say things like "1:20".
|
||
|
||
Unfortunately, not all backends support seeking. Among the ones in
|
||
the Bongo distribution, VLC and 'mpg123' do support it, whereas
|
||
'ogg123', 'speexdec', TiMidity and MikMod do not.
|
||
|
||
3.3.1 Seek Mode
|
||
---------------
|
||
|
||
Typing 's' ('bongo-seek') without any prefix argument takes you into a
|
||
special mode dedicated to seeking. In this mode, all the seeking
|
||
commands work as usual, but you can drop most of the 'S-' modifiers.
|
||
For example, 'S-<left>' still works, but <left> does the same thing.
|
||
|
||
's'
|
||
Enter seek mode. Use <RET> or 'C-g' to exit.
|
||
|
||
In seek mode, playback status is shown continuously in the echo area,
|
||
and the following extra key bindings are available:
|
||
|
||
'a', 'e', <home>, <end>
|
||
These are shortcuts for 'C-c C-a' ('bongo-replay-current') and 'C-c
|
||
C-e' ('bongo-skip-current').
|
||
|
||
'p', 'n', 'r'
|
||
These are shortcuts for 'C-c C-p' ('bongo-play-previous'), 'C-c
|
||
C-n' ('bongo-play-next'), and 'C-c C-r' ('bongo-play-random').
|
||
|
||
Seek mode uses its own command loop, so you cannot do anything other
|
||
than seeking (and a handful of other things) until you quit seek mode.
|
||
If you don't like this, set 'bongo-seek-electric-mode' to 'nil'.
|
||
|
||
|
||
File: bongo.info, Node: Volume, Next: Switching Tracks, Prev: Seeking, Up: Playing Tracks
|
||
|
||
3.4 Volume
|
||
==========
|
||
|
||
The volume control facility is provided by the 'volume' library (1).
|
||
|
||
The 'v' ('volume') command
|
||
|
||
---------- Footnotes ----------
|
||
|
||
(1) http://www.brockman.se/software/volume-el/
|
||
|
||
|
||
File: bongo.info, Node: Switching Tracks, Next: Playback Modes, Prev: Volume, Up: Playing Tracks
|
||
|
||
3.5 Switching Tracks
|
||
====================
|
||
|
||
The 'C-c C-n', 'C-c C-p' and 'C-c C-r' commands are used to start
|
||
playing another track (stopping any currently playing track first).
|
||
|
||
'C-c C-n'
|
||
Play the next track ('bongo-play-next').
|
||
'C-c C-p'
|
||
Play the previous track ('bongo-play-previous').
|
||
'C-c C-r'
|
||
Play a random track ('bongo-play-random').
|
||
'5 C-c C-n'
|
||
Skip four tracks downwards and play the one after that.
|
||
'5 C-c C-p'
|
||
Skip four tracks upwards and play the one before that.
|
||
|
||
Though '0 C-c C-n' may be used to play the current track again, it is
|
||
easier to use the 'C-c C-a' command.
|
||
|
||
'C-c C-a'
|
||
Play the current track again ('bongo-replay-current').
|
||
|
||
Just as the regular 'C-a' command in Emacs has a counterpart 'C-e',
|
||
so 'C-c C-a' has a counterpart 'C-c C-e'.
|
||
|
||
'C-c C-e'
|
||
Skip the current track ('bongo-skip-current'). Proceed according
|
||
to the current playback mode (*note Playback Modes::).
|
||
|
||
|
||
File: bongo.info, Node: Playback Modes, Next: Sprinkle Mode, Prev: Switching Tracks, Up: Playing Tracks
|
||
|
||
3.6 Playback Modes
|
||
==================
|
||
|
||
Whenever a track finishes playing (or is skipped using 'C-c C-e'),
|
||
normally, the next track in the playlist will be played. This is the
|
||
default behavior, but it can be changed. The way Bongo chooses which
|
||
track to play next is called the "playback mode".
|
||
|
||
There are five built-in playback modes. Switching to one of them is
|
||
easily done by giving a 'C-u' prefix argument to the corresponding
|
||
playback command:
|
||
|
||
'C-u C-c C-n'
|
||
In "progressive playback", the default playback mode, tracks are
|
||
played in the usual top-to-bottom order.
|
||
|
||
'C-u C-c C-p'
|
||
In "regressive playback", tracks are played in reverse order,
|
||
bottom-to-top.
|
||
|
||
'C-u C-c C-a'
|
||
In "repeating playback", the same track is played over and over.
|
||
|
||
'C-u C-c C-s'
|
||
In "start/stop playback", playback is stopped after each track.
|
||
|
||
For example, this is often nice when your playlist contains videos
|
||
that would otherwise keep popping up, covering your Emacs frame.
|
||
|
||
'C-u C-c C-r'
|
||
In "random playback", tracks are played in random order. For an
|
||
alternative to random playback mode, *note Sprinkle Mode::.
|
||
|
||
When a non-progressive playback mode is in effect, this is indicated
|
||
in the mode line:
|
||
|
||
* 'Playlist[reverse]' for regressive playback;
|
||
* 'Playlist[repeat]' for repeating playback;
|
||
* 'Playlist[stop]' for start/stop playback;
|
||
* 'Playlist[random]' for random playback;
|
||
* 'Playlist[custom]' for custom playback modes (to change this for
|
||
some specific custom playback mode, put the string to be used as
|
||
the indicator on the 'bongo-playback-mode-indicator' property of
|
||
the symbol naming the function used for 'bongo-next-action').
|
||
|
||
|
||
File: bongo.info, Node: Sprinkle Mode, Prev: Playback Modes, Up: Playing Tracks
|
||
|
||
3.7 Sprinkle Mode
|
||
=================
|
||
|
||
|
||
File: bongo.info, Node: Enqueuing Tracks, Next: Marking Tracks, Prev: Playing Tracks, Up: Top
|
||
|
||
4 Enqueuing Tracks
|
||
******************
|
||
|
||
The following commands are used to enqueue tracks into the playlist:
|
||
|
||
'e'
|
||
Append a track to the end of the playlist.
|
||
'E'
|
||
Insert a track into the playlist directly after the currently
|
||
playing track (in order to have it played next).
|
||
|
||
|
||
File: bongo.info, Node: Marking Tracks, Next: Saving and Loading, Prev: Enqueuing Tracks, Up: Top
|
||
|
||
5 Marking Tracks
|
||
****************
|
||
|
||
|
||
File: bongo.info, Node: Saving and Loading, Next: The P/R/M Convention, Prev: Marking Tracks, Up: Top
|
||
|
||
6 Saving and Loading
|
||
********************
|
||
|
||
|
||
File: bongo.info, Node: The P/R/M Convention, Next: Action Tracks, Prev: Saving and Loading, Up: Top
|
||
|
||
7 The Prefix/Region/Marking Convention
|
||
**************************************
|
||
|
||
Many Bongo commands follow a certain convention, called the P/R/M
|
||
convention, which makes it possible to predict which objects a command
|
||
will operate on.
|
||
|
||
Normally, a command operates on the track or section under point.
|
||
However, if any tracks are marked (*note Marking Tracks::), the command
|
||
operates on those instead--unless there is an active region, in which
|
||
case the command operates on the tracks and sections in the region. All
|
||
of this may be overridden by giving a numeric prefix argument, which
|
||
tells the command how many tracks or sections to operate on, counting
|
||
from point. Most commands allow negative prefix arguments for operating
|
||
on tracks before point.
|
||
|
||
Note that giving a prefix argument of '1' tells a command to operate
|
||
on the track or section under point regardless of any marking or region
|
||
that may be in effect.
|
||
|
||
'&'
|
||
Force the next command to use the P/R/M convention
|
||
('bongo-universal-prefix/region/marking-object-command').
|
||
|
||
'M-&'
|
||
Force the next command to use the P/R/M convention, but to operate
|
||
only on tracks--never on sections
|
||
('bongo-universal-prefix/region/marking-track-command').
|
||
|
||
|
||
File: bongo.info, Node: Action Tracks, Next: Internals, Prev: The P/R/M Convention, Up: Top
|
||
|
||
8 Action Tracks
|
||
***************
|
||
|
||
|
||
File: bongo.info, Node: Internals, Next: Writing Backends, Prev: Action Tracks, Up: Top
|
||
|
||
9 Internals
|
||
***********
|
||
|
||
|
||
File: bongo.info, Node: Writing Backends, Next: GNU GPL, Prev: Internals, Up: Top
|
||
|
||
10 Writing Backends
|
||
*******************
|
||
|
||
The predefined backends support commonly used media files and players.
|
||
To use other programs with Bongo, you can define your own custom
|
||
backends. This involves some Emacs Lisp, but simple non-interactive
|
||
backends are easy to define. *Note Emacs Lisp Reference: (elisp)Top,
|
||
for help with writing Lisp.
|
||
|
||
As an example, here is a minimal backend for displaying PostScript
|
||
and PDF files with Evince, a GNOME document viewer. We don't need
|
||
interactive controls for Evince; we only want to launch it.
|
||
|
||
(eval-after-load 'bongo
|
||
'(define-bongo-backend evince
|
||
:matcher '(local-file "ps" "pdf")))
|
||
|
||
'define-bongo-backend' is used to define backends. The definition is
|
||
wrapped inside an 'eval-after-load' form so that it will execute after
|
||
Bongo has loaded. You don't need this if you load Bongo at startup, but
|
||
it will work in both cases.
|
||
|
||
The first argument names the backend. As a side effect, it also
|
||
defines the executable file 'evince' to be used with the backend. In
|
||
most cases, this default behavior is fine. If you want to customize the
|
||
invocation of Evince, use 'M-x customize-group <RET> bongo-evince
|
||
<RET>'. The 'define-bongo-backend' macro automatically defines
|
||
customizable options for this.
|
||
|
||
The second argument, the keyword ':matcher', and the third argument
|
||
define a matcher for the backend. Files with suffixes 'ps' and 'pdf'
|
||
can now be inserted in Bongo buffers, and Bongo will select the new
|
||
backend to display them. The Evince backend is now ready for use.
|
||
|
||
For information on how to write more advanced backend definitions,
|
||
refer to the description of 'define-bongo-backend' below. Examples can
|
||
be found in 'bongo.el'.
|
||
|
||
-- Macro: define-bongo-backend name [keyword value]...
|
||
Defines a new backend named NAME. More specifically, defines
|
||
variables used by the backend, a constructor function that will be
|
||
invoked to play tracks with the backend and optionally matchers and
|
||
translators for the backend. The default definitions can be
|
||
overridden with keyword arguments. The NAME argument is not
|
||
evaluated.
|
||
|
||
'define-bongo-backend' accepts the following optional keywords:
|
||
|
||
':pretty-name STRING'
|
||
The name used to described the backend to the user. The
|
||
default is to use NAME.
|
||
|
||
':matcher MATCHER'
|
||
A backend matcher expression. This keyword can be supplied
|
||
multiple times, specifying multiple matchers. There is no
|
||
default matcher.
|
||
|
||
':file-name-transformer EXPRESSION'
|
||
A file name transformer for the backend, to be used by
|
||
'bongo-transform-file-name' to manipulate file names. This
|
||
keyword can be supplied multiple times, specifying multiple
|
||
transformers. There is no default file name transformer.
|
||
|
||
':program-name STRING'
|
||
The file name of the executable program for the backend. The
|
||
default is the symbol-name of NAME.
|
||
|
||
':program-name-variable VARIABLE'
|
||
The variable specifying the backend executable. The default
|
||
defines a variable 'bongo-NAME-program-name', bound to the
|
||
value of PROGRAM-NAME.
|
||
|
||
':program-arguments LIST'
|
||
A list of program arguments, to be processed by
|
||
'bongo-evaluate-program-arguments'. The default is
|
||
'(EXTRA-PROGRAM-ARGUMENTS-VARIABLE bongo-extra-arguments
|
||
bongo-file-name)'.
|
||
|
||
':extra-program-arguments-variable VARIABLE-NAME'
|
||
The name of the variable specifying extra command line
|
||
arguments to pass to the program. This variable will be
|
||
defined with 'defcustom', if its name is mentioned in
|
||
PROGRAM-ARGUMENTS. The default defines a variable
|
||
'bongo-NAME-extra-arguments'.
|
||
|
||
':extra-program-arguments LIST'
|
||
The initial value for the EXTRA-PROGRAM-ARGUMENTS-VARIABLE
|
||
variable. The default is 'nil'.
|
||
|
||
':constructor FUNCTION'
|
||
The function that will create and invoke the backend player.
|
||
It must be a function of two arguments, a file name and a list
|
||
of extra arguments. It shall return a player, represented by
|
||
a cons '(name . properties)' where 'properties' is an alist.
|
||
|
||
The default defines a function 'bongo-start-NAME-player' which
|
||
calls 'bongo-start-simple-player'.
|
||
|
||
':pause-signal SIGCODE'
|
||
The signal used with 'signal-process' to pause the player
|
||
process. The default is 'SIGSTOP'.
|
||
|
||
|
||
File: bongo.info, Node: GNU GPL, Next: GNU FDL, Prev: Writing Backends, Up: Top
|
||
|
||
Appendix A GNU General Public License
|
||
*************************************
|
||
|
||
Version 2, June 1991
|
||
|
||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies
|
||
of this license document, but changing it is not allowed.
|
||
|
||
Preamble
|
||
========
|
||
|
||
The licenses for most software are designed to take away your freedom to
|
||
share and change it. By contrast, the GNU General Public License is
|
||
intended to guarantee your freedom to share and change free software--to
|
||
make sure the software is free for all its users. This General Public
|
||
License applies to most of the Free Software Foundation's software and
|
||
to any other program whose authors commit to using it. (Some other Free
|
||
Software Foundation software is covered by the GNU Lesser General Public
|
||
License instead.) You can apply it to your programs, too.
|
||
|
||
When we speak of free software, we are referring to freedom, not
|
||
price. Our General Public Licenses are designed to make sure that you
|
||
have the freedom to distribute copies of free software (and charge for
|
||
this service if you wish), that you receive source code or can get it if
|
||
you want it, that you can change the software or use pieces of it in new
|
||
free programs; and that you know you can do these things.
|
||
|
||
To protect your rights, we need to make restrictions that forbid
|
||
anyone to deny you these rights or to ask you to surrender the rights.
|
||
These restrictions translate to certain responsibilities for you if you
|
||
distribute copies of the software, or if you modify it.
|
||
|
||
For example, if you distribute copies of such a program, whether
|
||
gratis or for a fee, you must give the recipients all the rights that
|
||
you have. You must make sure that they, too, receive or can get the
|
||
source code. And you must show them these terms so they know their
|
||
rights.
|
||
|
||
We protect your rights with two steps: (1) copyright the software,
|
||
and (2) offer you this license which gives you legal permission to copy,
|
||
distribute and/or modify the software.
|
||
|
||
Also, for each author's protection and ours, we want to make certain
|
||
that everyone understands that there is no warranty for this free
|
||
software. If the software is modified by someone else and passed on, we
|
||
want its recipients to know that what they have is not the original, so
|
||
that any problems introduced by others will not reflect on the original
|
||
authors' reputations.
|
||
|
||
Finally, any free program is threatened constantly by software
|
||
patents. We wish to avoid the danger that redistributors of a free
|
||
program will individually obtain patent licenses, in effect making the
|
||
program proprietary. To prevent this, we have made it clear that any
|
||
patent must be licensed for everyone's free use or not licensed at all.
|
||
|
||
The precise terms and conditions for copying, distribution and
|
||
modification follow.
|
||
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
0. This License applies to any program or other work which contains a
|
||
notice placed by the copyright holder saying it may be distributed
|
||
under the terms of this General Public License. The "Program,"
|
||
below, refers to any such program or work, and a "work based on the
|
||
Program" means either the Program or any derivative work under
|
||
copyright law: that is to say, a work containing the Program or a
|
||
portion of it, either verbatim or with modifications and/or
|
||
translated into another language. (Hereinafter, translation is
|
||
included without limitation in the term "modification.") Each
|
||
licensee is addressed as "you."
|
||
|
||
Activities other than copying, distribution and modification are
|
||
not covered by this License; they are outside its scope. The act
|
||
of running the Program is not restricted, and the output from the
|
||
Program is covered only if its contents constitute a work based on
|
||
the Program (independent of having been made by running the
|
||
Program). Whether that is true depends on what the Program does.
|
||
|
||
1. You may copy and distribute verbatim copies of the Program's source
|
||
code as you receive it, in any medium, provided that you
|
||
conspicuously and appropriately publish on each copy an appropriate
|
||
copyright notice and disclaimer of warranty; keep intact all the
|
||
notices that refer to this License and to the absence of any
|
||
warranty; and give any other recipients of the Program a copy of
|
||
this License along with the Program.
|
||
|
||
You may charge a fee for the physical act of transferring a copy,
|
||
and you may at your option offer warranty protection in exchange
|
||
for a fee.
|
||
|
||
2. You may modify your copy or copies of the Program or any portion of
|
||
it, thus forming a work based on the Program, and copy and
|
||
distribute such modifications or work under the terms of Section 1
|
||
above, provided that you also meet all of these conditions:
|
||
|
||
a. You must cause the modified files to carry prominent notices
|
||
stating that you changed the files and the date of any change.
|
||
|
||
b. You must cause any work that you distribute or publish, that
|
||
in whole or in part contains or is derived from the Program or
|
||
any part thereof, to be licensed as a whole at no charge to
|
||
all third parties under the terms of this License.
|
||
|
||
c. If the modified program normally reads commands interactively
|
||
when run, you must cause it, when started running for such
|
||
interactive use in the most ordinary way, to print or display
|
||
an announcement including an appropriate copyright notice and
|
||
a notice that there is no warranty (or else, saying that you
|
||
provide a warranty) and that users may redistribute the
|
||
program under these conditions, and telling the user how to
|
||
view a copy of this License. (Exception: if the Program
|
||
itself is interactive but does not normally print such an
|
||
announcement, your work based on the Program is not required
|
||
to print an announcement.)
|
||
|
||
These requirements apply to the modified work as a whole. If
|
||
identifiable sections of that work are not derived from the
|
||
Program, and can be reasonably considered independent and separate
|
||
works in themselves, then this License, and its terms, do not apply
|
||
to those sections when you distribute them as separate works. But
|
||
when you distribute the same sections as part of a whole which is a
|
||
work based on the Program, the distribution of the whole must be on
|
||
the terms of this License, whose permissions for other licensees
|
||
extend to the entire whole, and thus to each and every part
|
||
regardless of who wrote it.
|
||
|
||
Thus, it is not the intent of this section to claim rights or
|
||
contest your rights to work written entirely by you; rather, the
|
||
intent is to exercise the right to control the distribution of
|
||
derivative or collective works based on the Program.
|
||
|
||
In addition, mere aggregation of another work not based on the
|
||
Program with the Program (or with a work based on the Program) on a
|
||
volume of a storage or distribution medium does not bring the other
|
||
work under the scope of this License.
|
||
|
||
3. You may copy and distribute the Program (or a work based on it,
|
||
under Section 2) in object code or executable form under the terms
|
||
of Sections 1 and 2 above provided that you also do one of the
|
||
following:
|
||
|
||
a. Accompany it with the complete corresponding machine-readable
|
||
source code, which must be distributed under the terms of
|
||
Sections 1 and 2 above on a medium customarily used for
|
||
software interchange; or,
|
||
|
||
b. Accompany it with a written offer, valid for at least three
|
||
years, to give any third party, for a charge no more than your
|
||
cost of physically performing source distribution, a complete
|
||
machine-readable copy of the corresponding source code, to be
|
||
distributed under the terms of Sections 1 and 2 above on a
|
||
medium customarily used for software interchange; or,
|
||
|
||
c. Accompany it with the information you received as to the offer
|
||
to distribute corresponding source code. (This alternative is
|
||
allowed only for noncommercial distribution and only if you
|
||
received the program in object code or executable form with
|
||
such an offer, in accord with Subsection b above.)
|
||
|
||
The source code for a work means the preferred form of the work for
|
||
making modifications to it. For an executable work, complete
|
||
source code means all the source code for all modules it contains,
|
||
plus any associated interface definition files, plus the scripts
|
||
used to control compilation and installation of the executable.
|
||
However, as a special exception, the source code distributed need
|
||
not include anything that is normally distributed (in either source
|
||
or binary form) with the major components (compiler, kernel, and so
|
||
on) of the operating system on which the executable runs, unless
|
||
that component itself accompanies the executable.
|
||
|
||
If distribution of executable or object code is made by offering
|
||
access to copy from a designated place, then offering equivalent
|
||
access to copy the source code from the same place counts as
|
||
distribution of the source code, even though third parties are not
|
||
compelled to copy the source along with the object code.
|
||
|
||
4. You may not copy, modify, sublicense, or distribute the Program
|
||
except as expressly provided under this License. Any attempt
|
||
otherwise to copy, modify, sublicense or distribute the Program is
|
||
void, and will automatically terminate your rights under this
|
||
License. However, parties who have received copies, or rights,
|
||
from you under this License will not have their licenses terminated
|
||
so long as such parties remain in full compliance.
|
||
|
||
5. You are not required to accept this License, since you have not
|
||
signed it. However, nothing else grants you permission to modify
|
||
or distribute the Program or its derivative works. These actions
|
||
are prohibited by law if you do not accept this License.
|
||
Therefore, by modifying or distributing the Program (or any work
|
||
based on the Program), you indicate your acceptance of this License
|
||
to do so, and all its terms and conditions for copying,
|
||
distributing or modifying the Program or works based on it.
|
||
|
||
6. Each time you redistribute the Program (or any work based on the
|
||
Program), the recipient automatically receives a license from the
|
||
original licensor to copy, distribute or modify the Program subject
|
||
to these terms and conditions. You may not impose any further
|
||
restrictions on the recipients' exercise of the rights granted
|
||
herein. You are not responsible for enforcing compliance by third
|
||
parties to this License.
|
||
|
||
7. If, as a consequence of a court judgment or allegation of patent
|
||
infringement or for any other reason (not limited to patent
|
||
issues), conditions are imposed on you (whether by court order,
|
||
agreement or otherwise) that contradict the conditions of this
|
||
License, they do not excuse you from the conditions of this
|
||
License. If you cannot distribute so as to satisfy simultaneously
|
||
your obligations under this License and any other pertinent
|
||
obligations, then as a consequence you may not distribute the
|
||
Program at all. For example, if a patent license would not permit
|
||
royalty-free redistribution of the Program by all those who receive
|
||
copies directly or indirectly through you, then the only way you
|
||
could satisfy both it and this License would be to refrain entirely
|
||
from distribution of the Program.
|
||
|
||
If any portion of this section is held invalid or unenforceable
|
||
under any particular circumstance, the balance of the section is
|
||
intended to apply and the section as a whole is intended to apply
|
||
in other circumstances.
|
||
|
||
It is not the purpose of this section to induce you to infringe any
|
||
patents or other property right claims or to contest validity of
|
||
any such claims; this section has the sole purpose of protecting
|
||
the integrity of the free software distribution system, which is
|
||
implemented by public license practices. Many people have made
|
||
generous contributions to the wide range of software distributed
|
||
through that system in reliance on consistent application of that
|
||
system; it is up to the author/donor to decide if he or she is
|
||
willing to distribute software through any other system and a
|
||
licensee cannot impose that choice.
|
||
|
||
This section is intended to make thoroughly clear what is believed
|
||
to be a consequence of the rest of this License.
|
||
|
||
8. If the distribution and/or use of the Program is restricted in
|
||
certain countries either by patents or by copyrighted interfaces,
|
||
the original copyright holder who places the Program under this
|
||
License may add an explicit geographical distribution limitation
|
||
excluding those countries, so that distribution is permitted only
|
||
in or among countries not thus excluded. In such case, this
|
||
License incorporates the limitation as if written in the body of
|
||
this License.
|
||
|
||
9. The Free Software Foundation may publish revised and/or new
|
||
versions of the General Public License from time to time. Such new
|
||
versions will be similar in spirit to the present version, but may
|
||
differ in detail to address new problems or concerns.
|
||
|
||
Each version is given a distinguishing version number. If the
|
||
Program specifies a version number of this License which applies to
|
||
it and "any later version," you have the option of following the
|
||
terms and conditions either of that version or of any later version
|
||
published by the Free Software Foundation. If the Program does not
|
||
specify a version number of this License, you may choose any
|
||
version ever published by the Free Software Foundation.
|
||
|
||
10. If you wish to incorporate parts of the Program into other free
|
||
programs whose distribution conditions are different, write to the
|
||
author to ask for permission. For software which is copyrighted by
|
||
the Free Software Foundation, write to the Free Software
|
||
Foundation; we sometimes make exceptions for this. Our decision
|
||
will be guided by the two goals of preserving the free status of
|
||
all derivatives of our free software and of promoting the sharing
|
||
and reuse of software generally.
|
||
|
||
NO WARRANTY
|
||
|
||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
||
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
|
||
AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR
|
||
OR CORRECTION.
|
||
|
||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
||
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
||
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
|
||
OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
|
||
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
|
||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||
|
||
END OF TERMS AND CONDITIONS
|
||
|
||
How to Apply These Terms to Your New Programs
|
||
=============================================
|
||
|
||
If you develop a new program, and you want it to be of the greatest
|
||
possible use to the public, the best way to achieve this is to make it
|
||
free software which everyone can redistribute and change under these
|
||
terms.
|
||
|
||
To do so, attach the following notices to the program. It is safest
|
||
to attach them to the start of each source file to most effectively
|
||
convey the exclusion of warranty; and each file should have at least the
|
||
"copyright" line and a pointer to where the full notice is found.
|
||
|
||
ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
|
||
Copyright (C) YYYY NAME OF AUTHOR
|
||
|
||
This program is free software; you can redistribute it and/or
|
||
modify it under the terms of the GNU General Public License
|
||
as published by the Free Software Foundation; either version 2
|
||
of the License, or (at your option) any later version.
|
||
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along
|
||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
||
Also add information on how to contact you by electronic and paper
|
||
mail.
|
||
|
||
If the program is interactive, make it output a short notice like
|
||
this when it starts in an interactive mode:
|
||
|
||
Gnomovision version 69, Copyright (C) YYYY NAME OF AUTHOR
|
||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
||
type `show w'. This is free software, and you are welcome
|
||
to redistribute it under certain conditions; type `show c'
|
||
for details.
|
||
|
||
The hypothetical commands 'show w' and 'show c' should show the
|
||
appropriate parts of the General Public License. Of course, the
|
||
commands you use may be called something other than 'show w' and 'show
|
||
c'; they could even be mouse-clicks or menu items--whatever suits your
|
||
program.
|
||
|
||
You should also get your employer (if you work as a programmer) or
|
||
your school, if any, to sign a "copyright disclaimer" for the program,
|
||
if necessary. Here is a sample; alter the names:
|
||
|
||
Yoyodyne, Inc., hereby disclaims all copyright
|
||
interest in the program `Gnomovision'
|
||
(which makes passes at compilers) written
|
||
by James Hacker.
|
||
|
||
SIGNATURE OF TY COON, 1 April 1989
|
||
Ty Coon, President of Vice
|
||
|
||
This General Public License does not permit incorporating your
|
||
program into proprietary programs. If your program is a subroutine
|
||
library, you may consider it more useful to permit linking proprietary
|
||
applications with the library. If this is what you want to do, use the
|
||
GNU Lesser General Public License instead of this License.
|
||
|
||
|
||
File: bongo.info, Node: GNU FDL, Prev: GNU GPL, Up: Top
|
||
|
||
Appendix B GNU Free Documentation License
|
||
*****************************************
|
||
|
||
Version 1.2, November 2002
|
||
|
||
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
|
||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies
|
||
of this license document, but changing it is not allowed.
|
||
|
||
0. PREAMBLE
|
||
|
||
The purpose of this License is to make a manual, textbook, or other
|
||
functional and useful document "free" in the sense of freedom: to
|
||
assure everyone the effective freedom to copy and redistribute it,
|
||
with or without modifying it, either commercially or
|
||
noncommercially. Secondarily, this License preserves for the
|
||
author and publisher a way to get credit for their work, while not
|
||
being considered responsible for modifications made by others.
|
||
|
||
This License is a kind of "copyleft," which means that derivative
|
||
works of the document must themselves be free in the same sense.
|
||
It complements the GNU General Public License, which is a copyleft
|
||
license designed for free software.
|
||
|
||
We have designed this License in order to use it for manuals for
|
||
free software, because free software needs free documentation: a
|
||
free program should come with manuals providing the same freedoms
|
||
that the software does. But this License is not limited to
|
||
software manuals; it can be used for any textual work, regardless
|
||
of subject matter or whether it is published as a printed book. We
|
||
recommend this License principally for works whose purpose is
|
||
instruction or reference.
|
||
|
||
|
||
1. APPLICABILITY AND DEFINITIONS
|
||
|
||
This License applies to any manual or other work, in any medium,
|
||
that contains a notice placed by the copyright holder saying it can
|
||
be distributed under the terms of this License. Such a notice
|
||
grants a world-wide, royalty-free license, unlimited in duration,
|
||
to use that work under the conditions stated herein. The
|
||
"Document," below, refers to any such manual or work. Any member
|
||
of the public is a licensee, and is addressed as "you." You accept
|
||
the license if you copy, modify or distribute the work in a way
|
||
requiring permission under copyright law.
|
||
|
||
A "Modified Version" of the Document means any work containing the
|
||
Document or a portion of it, either copied verbatim, or with
|
||
modifications and/or translated into another language.
|
||
|
||
A "Secondary Section" is a named appendix or a front-matter section
|
||
of the Document that deals exclusively with the relationship of the
|
||
publishers or authors of the Document to the Document's overall
|
||
subject (or to related matters) and contains nothing that could
|
||
fall directly within that overall subject. (Thus, if the Document
|
||
is in part a textbook of mathematics, a Secondary Section may not
|
||
explain any mathematics.) The relationship could be a matter of
|
||
historical connection with the subject or with related matters, or
|
||
of legal, commercial, philosophical, ethical or political position
|
||
regarding them.
|
||
|
||
The "Invariant Sections" are certain Secondary Sections whose
|
||
titles are designated, as being those of Invariant Sections, in the
|
||
notice that says that the Document is released under this License.
|
||
If a section does not fit the above definition of Secondary then it
|
||
is not allowed to be designated as Invariant. The Document may
|
||
contain zero Invariant Sections. If the Document does not identify
|
||
any Invariant Sections then there are none.
|
||
|
||
The "Cover Texts" are certain short passages of text that are
|
||
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
||
that says that the Document is released under this License. A
|
||
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
||
be at most 25 words.
|
||
|
||
A "Transparent" copy of the Document means a machine-readable copy,
|
||
represented in a format whose specification is available to the
|
||
general public, that is suitable for revising the document
|
||
straightforwardly with generic text editors or (for images composed
|
||
of pixels) generic paint programs or (for drawings) some widely
|
||
available drawing editor, and that is suitable for input to text
|
||
formatters or for automatic translation to a variety of formats
|
||
suitable for input to text formatters. A copy made in an otherwise
|
||
Transparent file format whose markup, or absence of markup, has
|
||
been arranged to thwart or discourage subsequent modification by
|
||
readers is not Transparent. An image format is not Transparent if
|
||
used for any substantial amount of text. A copy that is not
|
||
"Transparent" is called "Opaque."
|
||
|
||
Examples of suitable formats for Transparent copies include plain
|
||
ASCII without markup, Texinfo input format, LaTeX input format,
|
||
SGML or XML using a publicly available DTD, and standard-conforming
|
||
simple HTML, PostScript or PDF designed for human modification.
|
||
Examples of transparent image formats include PNG, XCF and JPG.
|
||
Opaque formats include proprietary formats that can be read and
|
||
edited only by proprietary word processors, SGML or XML for which
|
||
the DTD and/or processing tools are not generally available, and
|
||
the machine-generated HTML, PostScript or PDF produced by some word
|
||
processors for output purposes only.
|
||
|
||
The "Title Page" means, for a printed book, the title page itself,
|
||
plus such following pages as are needed to hold, legibly, the
|
||
material this License requires to appear in the title page. For
|
||
works in formats which do not have any title page as such, "Title
|
||
Page" means the text near the most prominent appearance of the
|
||
work's title, preceding the beginning of the body of the text.
|
||
|
||
A section "Entitled XYZ" means a named subunit of the Document
|
||
whose title either is precisely XYZ or contains XYZ in parentheses
|
||
following text that translates XYZ in another language. (Here XYZ
|
||
stands for a specific section name mentioned below, such as
|
||
"Acknowledgements," "Dedications," "Endorsements," or "History.")
|
||
To "Preserve the Title" of such a section when you modify the
|
||
Document means that it remains a section "Entitled XYZ" according
|
||
to this definition.
|
||
|
||
The Document may include Warranty Disclaimers next to the notice
|
||
which states that this License applies to the Document. These
|
||
Warranty Disclaimers are considered to be included by reference in
|
||
this License, but only as regards disclaiming warranties: any other
|
||
implication that these Warranty Disclaimers may have is void and
|
||
has no effect on the meaning of this License.
|
||
|
||
2. VERBATIM COPYING
|
||
|
||
You may copy and distribute the Document in any medium, either
|
||
commercially or noncommercially, provided that this License, the
|
||
copyright notices, and the license notice saying this License
|
||
applies to the Document are reproduced in all copies, and that you
|
||
add no other conditions whatsoever to those of this License. You
|
||
may not use technical measures to obstruct or control the reading
|
||
or further copying of the copies you make or distribute. However,
|
||
you may accept compensation in exchange for copies. If you
|
||
distribute a large enough number of copies you must also follow the
|
||
conditions in section 3.
|
||
|
||
You may also lend copies, under the same conditions stated above,
|
||
and you may publicly display copies.
|
||
|
||
3. COPYING IN QUANTITY
|
||
|
||
If you publish printed copies (or copies in media that commonly
|
||
have printed covers) of the Document, numbering more than 100, and
|
||
the Document's license notice requires Cover Texts, you must
|
||
enclose the copies in covers that carry, clearly and legibly, all
|
||
these Cover Texts: Front-Cover Texts on the front cover, and
|
||
Back-Cover Texts on the back cover. Both covers must also clearly
|
||
and legibly identify you as the publisher of these copies. The
|
||
front cover must present the full title with all words of the title
|
||
equally prominent and visible. You may add other material on the
|
||
covers in addition. Copying with changes limited to the covers, as
|
||
long as they preserve the title of the Document and satisfy these
|
||
conditions, can be treated as verbatim copying in other respects.
|
||
|
||
If the required texts for either cover are too voluminous to fit
|
||
legibly, you should put the first ones listed (as many as fit
|
||
reasonably) on the actual cover, and continue the rest onto
|
||
adjacent pages.
|
||
|
||
If you publish or distribute Opaque copies of the Document
|
||
numbering more than 100, you must either include a machine-readable
|
||
Transparent copy along with each Opaque copy, or state in or with
|
||
each Opaque copy a computer-network location from which the general
|
||
network-using public has access to download using public-standard
|
||
network protocols a complete Transparent copy of the Document, free
|
||
of added material. If you use the latter option, you must take
|
||
reasonably prudent steps, when you begin distribution of Opaque
|
||
copies in quantity, to ensure that this Transparent copy will
|
||
remain thus accessible at the stated location until at least one
|
||
year after the last time you distribute an Opaque copy (directly or
|
||
through your agents or retailers) of that edition to the public.
|
||
|
||
It is requested, but not required, that you contact the authors of
|
||
the Document well before redistributing any large number of copies,
|
||
to give them a chance to provide you with an updated version of the
|
||
Document.
|
||
|
||
4. MODIFICATIONS
|
||
|
||
You may copy and distribute a Modified Version of the Document
|
||
under the conditions of sections 2 and 3 above, provided that you
|
||
release the Modified Version under precisely this License, with the
|
||
Modified Version filling the role of the Document, thus licensing
|
||
distribution and modification of the Modified Version to whoever
|
||
possesses a copy of it. In addition, you must do these things in
|
||
the Modified Version:
|
||
|
||
A. Use in the Title Page (and on the covers, if any) a title
|
||
distinct from that of the Document, and from those of previous
|
||
versions (which should, if there were any, be listed in the
|
||
History section of the Document). You may use the same title
|
||
as a previous version if the original publisher of that
|
||
version gives permission.
|
||
|
||
B. List on the Title Page, as authors, one or more persons or
|
||
entities responsible for authorship of the modifications in
|
||
the Modified Version, together with at least five of the
|
||
principal authors of the Document (all of its principal
|
||
authors, if it has fewer than five), unless they release you
|
||
from this requirement.
|
||
|
||
C. State on the Title page the name of the publisher of the
|
||
Modified Version, as the publisher.
|
||
|
||
D. Preserve all the copyright notices of the Document.
|
||
|
||
E. Add an appropriate copyright notice for your modifications
|
||
adjacent to the other copyright notices.
|
||
|
||
F. Include, immediately after the copyright notices, a license
|
||
notice giving the public permission to use the Modified
|
||
Version under the terms of this License, in the form shown in
|
||
the Addendum below.
|
||
|
||
G. Preserve in that license notice the full lists of Invariant
|
||
Sections and required Cover Texts given in the Document's
|
||
license notice.
|
||
|
||
H. Include an unaltered copy of this License.
|
||
|
||
I. Preserve the section Entitled "History," Preserve its Title,
|
||
and add to it an item stating at least the title, year, new
|
||
authors, and publisher of the Modified Version as given on the
|
||
Title Page. If there is no section Entitled "History" in the
|
||
Document, create one stating the title, year, authors, and
|
||
publisher of the Document as given on its Title Page, then add
|
||
an item describing the Modified Version as stated in the
|
||
previous sentence.
|
||
|
||
J. Preserve the network location, if any, given in the Document
|
||
for public access to a Transparent copy of the Document, and
|
||
likewise the network locations given in the Document for
|
||
previous versions it was based on. These may be placed in the
|
||
"History" section. You may omit a network location for a work
|
||
that was published at least four years before the Document
|
||
itself, or if the original publisher of the version it refers
|
||
to gives permission.
|
||
|
||
K. For any section Entitled "Acknowledgements" or "Dedications,"
|
||
Preserve the Title of the section, and preserve in the section
|
||
all the substance and tone of each of the contributor
|
||
acknowledgements and/or dedications given therein.
|
||
|
||
L. Preserve all the Invariant Sections of the Document, unaltered
|
||
in their text and in their titles. Section numbers or the
|
||
equivalent are not considered part of the section titles.
|
||
|
||
M. Delete any section Entitled "Endorsements." Such a section
|
||
may not be included in the Modified Version.
|
||
|
||
N. Do not retitle any existing section to be Entitled
|
||
"Endorsements" or to conflict in title with any Invariant
|
||
Section.
|
||
|
||
O. Preserve any Warranty Disclaimers.
|
||
|
||
If the Modified Version includes new front-matter sections or
|
||
appendices that qualify as Secondary Sections and contain no
|
||
material copied from the Document, you may at your option designate
|
||
some or all of these sections as invariant. To do this, add their
|
||
titles to the list of Invariant Sections in the Modified Version's
|
||
license notice. These titles must be distinct from any other
|
||
section titles.
|
||
|
||
You may add a section Entitled "Endorsements," provided it contains
|
||
nothing but endorsements of your Modified Version by various
|
||
parties--for example, statements of peer review or that the text
|
||
has been approved by an organization as the authoritative
|
||
definition of a standard.
|
||
|
||
You may add a passage of up to five words as a Front-Cover Text,
|
||
and a passage of up to 25 words as a Back-Cover Text, to the end of
|
||
the list of Cover Texts in the Modified Version. Only one passage
|
||
of Front-Cover Text and one of Back-Cover Text may be added by (or
|
||
through arrangements made by) any one entity. If the Document
|
||
already includes a cover text for the same cover, previously added
|
||
by you or by arrangement made by the same entity you are acting on
|
||
behalf of, you may not add another; but you may replace the old
|
||
one, on explicit permission from the previous publisher that added
|
||
the old one.
|
||
|
||
The author(s) and publisher(s) of the Document do not by this
|
||
License give permission to use their names for publicity for or to
|
||
assert or imply endorsement of any Modified Version.
|
||
|
||
5. COMBINING DOCUMENTS
|
||
|
||
You may combine the Document with other documents released under
|
||
this License, under the terms defined in section 4 above for
|
||
modified versions, provided that you include in the combination all
|
||
of the Invariant Sections of all of the original documents,
|
||
unmodified, and list them all as Invariant Sections of your
|
||
combined work in its license notice, and that you preserve all
|
||
their Warranty Disclaimers.
|
||
|
||
The combined work need only contain one copy of this License, and
|
||
multiple identical Invariant Sections may be replaced with a single
|
||
copy. If there are multiple Invariant Sections with the same name
|
||
but different contents, make the title of each such section unique
|
||
by adding at the end of it, in parentheses, the name of the
|
||
original author or publisher of that section if known, or else a
|
||
unique number. Make the same adjustment to the section titles in
|
||
the list of Invariant Sections in the license notice of the
|
||
combined work.
|
||
|
||
In the combination, you must combine any sections Entitled
|
||
"History" in the various original documents, forming one section
|
||
Entitled "History"; likewise combine any sections Entitled
|
||
"Acknowledgements," and any sections Entitled "Dedications." You
|
||
must delete all sections Entitled "Endorsements."
|
||
|
||
6. COLLECTIONS OF DOCUMENTS
|
||
|
||
You may make a collection consisting of the Document and other
|
||
documents released under this License, and replace the individual
|
||
copies of this License in the various documents with a single copy
|
||
that is included in the collection, provided that you follow the
|
||
rules of this License for verbatim copying of each of the documents
|
||
in all other respects.
|
||
|
||
You may extract a single document from such a collection, and
|
||
distribute it individually under this License, provided you insert
|
||
a copy of this License into the extracted document, and follow this
|
||
License in all other respects regarding verbatim copying of that
|
||
document.
|
||
|
||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||
|
||
A compilation of the Document or its derivatives with other
|
||
separate and independent documents or works, in or on a volume of a
|
||
storage or distribution medium, is called an "aggregate" if the
|
||
copyright resulting from the compilation is not used to limit the
|
||
legal rights of the compilation's users beyond what the individual
|
||
works permit. When the Document is included in an aggregate, this
|
||
License does not apply to the other works in the aggregate which
|
||
are not themselves derivative works of the Document.
|
||
|
||
If the Cover Text requirement of section 3 is applicable to these
|
||
copies of the Document, then if the Document is less than one half
|
||
of the entire aggregate, the Document's Cover Texts may be placed
|
||
on covers that bracket the Document within the aggregate, or the
|
||
electronic equivalent of covers if the Document is in electronic
|
||
form. Otherwise they must appear on printed covers that bracket
|
||
the whole aggregate.
|
||
|
||
8. TRANSLATION
|
||
|
||
Translation is considered a kind of modification, so you may
|
||
distribute translations of the Document under the terms of section
|
||
4. Replacing Invariant Sections with translations requires special
|
||
permission from their copyright holders, but you may include
|
||
translations of some or all Invariant Sections in addition to the
|
||
original versions of these Invariant Sections. You may include a
|
||
translation of this License, and all the license notices in the
|
||
Document, and any Warranty Disclaimers, provided that you also
|
||
include the original English version of this License and the
|
||
original versions of those notices and disclaimers. In case of a
|
||
disagreement between the translation and the original version of
|
||
this License or a notice or disclaimer, the original version will
|
||
prevail.
|
||
|
||
If a section in the Document is Entitled "Acknowledgements,"
|
||
"Dedications," or "History," the requirement (section 4) to
|
||
Preserve its Title (section 1) will typically require changing the
|
||
actual title.
|
||
|
||
9. TERMINATION
|
||
|
||
You may not copy, modify, sublicense, or distribute the Document
|
||
except as expressly provided for under this License. Any other
|
||
attempt to copy, modify, sublicense or distribute the Document is
|
||
void, and will automatically terminate your rights under this
|
||
License. However, parties who have received copies, or rights,
|
||
from you under this License will not have their licenses terminated
|
||
so long as such parties remain in full compliance.
|
||
|
||
10. FUTURE REVISIONS OF THIS LICENSE
|
||
|
||
The Free Software Foundation may publish new, revised versions of
|
||
the GNU Free Documentation License from time to time. Such new
|
||
versions will be similar in spirit to the present version, but may
|
||
differ in detail to address new problems or concerns. See
|
||
http://www.gnu.org/copyleft/.
|
||
|
||
Each version of the License is given a distinguishing version
|
||
number. If the Document specifies that a particular numbered
|
||
version of this License "or any later version" applies to it, you
|
||
have the option of following the terms and conditions either of
|
||
that specified version or of any later version that has been
|
||
published (not as a draft) by the Free Software Foundation. If the
|
||
Document does not specify a version number of this License, you may
|
||
choose any version ever published (not as a draft) by the Free
|
||
Software Foundation.
|
||
|
||
ADDENDUM: How to use this License for your documents
|
||
====================================================
|
||
|
||
To use this License in a document you have written, include a copy of
|
||
the License in the document and put the following copyright and license
|
||
notices just after the title page:
|
||
|
||
Copyright (C) YEAR YOUR NAME.
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.2
|
||
or any later version published by the Free Software Foundation;
|
||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||
A copy of the license is included in the section entitled ``GNU
|
||
Free Documentation License.''
|
||
|
||
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
||
Texts, replace the "with...Texts." line with this:
|
||
|
||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||
Front-Cover Texts being LIST, and with the Back-Cover Texts being
|
||
LIST.
|
||
|
||
If you have Invariant Sections without Cover Texts, or some other
|
||
combination of the three, merge those two alternatives to suit the
|
||
situation.
|
||
|
||
If your document contains nontrivial examples of program code, we
|
||
recommend releasing these examples in parallel under your choice of free
|
||
software license, such as the GNU General Public License, to permit
|
||
their use in free software.
|
||
|
||
|
||
|
||
Tag Table:
|
||
Node: Top621
|
||
Node: Introduction3068
|
||
Node: Tracks4814
|
||
Node: Backends5483
|
||
Node: Players6281
|
||
Node: Playlists6963
|
||
Node: Libraries7554
|
||
Node: Inserting Tracks8597
|
||
Node: Playing Tracks10583
|
||
Node: Pausing12056
|
||
Node: Stopping12753
|
||
Node: Seeking13604
|
||
Node: Volume16259
|
||
Ref: Volume-Footnote-116516
|
||
Node: Switching Tracks16567
|
||
Node: Playback Modes17611
|
||
Node: Sprinkle Mode19431
|
||
Node: Enqueuing Tracks19554
|
||
Node: Marking Tracks19942
|
||
Node: Saving and Loading20082
|
||
Node: The P/R/M Convention20234
|
||
Node: Action Tracks21569
|
||
Node: Internals21701
|
||
Node: Writing Backends21821
|
||
Node: GNU GPL26442
|
||
Node: GNU FDL45640
|
||
|
||
End Tag Table
|
||
|
||
|
||
Local Variables:
|
||
coding: utf-8
|
||
End:
|