Originally the RusXMMS was developed to handle music with broken
non-Unicode ID3 tags in XMMS. RusXMMS flavor of XMMS transparently
works with ID3 tags, M3U and PLS playlists in multiple encodings and
even languages. The meesages are recoded on the fly and presented to
the user in correct encoding defined by locale. As well the modified
tags are properly stored back to ID3 tags using configured encodigns.
Advanced configuration options allow translation of tags using
libtranslate and online translation services.
Nowadays, the RusXMMS library provides the same functionality for
multiple music and file management applications including taglib, id3lib,
gsteamer, moc, p7zip, unzip, gftp. Just with
few lines of code
the encoding autodetection may be added in any application dialing
with small text strings (titles, file names, etc.) stored in
multiple encodings and languages.
Motivation
Despite wide adoption of Unicode, there is still a lot of files with
encoding is violating ID3 specification. Historically, the problem that
ID3 v.1 had defined ISO8859-1 as only supported encoding. This obviously was
not working for non-Latin languages, Russian being one of the examples. So,
people was just ignoring specification and put CP1251 (sometimes KOI8-R)
encoded strings in and this became a standard de-facto.
RusXMMS patches are trying to detect which encoding is actually used and recode
the text to Unicode to avoid problems. It is used mainly by Russian and
Ukrainian Linux communities, but there is support for other European and Far
East countries as well.
Now, with ID3 v.2 and Unicode support, there should be no problems.
Unfortunately, there is still a lot of old broken MP3 around. Many windows
applications still produce MP3 using CP1251 tags labelled as ISO8859-1. And
there is hardware MP3 players which are only understand CP1251 tags.
Features
- Language Autodetection
- On the fly translation between languages, using online-services!
- Encoding Autodetection for most of European and Asian Languages
- Support for encoding detection plugins (besides Enca, LibGUESS and LibRCD)
- Recoding/translation of multi-language playlists!
- Cache to speed-up re-recoding.
- Possibility to configure new languages and encodings.
- Shared configuration file. For example mentioned TagLib and LibID3 patches
do not have their own user interface, but will utilize the same recoding
configuration as XMMS.
- As well the separate program for configuration adjustment is available.
- GTK/GTK2 UI Library: you can add properties page to your GTK application with
3 lines of code.
- Menu localization opportunity
Patches and Utilities
- RusXMMS: Visualization and editing of the whole range of ID3 tags
using any of eight byte or unicode encodings. Support for playlists with non-english filenames.
The translation of foreign languages to english or locale one is supported as well. The embeded
properties page. The patch makes XMMS the best player to work with ID3 titles.
- TagLib: Visualization and editing of ID3 v.1 and v.2 titles.
Any TagLib based application will correctly work with ID3 tags out of the box. The properties
page can be added to application with several lines of code.
Additionaly, after applying the patch, the 'tagwriter' program from the TagLib examples can
be used to convert titles of all your MP3 files to unicode ID3 v.2 tags just using command:
"tagwriter *.mp3".
- LibID3Tag: Visualization of ID3 v.1 and v.2 titles. Any LibID3Tag
based application will correctly display (but not edit) ID3 tags out of the box.
- LibID3: Visualization of ID3 v.1 and v.2 titles. Any LibID3
based application will correctly display (but not edit) ID3 tags out of the box.
- Mpg123: Visualization of ID3 v.1 titles.
- GFtp: Recoding file names between FTP servers using different
encodings.
- Unzip: Recoding file names from Windows created archives.
- 7zip: Fixes file names in zip archives (7z archives have not
that problem out of the box).
- MOC: Recoding ID3 tags (included in 2.4.0)
- RCCTools: Command line interface to LibRCC library. It is a highly
configurable tool (supports almost all library functionality) which allows to recode standard input
on the per-line basis. Additionaly, there is a special mode providing a way to bring the names of
all files in the specified directory to appropriate form (to the specified encoding, transliterate
all names to english, translate all names to english, etc.)
Distribution
- From project page you can download patch sources and binary packages for quantity
of distributions:
Mandrake,
Slackware,
SuSe,
RedHat,
Debian,Ubuntu.
The Gentoo Overlay
is available as well.
However, all this binaries are maid by different people and not always updated with new version of
the RusXMMS or Linux distribution. So, if there are no appropriate binary - build from sources and
send builded packages to me ;)
- Xmms distributed with
ALT Linux,
and Mandriva Linux has rusxmms patch applied (Mandriva uses first generation of patch).
- Patched taglib has wider spread. It is included in ALT Linux, Debian & Ubuntu (package
libtag1-rusxmms), OpenSuSE (since 12.2), Arch Linux (package taglib-rcc), FreeBSD ports.
- In case of you have made binary releases for other Linux distributions and want
to share them with other users, please, contact me.
- DISCLAIMER: If you want patches presented here to be
included in the correspondent project trees, please, ask authors. I can not help
with that. The same thing should be concerned about inclusion of LibRCC and LibRCD in
the various Linux distributions.
Gratitudes
NEWS
26.11.2015 taglib-csa11 adds support for taglib 1.10 (thanks to trialuser)
14.05.2014 The main project server is renamed to
darksoft.org (formely
dside.dyndns.org)
17.11.2013 LibRCC 0.2.12 LibGuess 1.1 support and fixes to build system
12.11.2013 taglib-csa10
- Updated to taglib-1.9.1. Thanks to Ivan Romanov.
- Prevent corruption of multibyte encodings stored in ID3 v.1 tags
- Extra patch which prevents client applications from overloading ID3 v.1 renderer/parser and, hence, bypassing RusXMMS.
01.05.2013 taglib-csa8
- Fixes openSUSE bug #814814
and hopefully fully solves the issues with the corruption of latin1 tags when recoding is switched
off in the configuration. Many thanks for Dave Plater, M00n Raker, and other participants.
29.01.2013 LibRCC 0.2.10
- GTK3 UI library
- Improvements in BerkeleyDB handling
- Added pkgconfig configuration
- Fixed configuration for Czech language
- Fixed memory leak in non-caching mode
- Fixed few writes outside of array boundaries
29.01.2013 taglib-csa7
- Fixed corruption of latin1 tags when recoding is switched off in the configuration (taglib patch)
04.02.2011 Official mirrors in Germany and USA
15.02.2010 New patchset for Libtranslate is
released. Services for libtranslate are
updated as well
14.02.2010 New binary repository at
SuSe build service. Few packages for Fedora, Mandriva, and OpenSUSE at the moment.
06.11.2009 A beta version of patch for p7zip 9.04 is available,
here.
14.10.2009 LibRCC 0.2.9
- Support for BerkeleyDB 4.7.x and 4.8.x (0.2.8 will crash if BerkeleyDB is updated from the older version to 4.7 or 4.8)
- Support for systems without flock (OpenSolaris, for example)
- Fix build problems with a newer glibc due to a strnlen redeclaration
14.06.2009 Mpg123 patch is updated to version
1.7.3
and p7zip is updated to
4.65.
30.03.2009 Ivan Borzenkov have managed to include some of RusXMMS libraries into the Debian SID.
20.11.2008 New taglib-csa6 patch including support of CMake build system. Patch is provided by Ivan Borzenkov
21.07.2008 The forum got a new addres:
http://darksoft.borda.ru
02.06.2008 Debian Lenny packages are finally here. Many thanks to Иван Борзенков
14.04.2008 Few patches are updated, and one new is provided
- Patch for Libid3tag is provided
- Patch for taglib is updated to taglib-1.5
- Patch for p7zip is updated to p7zip-4.57
- Patch for unzip now respects the rcc configuration
- Patch fixing segfaults on AMD64 for MAC 3.99 (Monkey Audio Codec) is provided
- The Gentoo Overlay is now available
13.01.2008 LibRCC 0.2.6,
LibRCD 0.1.11:
FreeBSD compatibility fixes of autoconf scripts. Upgrade is only required
if you expirience compilation problems. No other changes are included.
Many thanks to Ulrich Spoerlein for patches.
25.11.2007 RusXMMS csa41: Support of xmms-1.2.11
28.06.2007 New service description
file for LibTranslate with support of
Translate.ru and
Pereklad.ua engines. The Libtranslate
patches from
here
are mandatory should be applied in order to support new services.
28.06.2007 LibRCC 0.2.5,
LibRCD 0.1.10:
- Detection of genuine ISO-8859-1 encoding by LibRCD.
- Support for LibGUESS library which is providing encoding
autodetection for Chinese, Korean and Japanese languages.
- Better Enca support (correction of wrong encoding names).
- Improvements of the translation engine.
- Compilation fixes for FreeBSD. Thanks to D. Panov.
- Fixes of UI translation routines.
- Support for external IConv library and LibCharset.
- Most of preconfigured languages are moved out to configuration file.
04.05.2007 Some information is added to
wiki
23.04.2007 Patch fixing compilation in some rare configurations
16.04.2007 Various updates
(important for Gentoo users):
- RCCTools - Command line interface to LibRCC library. Recodes standard input,
renames files in the directories.
- New patches: p7zip (Zip archives), mpg123 v. 0.65
- New fixed unzip patch: Old patch fails the openoffice build on several platforms (The build
executes unzip during install, but openoffice changes environment and uses embeddded berkeley db4
library incompatible with the system one. Therefore, unzip fails complaining on the linkage
problems. The new patch uses lazy linking, and if there are some problems with librcc the unzip
application will work just without recoding).
- New Gentoo portage with various xmms packages included (Which are nowadays ripped from
the official Gentoo portage). If you want me to include more XMMS related packages in the
portage, please, leave a note with the package names on the forum.
- Wiki, but still empty.