diff --git a/docs/api/frontends/index.rst b/docs/api/frontends/index.rst new file mode 100644 index 00000000..052c7781 --- /dev/null +++ b/docs/api/frontends/index.rst @@ -0,0 +1,18 @@ +*********************** +:mod:`mopidy.frontends` +*********************** + +A frontend is responsible for exposing Mopidy for a type of clients. + + +Frontend API +============ + +A stable frontend API is not available yet, as we've only implemented a single +frontend module. + + +Frontends +========= + +* :mod:`mopidy.frontends.mpd` diff --git a/docs/api/mpd.rst b/docs/api/frontends/mpd.rst similarity index 100% rename from docs/api/mpd.rst rename to docs/api/frontends/mpd.rst diff --git a/docs/api/mixers.rst b/docs/api/mixers.rst index 91c2e7aa..edaea306 100644 --- a/docs/api/mixers.rst +++ b/docs/api/mixers.rst @@ -40,58 +40,58 @@ methods as described below. :mod:`mopidy.mixers.alsa` -- ALSA mixer for Linux ================================================= +.. inheritance-diagram:: mopidy.mixers.alsa + .. automodule:: mopidy.mixers.alsa :synopsis: ALSA mixer for Linux :members: -.. inheritance-diagram:: mopidy.mixers.alsa.AlsaMixer - :mod:`mopidy.mixers.denon` -- Hardware mixer for Denon amplifiers ================================================================= +.. inheritance-diagram:: mopidy.mixers.denon + .. automodule:: mopidy.mixers.denon :synopsis: Hardware mixer for Denon amplifiers :members: -.. inheritance-diagram:: mopidy.mixers.denon - :mod:`mopidy.mixers.dummy` -- Dummy mixer for testing ===================================================== +.. inheritance-diagram:: mopidy.mixers.dummy + .. automodule:: mopidy.mixers.dummy :synopsis: Dummy mixer for testing :members: -.. inheritance-diagram:: mopidy.mixers.dummy - :mod:`mopidy.mixers.gstreamer_software` -- Software mixer for all platforms =========================================================================== +.. inheritance-diagram:: mopidy.mixers.gstreamer_software + .. automodule:: mopidy.mixers.gstreamer_software :synopsis: Software mixer for all platforms :members: -.. inheritance-diagram:: mopidy.mixers.gstreamer_software - :mod:`mopidy.mixers.osa` -- Osa mixer for OS X ============================================== +.. inheritance-diagram:: mopidy.mixers.osa + .. automodule:: mopidy.mixers.osa :synopsis: Osa mixer for OS X :members: -.. inheritance-diagram:: mopidy.mixers.osa - :mod:`mopidy.mixers.nad` -- Hardware mixer for NAD amplifiers ============================================================= +.. inheritance-diagram:: mopidy.mixers.nad + .. automodule:: mopidy.mixers.nad :synopsis: Hardware mixer for NAD amplifiers :members: - -.. inheritance-diagram:: mopidy.mixers.nad diff --git a/docs/api/outputs.rst b/docs/api/outputs.rst new file mode 100644 index 00000000..8f4e33c0 --- /dev/null +++ b/docs/api/outputs.rst @@ -0,0 +1,22 @@ +********************* +:mod:`mopidy.outputs` +********************* + +Outputs are responsible for playing audio. + + +Output API +========== + +A stable output API is not available yet, as we've only implemented a single +output module. + + +:mod:`mopidy.outputs.gstreamer` -- GStreamer output for all platforms +===================================================================== + +.. inheritance-diagram:: mopidy.outputs.gstreamer + +.. automodule:: mopidy.outputs.gstreamer + :synopsis: GStreamer output for all platforms + :members: diff --git a/docs/changes.rst b/docs/changes.rst index 4fdc8c1f..e84d7aa9 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -5,17 +5,26 @@ Changes This change log is used to track all major changes to Mopidy. -0.1.0a4 (in development) -======================== +0.1.0 (2010-08-23) +================== -The greatest release ever! We present to you important improvements in search -functionality, working track position seeking, no known stability issues, and -greatly improved MPD client support. +After three weeks of long nights and sprints we're finally pleased enough with +the state of Mopidy to remove the alpha label, and do a regular release. + +Mopidy 0.1.0 got important improvements in search functionality, working track +position seeking, no known stability issues, and greatly improved MPD client +support. There are lots of changes since 0.1.0a3, and we urge you to at least +read the *important changes* below. + +This release does not support OS X. We're sorry about that, and are working on +fixing the OS X issues for a future release. You can track the progress at +:issue:`14`. **Important changes** - License changed from GPLv2 to Apache License, version 2.0. -- GStreamer is now a required dependency. +- GStreamer is now a required dependency. See our :doc:`GStreamer installation + docs `. - :mod:`mopidy.backends.libspotify` is now the default backend. :mod:`mopidy.backends.despotify` is no longer available. This means that you need to install the :doc:`dependencies for libspotify @@ -72,6 +81,9 @@ greatly improved MPD client support. - A Spotify application key is now bundled with the source. :attr:`mopidy.settings.SPOTIFY_LIB_APPKEY` is thus removed. - If failing to play a track, playback will skip to the next track. + - Both :mod:`mopidy.backends.libspotify` and :mod:`mopidy.backends.local` + have been rewritten to use the new common GStreamer audio output module, + :mod:`mopidy.outputs.gstreamer`. - Mixers: diff --git a/docs/development/internals.rst b/docs/development/internals.rst index 0af13aa8..4b4d3b14 100644 --- a/docs/development/internals.rst +++ b/docs/development/internals.rst @@ -20,7 +20,7 @@ the Spotify service, and the speakers. - Filled red boxes are the key external systems. - Gray boxes are external dependencies. - Blue circles lives in the ``main`` process, also known as ``CoreProcess``. - It processing messages on the core queue. + It is processing messages put on the core queue. - Purple circles lives in a process named ``MpdProcess``, running an :mod:`asyncore` loop. - Green circles lives in a process named ``GStreamerProcess``. diff --git a/docs/installation/index.rst b/docs/installation/index.rst index abd185f1..26b864d2 100644 --- a/docs/installation/index.rst +++ b/docs/installation/index.rst @@ -2,10 +2,10 @@ Installation ************ -To get a basic version of Mopidy running, you need Python and the GStreamer -library. To use Spotify with Mopidy, you also need :doc:`libspotify and -pyspotify `. Mopidy itself can either be installed from the Python -package index, PyPI, or from git. +To get a basic version of Mopidy running, you need Python and the +:doc:`GStreamer library `. To use Spotify with Mopidy, you also need +:doc:`libspotify and pyspotify `. Mopidy itself can either be +installed from the Python package index, PyPI, or from git. Install dependencies @@ -31,6 +31,11 @@ Make sure you got the required dependencies installed. - pyserial (Debian/Ubuntu package: python-serial) + - *Default:* :mod:`mopidy.mixers.gstreamer_software` (Linux, OS X, and + Windows) + + - No additional dependencies. + - :mod:`mopidy.mixers.nad` (Linux, OS X, and Windows) - pyserial (Debian/Ubuntu package: python-serial) @@ -41,7 +46,7 @@ Make sure you got the required dependencies installed. - Dependencies for at least one Mopidy backend: - - :mod:`mopidy.backends.libspotify` (Linux, OS X, and Windows) + - *Default:* :mod:`mopidy.backends.libspotify` (Linux, OS X, and Windows) - :doc:`libspotify and pyspotify ` @@ -91,20 +96,42 @@ For an introduction to ``git``, please visit `git-scm.com Settings ======== -Create a file named ``settings.py`` in the directory ``~/.mopidy/``. +Mopidy reads settings from the file ``~/.mopidy/settings.py``, where ``~`` +means your *home directory*. If your username is ``alice`` and you are running +Linux, the settings file should probably be at +``/home/alice/.mopidy/settings.py``. -If you are using a Spotify backend, enter your Spotify Premium account's -username and password into the file, like this:: +You can either create this file yourself, or run the ``mopidy`` command, and it +will create an empty settings file for you. + +Music from Spotify +------------------ + +If you are using the Spotify backend, which is the default, enter your Spotify +Premium account's username and password into the file, like this:: SPOTIFY_USERNAME = u'myusername' SPOTIFY_PASSWORD = u'mysecret' -Currently :mod:`mopidy.backends.libspotify` is the default backend. If you want -to use :mod:`mopidy.backends.local`, add the following setting:: +Music from local storage +------------------------ + +If you want use Mopidy to play music you have locally at your machine instead +of using Spotify, you need to change the backend from the default to +:mod:`mopidy.backends.local` by adding the following line to your settings +file:: BACKENDS = (u'mopidy.backends.local.LocalBackend',) -For a full list of available settings, see :mod:`mopidy.settings`. +You may also want to change some of the ``LOCAL_*`` settings. See +:mod:`mopidy.settings`, for a full list of available settings. + +Connecting from other machines on the network +--------------------------------------------- + +As a secure default, Mopidy only accepts connections from ``localhost``. If you +want to open it for connections from other machines on your network, see +the documentation for :attr:`mopidy.settings.MPD_SERVER_HOSTNAME`. Running Mopidy @@ -114,10 +141,9 @@ To start Mopidy, simply open a terminal and run:: mopidy -When Mopidy says ``MPD server running at [localhost]:6600`` it's ready to -accept connections by any MPD client. You can find a list of tons of MPD -clients at http://mpd.wikia.com/wiki/Clients. We use GMPC and -ncmpcpp during development. The first is a GUI client, and the second is a -terminal client. +When Mopidy says ``MPD server running at [127.0.0.1]:6600`` it's ready to +accept connections by any MPD client. You can find tons of MPD clients at +http://mpd.wikia.com/wiki/Clients. We use GMPC and ncmpcpp during development. +The first is a GUI client, and the second is a terminal client. To stop Mopidy, press ``CTRL+C``. diff --git a/mopidy/__init__.py b/mopidy/__init__.py index 7cdcad6a..15b7b1ad 100644 --- a/mopidy/__init__.py +++ b/mopidy/__init__.py @@ -3,7 +3,7 @@ if not (2, 6) <= sys.version_info < (3,): sys.exit(u'Mopidy requires Python >= 2.6, < 3') def get_version(): - return u'0.1.0a4' + return u'0.1.0' class MopidyException(Exception): def __init__(self, message, *args, **kwargs): diff --git a/mopidy/backends/libspotify/__init__.py b/mopidy/backends/libspotify/__init__.py index f00ec1f0..07f3e2f7 100644 --- a/mopidy/backends/libspotify/__init__.py +++ b/mopidy/backends/libspotify/__init__.py @@ -16,6 +16,12 @@ class LibspotifyBackend(BaseBackend): **Issues:** http://github.com/jodal/mopidy/issues/labels/backend-libspotify + **Settings:** + + - :attr:`mopidy.settings.SPOTIFY_LIB_CACHE` + - :attr:`mopidy.settings.SPOTIFY_USERNAME` + - :attr:`mopidy.settings.SPOTIFY_PASSWORD` + .. note:: This product uses SPOTIFY(R) CORE but is not endorsed, certified or diff --git a/mopidy/backends/local/__init__.py b/mopidy/backends/local/__init__.py index e9e86f34..50b3d84d 100644 --- a/mopidy/backends/local/__init__.py +++ b/mopidy/backends/local/__init__.py @@ -18,6 +18,12 @@ class LocalBackend(BaseBackend): A backend for playing music from a local music archive. **Issues:** http://github.com/jodal/mopidy/issues/labels/backend-local + + **Settings:** + + - :attr:`mopidy.settings.LOCAL_MUSIC_FOLDER` + - :attr:`mopidy.settings.LOCAL_PLAYLIST_FOLDER` + - :attr:`mopidy.settings.LOCAL_TAG_CACHE` """ def __init__(self, *args, **kwargs): diff --git a/mopidy/frontends/mpd/__init__.py b/mopidy/frontends/mpd/__init__.py index 02e3ab5f..6c06279f 100644 --- a/mopidy/frontends/mpd/__init__.py +++ b/mopidy/frontends/mpd/__init__.py @@ -4,6 +4,11 @@ from mopidy.frontends.mpd.process import MpdProcess class MpdFrontend(object): """ The MPD frontend. + + **Settings:** + + - :attr:`mopidy.settings.MPD_SERVER_HOSTNAME` + - :attr:`mopidy.settings.MPD_SERVER_PORT` """ def __init__(self): diff --git a/mopidy/mixers/__init__.py b/mopidy/mixers/__init__.py index c9543863..332718a6 100644 --- a/mopidy/mixers/__init__.py +++ b/mopidy/mixers/__init__.py @@ -4,6 +4,10 @@ class BaseMixer(object): """ :param backend: a backend instance :type mixer: :class:`mopidy.backends.base.BaseBackend` + + **Settings:** + + - :attr:`mopidy.settings.MIXER_MAX_VOLUME` """ def __init__(self, backend, *args, **kwargs): diff --git a/mopidy/mixers/alsa.py b/mopidy/mixers/alsa.py index efcb1e98..6eef6da4 100644 --- a/mopidy/mixers/alsa.py +++ b/mopidy/mixers/alsa.py @@ -10,6 +10,10 @@ class AlsaMixer(BaseMixer): """ Mixer which uses the Advanced Linux Sound Architecture (ALSA) to control volume. + + **Settings:** + + - :attr:`mopidy.settings.MIXER_ALSA_CONTROL` """ def __init__(self, *args, **kwargs): diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index 453747d6..554e986e 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -18,6 +18,10 @@ class GStreamerOutput(object): Audio output through GStreamer. Starts the :class:`GStreamerProcess`. + + **Settings:** + + - :attr:`mopidy.settings.GSTREAMER_AUDIO_SINK` """ def __init__(self, core_queue, output_queue): diff --git a/tests/version_test.py b/tests/version_test.py index 6ab3ee2f..a44e4e89 100644 --- a/tests/version_test.py +++ b/tests/version_test.py @@ -9,10 +9,9 @@ class VersionTest(unittest.TestCase): def test_versions_can_be_strictly_ordered(self): self.assert_(SV('0.1.0a0') < SV('0.1.0a1')) - self.assert_(SV('0.1.0a2') < SV(get_version())) + self.assert_(SV('0.1.0a1') < SV('0.1.0a2')) + self.assert_(SV('0.1.0a2') < SV('0.1.0a3')) self.assert_(SV('0.1.0a3') < SV(get_version())) - self.assert_(SV(get_version()) < SV('0.1.0a5')) - self.assert_(SV('0.1.0a0') < SV('0.1.0')) - self.assert_(SV('0.1.0') < SV('0.1.1')) + self.assert_(SV(get_version()) < SV('0.1.1')) self.assert_(SV('0.1.1') < SV('0.2.0')) self.assert_(SV('0.2.0') < SV('1.0.0'))