PyKaraoke 0.7.5 Released

PyKaraoke version 0.7.5 is now available for download.

Changes in this release are:

  • Support for international filenames in the song database and duplicate file detection.
  • Reduced memory usage associated with duplicate file detection.

PyKaraoke is a cross-platform karaoke player written using Python, utilising the pygame library. It supports the CDG (MP3+G, OGG+G, WAV+G), MIDI (.KAR, .MID) and MPEG formats.

Download release 0.7.5 here.

PyKaraoke Rezip Script

Occasionally I’m contacted by people who have MP3+G zip files that cannot be read by PyKaraoke. The usual warning that PyKaraoke gives when it encounters these ZIP files is “Zip member compressed with unsupported type (9)”.

The problem is that PyKaraoke uses Python’s built in zipfile module, but this does not support all ZIP compression methods (only ZIP_STORED and ZIP_DEFLATED as described here).

A workaround for this is to unzip and rezip your collection of MP3+Gs using one of the above compression methods. Thankfully a PyKaraoke user has provided a shell script they wrote to do the work for you. This is available here, and his usage instructions are as follows:

Basically, I just put it in the same directory as my zip files and make sure there is at least a *done* directory below it…and if you want it to make backups, then put a *bkup *directory below it too.  Then just run ./rezip and let it go to work.  When it’s done, all of your reziped files will be in the *done* directory.  BTW, I’m running this on RedHat Fedora…zip and unzip came w/ it.  I’m assuming there’s a readily available zip/unzip RPM or whatever for other flavors of Linux and the -options are the same…if not, here’s what my -options mean.

*unzip -j* disregards the path in the zip file
*zip -mq* move into zip file and delete file, quiet operation

PyKaraoke 0.7.4 Released

PyKaraoke version 0.7.4 is now available for download.

Changes in this release are:

  • Better support for international characters in filenames.
  • Better detection of environment to support new Posix-based platforms.
  • Improved performer prompt on Windows.

PyKaraoke is a cross-platform karaoke player written using Python, utilising the pygame library. It supports the CDG (MP3+G, OGG+G, WAV+G), MIDI (.KAR, .MID) and MPEG formats.

Download release 0.7.4 here.

PyKaraoke Development at Github

The PyKaraoke development repository has now moved from Sourceforge to Github. The project page is here.

Those interested in trying out the latest pre-release development code or contributing to the project can clone the git repository as follows:
git clone git://github.com/kelvinlawson/pykaraoke.git

Alternatively you can download a tarball of the latest sources using this link.

If you are keen to contribute to the project then please feel free to make a fork at Github and keep us posted on your progress. New features currently being worked on are pitch-shifting and a lyrics preview window, both aimed at professional KJ hosting. These features are already available in a separate development branch.

We hope that this will make it easier for developers to work on their own features and get involved in the project. If you are keen to contribute but don’t have any particular features in mind, feel free to look through the issues list and pick something you find interesting. We look forward to having you on board!

Karaoke CDG DLL

