Audio dispatching library. Generic sink-based interface. Provides
decoding, encoding, resampling, and gain adjustment. Perfect for
the backend of a music player.
(kde and qt4 options would be possible, if someone wants to add them)
Changes since 1.6:
3.1
Support for synchronized lyrics and event timing codes, find and
replace strings in tags and file names, details and sort columns
in file list, bug fixes and usability improvements.
3.0.2
This bugfix release solves the problem that translations and the
documentation were not found on Mac OS X 10.9 Mavericks. The
application is now correctly terminated when the main window is
closed while the handbook is open. Session restoration and the
genres list have been improved. A few build system issues are fixed
too.
3.0.1
This is a bug fix release for 3.0. It fixes the incorrect configuration
conversion and toolbar configuration in the KDE version, the filename
format configuration, bugs in the fingerprint import and several
build issues for different Linux distributions.
3.0
Flexible architecture with common shared libraries and plugins for
metadata libraries and importers, new command-line application,
support for Opus format, bug fixes and usability improvements.
2.3
Automatic batch import for multiple directories, improved import,
configurable quick access tag frames, better responsiveness when
working with a huge number of files, long operations can be aborted,
bug fixes and usability improvements.
2.2.1
This is a bug fix release for 2.2. It fixes the selection of a
wrong language if the primary language is not supported and the
first fallback language should be English and that the English
instead of the German handbook was displayed for a German locale.
2.2
Improved Discogs and AcoustID audio fingerprint import, bug fixes
and usability improvements.
2.1
Chromaprint Acoustid fingerprint import, keyboard shortcuts, improved
iTunes support, icons, bug fixes.
2.0.1
Minor bugfixes. The build system is also improved and should work
out of the box on most distributions.
2.0
Extract and move information between tags, many improvements and
refactorings, e.g. in file list, import, numbering tracks, renaming
directories, GUI and usability.
This library is dead upstream and shouldn't be used for new stuff.
It hasn't been updated to support the newer musepack library (audio/musepack)
and thus depended on the old libmpcdec package instead.
This causes conflicts if you want to install e.g. KDE and vlc.
Requested by Sverre Froyen, ok markd@
Version 1.1 -- November 23, 2013
================================
- Fixed potential DoS attack in fingerprint decompression code. (#6)
- Fixed invalid memory read with some fingerprinter configurations. (#5)
- Fixed compilation with clang on OS X 10.9 (#7, #9)
- Added support for audio format conversion with libav. (#2, Gordon Pettey)
Version 1.0 -- September 7, 2013
================================
- Support for the latest FFmpeg API.
- Support for reading audio from stdin in fpcalc.
- Changed fpcalc to return non-zero status on failure.
Changes since 2.2.0:
* Fix image loading with HTTP URLs and empty images
* Fix bogus track numbers when automatically numbering files
* Add Opus and Speex MIME types to desktop file
* Abhinav Jangda’s fix for numeric characters in ID3 TPOS fields
* Roman Bogorodskiy’s ID3 wrapper compilation fix
* Improvements to MP4 GIO wrapper
* Fix a scanner bug when converting "%20" to " "
* Fix compilation if TagLib or libogg is unavailable
* Depend on TagLib 1.9.1 for MP4 support
* Use CXXFLAGS from the environment
* Rafael Ferrera’s Brazilian Portuguese translation update
* Aurimas Černius’s Lithuanian translation update
* Balázs Úr’s Hungarian translation update
* Matej Urbančič’s Slovenian translation update
depending on libmodplug.
Anyway, it doesn't work against the latest libmodplug, so remove plugin from
PLIST, explicitly disable libmodplug, and bump PKGREVISION.
ver 0.18.10 (2014/04/10)
* decoder
- ffmpeg: fix seeking bug
- ffmpeg: handle unknown stream start time
- gme: fix memory leak
- sndfile: work around libsndfile bug on partial read
* don't interrupt playback when current song gets deleted
ver 0.18.9 (2014/03/02)
* protocol
- "findadd" requires the "add" permission
* output
- alsa: improved workaround for noise after manual song change
* decoder
- vorbis: fix linker failure when libvorbis/libogg are static
* encoder
- vorbis: fix another linker failure
* output
- pipe: fix hanging child process due to blocked signals
* fix build failure due to missing signal.h include
ver 0.18.8 (2014/02/07)
* decoder
- ffmpeg: support libav v10_alpha1
* encoder
- vorbis: fix linker failure
* output
- roar: documentation
* more robust Icy-Metadata parser
* fix Solaris build failure
ver 0.18.7 (2014/01/13)
* playlist
- pls: fix crash after parser error
- soundcloud: fix build failure with libyajl 2.0.1
* decoder
- faad: fix memory leak
- mpcdec: reject libmpcdec SV7 in configure script
* daemon: don't initialize supplementary groups when already running
as the configured user
ver 0.18.6 (2013/12/24)
* input
- cdio_paranoia: support libcdio-paranoia 0.90
* tags
- riff: recognize upper-case "ID3" chunk name
* decoder
- ffmpeg: use relative timestamps
* output
- openal: fix build failure on Mac OS X
- osx: fix build failure
* mixer
- alsa: fix build failure with uClibc
* fix replay gain during cross-fade
* accept files without metadata
ver 0.18.5 (2013/11/23)
* configuration
- fix crash when db_file is configured without music_directory
- fix crash on "stats" without db_file/music_directory
* database
- proxy: auto-reload statistics
- proxy: provide "db_update" in "stats" response
* input
- curl: work around stream resume bug (fixed in libcurl 7.32.0)
* decoder
- fluidsynth: auto-detect by default
* clip 24 bit data from libsamplerate
* fix ia64, mipsel and other little-endian architectures
* fix build failures due to missing includes
* fix build failure with static libmpdclient
ver 0.18.4 (2013/11/13)
* decoder
- dsdiff: fix byte order bug
* fix build failures due to missing includes
* libc++ compatibility
ver 0.18.3 (2013/11/08)
* fix stuck MPD after song change (0.18.2 regression)
ver 0.18.2 (2013/11/07)
* protocol:
- "close" flushes the output buffer
* input:
- cdio_paranoia: add setting "default_byte_order"
- curl: fix bug with redirected streams
* playlist:
- pls: fix reversed song order
* decoder:
- audiofile: require libaudiofile 0.3 due to API breakage
- dsf: enable DSD128
* enable buffering when starting playback (regression fix)
* fix build failures due to missing includes
* fix big-endian support
ver 0.18.1 (2013/11/04)
* protocol:
- always ignore whitespace at the end of the line
* networking:
- log UNIX domain path names instead of "localhost"
- open listener sockets in the order they were configured
- don't abort if IPv6 is not available
* output:
- alsa: avoid endless loop in Raspberry Pi workaround
* filter:
- autoconvert: fix "volume_normalization" with mp3 files
* add missing files to source tarball
ver 0.18 (2013/10/31)
* configuration:
- allow tilde paths for socket
- default filesystem charset is UTF-8 instead of ISO-8859-1
- increase default buffer size to 4 MB
* protocol:
- new command "readcomments" lists arbitrary file tags
- new command "toggleoutput"
- "find"/"search" with "any" does not match file name
- "search" and "find" with base URI (keyword "base")
- search for album artist falls back to the artist tag
- re-add the "volume" command
* input:
- curl: enable https
- soup: plugin removed
* playlist:
- lastfm: remove defunct Last.fm support
* decoder:
- adplug: new decoder plugin using libadplug
- dsf: don't play junk at the end of the "data" chunk
- ffmpeg: drop support for pre-0.8 ffmpeg
- flac: require libFLAC 1.2 or newer
- flac: support FLAC files inside archives
- opus: new decoder plugin for the Opus codec
- vorbis: skip 16 bit quantisation, provide float samples
- mikmod: add "loop" configuration parameter
- modplug: add "loop_count" configuration parameter
- mp4ff: obsolete plugin removed
* encoder:
- opus: new encoder plugin for the Opus codec
- vorbis: accept floating point input samples
* output:
- new option "tags" may be used to disable sending tags to output
- alsa: workaround for noise after manual song change
- ffado: remove broken plugin
- httpd: support HEAD requests
- mvp: remove obsolete plugin
- osx: disabled by default because it's unmaintained and unsupported
* improved decoder/output error reporting
* eliminate timer wakeup on idle MPD
* fix unresponsive MPD while waiting for stream
* port of the source code to C++11
ver 0.17.6 (2013/10/14)
* mixer:
- alsa: fix busy loop when USB sound device gets unplugged
* decoder:
- modplug: fix build with Debian package 1:0.8.8.4-4
* stored playlists:
- fix loading playlists with references to local files
- obey filesystem_charset for URLs
This library has been stripped down from replaygain.
ReplayGain is the name of a technique invented to achieve the same
perceived playback loudness of audio files. It defines an algorithm
to measure the perceived loudness of audio data.
1.3.5 (April 15, 2014)
----------------------
This is a short-term release that adds some great new stuff to beets. There's
support for tracking and calculating musical keys, the ReplayGain plugin was
expanded to work with more music formats via GStreamer, we can now import
directly from compressed archives, and the lyrics plugin is more robust.
One note for upgraders and packagers: this version of beets has a new
dependency in `enum34`_, which is a backport of the new `enum`_ standard
library module.
The major new features are:
* Beets can now import `zip`, `tar` and `rar` archives. Just type ``beet
import music.zip`` to have beets transparently extract the files to import.
* :doc:`/plugins/replaygain`: Added support for calculating ReplayGain values
with GStreamer as well the mp3gain program. This enables ReplayGain
calculation for any audio format. Thanks to Yevgeny Bezman.
* :doc:`/plugins/lyrics`: Lyrics should now be found for more songs. Searching
is now sensitive to featured artists and parenthesized title suffixes.
When a song has multiple titles, lyrics from all the named songs are now
concatenated. Thanks to Fabrice Laporte and Paul Phillips.
In particular, a full complement of features for supporting musical keys are
new in this release:
* A new `initial_key` is available in the database and files' tags. You can
set the field manually using a command like ``beet modify
initial_key=Am``.
* The :doc:`/plugins/echonest` sets the `initial_key` field if the data is
available.
* A new :doc:`/plugins/keyfinder` runs a command-line tool to get the key from
audio data and store it in the `initial_key` field.
There are also many bug fixes and little enhancements:
* :doc:`/plugins/echonest`: Truncate files larger than 50MB before uploading for
analysis.
* :doc:`/plugins/fetchart`: Fix a crash when the server does not specify a
content type. Thanks to Lee Reinhardt.
* :doc:`/plugins/convert`: The ``--keep-new`` flag now works correctly
and the library includes the converted item.
* The importer now logs a message instead of crashing when errors occur while
opening the files to be imported.
* :doc:`/plugins/embedart`: Better error messages in exceptional conditions.
* Silenced some confusing error messages when searching for a non-MusicBrainz
ID. Using an invalid ID (of any kind---Discogs IDs can be used there too) at
the "Enter ID:" importer prompt now just silently returns no results. More
info is in the verbose logs.
* :doc:`/plugins/mbsync`: Fix application of album-level metadata. Due to a
regression a few releases ago, only track-level metadata was being updated.
* On Windows, paths on network shares (UNC paths) no longer cause "invalid
filename" errors.
* :doc:`/plugins/replaygain`: Fix crashes when attempting to log errors.
* The :ref:`modify-cmd` command can now accept query arguments that contain =
signs. An argument is considered a query part when a : appears before any
=s. Thanks to mook.
.. _enum34: https://pypi.python.org/pypi/enum34
.. _enum: https://docs.python.org/3.4/library/enum.html
1.3.4 (April 5, 2014)
---------------------
This release brings a hodgepodge of medium-sized conveniences to beets. A new
:ref:`config-cmd` command manages your configuration, we now have :ref:`bash
completion <completion>`, and the :ref:`modify-cmd` command can delete
attributes. There are also some significant performance optimizations to the
autotagger's matching logic.
One note for upgraders: if you use the :doc:`/plugins/fetchart`, it has a new
dependency, the `requests`_ module.
New stuff:
* Added a :ref:`config-cmd` command to manage your configuration. It can show
you what you currently have in your config file, point you at where the file
should be, or launch your text editor to let you modify the file. Thanks to
geigerzaehler.
* Beets now ships with a shell command completion script! See
:ref:`completion`. Thanks to geigerzaehler.
* The :ref:`modify-cmd` command now allows removing flexible attributes. For
example, ``beet modify artist:beatles oldies!`` deletes the ``oldies``
attribute from matching items. Thanks to brilnius.
* Internally, beets has laid the groundwork for supporting multi-valued
fields. Thanks to geigerzaehler.
* The importer interface now shows the URL for MusicBrainz matches. Thanks to
johtso.
* :doc:`/plugins/smartplaylist`: Playlists can now be generated from multiple
queries (combined with "or" logic). Album-level queries are also now
possible and automatic playlist regeneration can now be disabled. Thanks to
brilnius.
* :doc:`/plugins/echonest`: Echo Nest similarity now weights the tempo in
better proportion to other metrics. Also, options were added to specify
custom thresholds and output formats. Thanks to Adam M.
* Added the :ref:`after_write <plugin_events>` plugin event.
* :doc:`/plugins/lastgenre`: Separator in genre lists can now be
configured. Thanks to brilnius.
* We now only use "primary" aliases for artist names from MusicBrainz. This
eliminates some strange naming that could occur when the `languages` config
option was set. Thanks to Filipe Fortes.
* The performance of the autotagger's matching mechanism is vastly improved.
This should be noticeable when matching against very large releases such as
box sets.
* The :ref:`import-cmd` command can now accept individual files as arguments
even in non-singleton mode. Files are imported as one-track albums.
Fixes:
* Error messages involving paths no longer escape non-ASCII characters (for
legibility).
* Fixed a regression that made it impossible to use the :ref:`modify-cmd`
command to add new flexible fields. Thanks to brilnius.
* :doc:`/plugins/echonest`: Avoid crashing when the audio analysis fails.
Thanks to Pedro Silva.
* :doc:`/plugins/duplicates`: Fix checksumming command execution for files
with quotation marks in their names. Thanks again to Pedro Silva.
* Fix a crash when importing with both of the :ref:`group_albums` and
:ref:`incremental` options enabled. Thanks to geigerzaehler.
* Give a sensible error message when ``BEETSDIR`` points to a file. Thanks
again to geigerzaehler.
* Fix a crash when reading WMA files whose boolean-valued fields contain
strings. Thanks to johtso.
* :doc:`/plugins/fetchart`: The plugin now sends "beets" as the User-Agent
when making scraping requests. This helps resolve some blocked requests. The
plugin now also depends on the `requests`_ Python library.
* The :ref:`write-cmd` command now only shows the changes to fields that will
actually be written to a file.
* :doc:`/plugins/duplicates`: Spurious reports are now avoided for tracks with
missing values (e.g., no MBIDs). Thanks to Pedro Silva.
* The default :ref:`replace` sanitation options now remove leading whitespace
by default. Thanks to brilnius.
* :doc:`/plugins/importfeeds`: Fix crash when importing albums
containing ``/`` with the ``m3u_multi`` format.
* Avoid crashing on Mutagen bugs while writing files' tags.
* :doc:`/plugins/convert`: Display a useful error message when the FFmpeg
executable can't be found.
.. _requests: http://www.python-requests.org/
1.3.3 (February 26, 2014)
-------------------------
Version 1.3.3 brings a bunch changes to how item and album fields work
internally. Along with laying the groundwork for some great things in the
future, this brings a number of improvements to how you interact with beets.
Here's what's new with fields in particular:
* Plugin-provided fields can now be used in queries. For example, if you use
the :doc:`/plugins/inline` to define a field called ``era``, you can now
filter your library based on that field by typing something like
``beet list era:goldenage``.
* Album-level flexible attributes and plugin-provided attributes can now be
used in path formats (and other item-level templates).
* :ref:`Date-based queries <datequery>` are now possible. Try getting every
track you added in February 2014 with ``beet ls added:2014-02`` or in the
whole decade with ``added:2010..``. Thanks to Stig Inge Lea Bjørnsen.
* The :ref:`modify-cmd` command is now better at parsing and formatting
fields. You can assign to boolean fields like ``comp``, for example, using
either the words "true" or "false" or the numerals 1 and 0. Any
boolean-esque value is normalized to a real boolean. The :ref:`update-cmd`
and :ref:`write-cmd` commands also got smarter at formatting and colorizing
changes.
For developers, the short version of the story is that Item and Album objects
provide *uniform access* across fixed, flexible, and computed attributes. You
can write ``item.foo`` to access the ``foo`` field without worrying about
where the data comes from.
Unrelated new stuff:
* The importer has a new interactive option (*G* for "Group albums"),
command-line flag (``--group-albums``), and config option
(:ref:`group_albums`) that lets you split apart albums that are mixed
together in a single directory. Thanks to geigerzaehler.
* A new ``--config`` command-line option lets you specify an additional
configuration file. This option *combines* config settings with your default
config file. (As part of this change, the ``BEETSDIR`` environment variable
no longer combines---it *replaces* your default config file.) Thanks again
to geigerzaehler.
* :doc:`/plugins/ihate`: The plugin's configuration interface was overhauled.
Its configuration is now much simpler---it uses beets queries instead of an
ad-hoc per-field configuration. This is *backwards-incompatible*---if you
use this plugin, you will need to update your configuration. Thanks to
BrainDamage.
Other little fixes:
* :doc:`/plugins/echonest`: Tempo (BPM) is now always stored as an integer.
Thanks to Heinz Wiesinger.
* Fix Python 2.6 compatibility in some logging statements in
:doc:`/plugins/chroma` and :doc:`/plugins/lastgenre`.
* Prevent some crashes when things go really wrong when writing file metadata
at the end of the import process.
* New plugin events: ``item_removed`` (thanks to Romuald Conty) and
``item_copied`` (thanks to Stig Inge Lea Bjørnsen).
* The ``pluginpath`` config option can now point to the directory containing
plugin code. (Previously, it awkwardly needed to point at a directory
containing a ``beetsplug`` directory, which would then contain your code.
This is preserved as an option for backwards compatibility.) This change
should also work around a long-standing issue when using ``pluginpath`` when
beets is installed using pip. Many thanks to geigerzaehler.
* :doc:`/plugins/web`: The ``/item/`` and ``/album/`` API endpoints now
produce full details about albums and items, not just lists of IDs. Thanks
to geigerzaehler.
* Fix a potential crash when using image resizing with the
:doc:`/plugins/fetchart` or :doc:`/plugins/embedart` without ImageMagick
installed.
* Also, when invoking ``convert`` for image resizing fails, we now log an
error instead of crashing.
* :doc:`/plugins/fetchart`: The ``beet fetchart`` command can now associate
local images with albums (unless ``--force`` is provided). Thanks to
brilnius.
* :doc:`/plugins/fetchart`: Command output is now colorized. Thanks again to
brilnius.
* The :ref:`modify-cmd` command avoids writing files and committing to the
database when nothing has changed. Thanks once more to brilnius.
* The importer now uses the album artist field when guessing existing
metadata for albums (rather than just the track artist field). Thanks to
geigerzaehler.
* :doc:`/plugins/fromfilename`: Fix a crash when a filename contained only a
track number (e.g., ``02.mp3``).
* :doc:`/plugins/convert`: Transcoding should now work on Windows.
* :doc:`/plugins/duplicates`: The ``move`` and ``copy`` destination arguments
are now treated as directories. Thanks to Pedro Silva.
* The :ref:`modify-cmd` command now skips confirmation and prints a message if
no changes are necessary. Thanks to brilnius.
* :doc:`/plugins/fetchart`: When using the ``remote_priority`` config option,
local image files are no longer completely ignored.
* :doc:`/plugins/echonest`: Fix an issue causing the plugin to appear twice in
the output of the ``beet version`` command.
* :doc:`/plugins/lastgenre`: Fix an occasional crash when no tag weight was
returned by Last.fm.
* :doc:`/plugins/mpdstats`: Restore the ``last_played`` field. Thanks to
Johann Klähn.
* The :ref:`modify-cmd` command's output now clearly shows when a file has
been deleted.
* Album art in files with Vorbis Comments is now marked with the "front cover"
type. Thanks to Jason Lefley.
- add support for XM with ADPCM samples
- add OctaMED effect 2E
- fix MMD2/3 note event mapping
- fix XM set pan effect
- fix IT disabled instrument pan
Changes since 2.1.10:
* Several stability fixes, found with Valgrind and the Fedora retrace
server
* Use GTK+ 3 by default, but still allow building against GTK+ 2
* Support extended tag fields in MP4 files
* Support GIF images in tags
* Abhinav Jangda’s Ogg Opus support, asynchronous image loading, scanner
function tests and new Vorbis cover art support
* Santtu Lakkala’s MP4 cover art and GIO support, fix for Roman numeral
capitalization
* Ask for confirmation before overwriting during renaming
* Ekaterina Gerasimova’s Mallard help updates
* Avoid truncating Vorbis audio data when saving
* Gianvito Cavasoli’s Italian translation update
* Alexandre Franke’s French translation updates and typo fix
* Wolfgang Stöggl’s German translation updates
* Piotr Drąg’s Polish translation updates
* Мирослав Николић’s Serbian translation update
* Daniel Mustieles’ Spanish translation updates
* Balázs Úr and Attila Hammer’s Hungarian translation updates
* Enrico Nicoletto and Rafael Ferrera’s Brazilian Portuguese translation
updates
* Marek Černocký’s Czech translation updates
* Aurimas Černius’s Lithuanian translation update
Opus is a totally open, royalty-free, highly versatile audio codec.
Opus is unmatched for interactive speech and music transmission
over the Internet, but also intended for storage and streaming
applications. It is standardized by the Internet Engineering Task
Force (IETF) as RFC 6716 which incorporated technology from Skype's
SILK codec and Xiph.Org's CELT codec.
This package contains a high level API for decoding and seeking in
opus files.