RusXMMS
RusXMMS is On The Fly Recoding Project















SourceForge Logo
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



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.