Over the years I have had several requests for a Windows CDG Karaoke player library that can be used as a component in other Windows programs. I tend to use cross-platform development frameworks so I was curious to see how some of the Windows development tools have progressed lately. As a result I have written a DLL / plugin that can be used to add Karaoke playback support to other Windows programs using any programming language (C#, C/C++, VB, VB.NET, Delphi etc).

CDG Player Plugin DLL Screenshot

It supports playback of the common CD+G Karaoke format (MP3+G and WAV+G files), and benefits from the years of CD+G format testing enjoyed through PyKaraoke. It also adds a few features not available in my previous Karaoke projects:

  • Full rewind/fast-forward support (seek to any time position)
  • Window resizing on-the-fly
  • Transparent CDG support (overlays lyrics onto a bitmap image)
  • Very large background bitmaps can be scrolled in all directions to give the impression of moving video
  • Bordered lyrics in transparent mode (optional and non-standard but experience has taught me this improves the appearance)

I have not done much with this yet other than write some simple karaoke player applications in various languages, for example adding CDG playback to a VB application is as simple as this:

Handle = CDGPlayerOpen(“MadWorld.mp3”)
CDGPlayerShow(Handle)
CDGPlayerPlay(Handle)

The DLL exports functions to implement much more than this, with full control of the playback position, querying the song position for progress bars, and other features required to build a fully-featured Karaoke application.

Contact me if you would like more details.

PyKaraoke 0.7.3 Released

We are pleased to announce the release of PyKaraoke v0.7.3, with many improvements:

* Fixes for international / unicode characters in filenames.
* Support unusual CDG file draw commands found in the wild.
* Make About window work with Wx2.6 again. Recent About window
changes work on Wx2.8 only.
* Add options for double-buffered and hardware.
* Clean up keyboard operations.
* ‘P’ pauses, Backspace rewinds.
* Allow remote control access to pykaraoke_mini.
* Support left/right margins
* Improvements to printing support.
* Fix occasional crash in CDG player.
* GP2X: Faster scrolling.
* Windows: Fix temporary filenames used for unzipping same song twice.
* OSX: Improvements to OSX support.
  • Fixes for international / unicode characters in filenames.
  • Support unusual CDG file draw commands found in the wild.
  • Make About window work with Wx2.6 again. Recent About window changes work on Wx2.8 only.
  • Add options for double-buffered and hardware.
  • Clean up keyboard operations.
  • ‘P’ pauses, Backspace rewinds.
  • Allow remote control access to pykaraoke_mini.
  • Support left/right margins
  • Improvements to printing support.
  • Fix occasional crash in CDG player.
  • GP2X: Faster scrolling.
  • Windows: Fix temporary filenames used for unzipping same song twice.
  • OSX: Improvements to OSX support.

PyKaraoke is a cross-platform karaoke player written using Python, utilising the pygame library. It supports the CDG (MP3+G, OGG+G, WAV+G), MIDI (.KAR, .MID) and MPEG formats.

Download the new release here.

PyKaraoke 0.7.2 Released

We are pleased to announce the release of PyKaraoke v0.7.2, with improvements to the external MPG/AVI viewer support.

PyKaraoke is a cross-platform karaoke player written using Python, utilising the pygame library. It supports the CDG (MP3+G, OGG+G, WAV+G), MIDI (.KAR, .MID) and MPEG formats.

Download the new release here.

PyKaraoke available for OpenBSD

We are pleased to announce that PyKaraoke has been added to the OpenBSD ports collection OpenPorts. This means that there are now official PyKaraoke packages for FreeBSD, NetBSD and OpenBSD.

PyKaraoke is a free karaoke player for Linux, FreeBSD, NetBSD, OpenBSD, Windows, OSX and GP2X. You can use it to play your collection of CDG, MIDI and MPEG karaoke songs. For more information visit the homepage.

Seeking Developer to Maintain Windows Port

We are currently seeking a developer to look after the Windows port of PyKaraoke. If you are interested in contributing to an open source project (and learning something about Python development along the way) we would love to hear from you.

We have recently written two articles as a quick-start guide to development on the Windows platform:

The simplest way to get involved is to use the pure Python method discussed in the first article. It is not necessary to install any of the C development environment to do this, and you can quickly start editing and running your own PyKaraoke modifications. We are always happy to bring new developers on board and will give assistance in bringing you up to speed with the source code, but you should find that the PyKaraoke source is well commented and easy to follow. According to Ohloh:

Across all Python projects on Ohloh, 24% of all source code lines are comments. For PyKaraoke, this figure is 30%. This high number of comments puts PyKaraoke among the highest one-third of all Python projects on Ohloh. A high number of comments might indicate that the code is well-documented and organized, and could be a sign of a helpful and disciplined development team.

You can hook up with the development team on the PyKaraoke mailing list. Most of the developers work on Linux, but PyKaraoke works just as well on the Windows platform and for that reason we would like to invite anyone passionate about open source development to look after the Windows port. This might be a small contribution like tidying up the GUI on Windows or taking over making Windows releases, or you could contribute brand new features that can be used on Linux, BSD, OSX, GP2X and any other platforms which PyKaraoke runs on. The differences between the platforms are minor, but having a developer keeping a close eye on the Windows platform will assist in keeping PyKaraoke the most portable karaoke player out there.

PyKaraoke Development: Windows Installer

Following on from the previous article about PyKaraoke development for the Windows platform, those of you who are modifying the source and contributing to the project may be interested in these instructions for building your own PyKaraoke installer executable. This allows you to distribute test builds of PyKaraoke which users can install without having to first install any of the underlying applications and libraries such as Python and Pygame.

  • Install NSIS and Py2exe.
  • Follow these instructions for setting up the build environment.
  • Copy the following DLLs to folder “build/lib.win32-2.6/” in the top-level source folder (note that your originating folders may differ). In future this step will be automated within the installer script:
    • c:\Python26\Lib\site-packages\pygame\SDL.dll
    • c:\Windows\WinSxS\x86_Microsoft.VC90.CRT_…\msvc*90.dll
  • Compile PyKaraoke’s C-based optimised CDG interpreter from a command prompt:
    • python setup.py build_ext –sdl-location=C:\proj\SDL
  • Finally build the installer executable (use option –makensis if you installed NSIS to a non-standard location):
    • python setup.py nsis

Your final executable installer will now be sitting in the top level source folder with the filename pykaraoke-ver.exe.