What is the Sajber Jukebox? Well, it's a mpeg layer 3 player with a
graphical user interface. It's based on Woo-jae Jung's splay for the
audio and QT's graphical library for the interface. It's another one
of my projects that went a bit overboard, as it originally just was
intended as a randomizer for the songs on my friend's computer, Sajber.
Features:
- Supports mpeg layer 3. The support for mpeg layer 1 & 2 and wav files is still in there, but untested.
- Playing of the 'net. By using normal http addresses, ie http://whatever.host.on.the.net/~someguy/song.mp3, you can play without having to first download.
- Forward, Rewind, Pause, Seek. The Sajber Jukebox allows for moving backwards and forwards in the song [unless its streaming, then rewind wont work]. By pressing on the progression bar you can make swift jumps to any place in the song of your liking.
- Mixer control. The Sajber Jukebox comes with a mixer control that allows you to change bass, treble, volume and pcm/dsp setting at any time without having to start a second program.
- Three types of browsers:
- File Browser. A local filemanager type of browser, which allows you to click around on your local system and select songs you wish to play.
- Standard Database. A database which allows you to recursively scan the harddisk or a directory structure in search for songs. The database is sorted by group, album and songname and makes it easy to keep track of your songs, unregardless of where on the harddisk they are located. It also supports http references in addition to ordinary files.
- Http Browser. This browser allows for playing songs of the net, and scanning home pages for songs. By giving the Http Browser an URL to a page, it will retrieve it and search it through for any references to playable files.
- Selections. You can select songs from any number of browsers, and play them with repeat and random.
- Configurability. The Sajber Jukebox is easy to configure, and provides a graphical interface instead of having to figure out how various options in the obscure rc files works.
- Saving. Selections, Standard Databases, Http Browsers and configurations can be saved to disk for easy retrieval, or autoloading at startup.
- Realtime threads. If you're a daredevil who believes that everything else on your machine oughta come second to the playing of audio, you can configure your player to use realtime scheduling.
- Bookmarks. You can save and edit bookmarks to various http or local locations for swift jumps around the filesystem or the world.
- Progression bar and timer to keep track of where in the song you are.
- Easily change between different databases and browsers.
- A smaller Player's window, with the basic functions which wont cover the entire screen.
Requirements:
- A computer and a soundcard.
- Linux, 2.0.* or 2.1.*
- QT, version 1.2.
- linuxThreads, version 0.6
Currently known bugs:
- Accelerated X and X11 seems to busy-lock the CPU at times, when drawing graphics, probably during BITBLT. Not even realtime scheduling can correct this problem unfortunately.
- X is not reentrant, which is the reason the player and the gui, although closely connected, are two separate programs.
- The file IO is flakey at the best. If something goes wrong while reading a file, it will go *wrong*. This will be corrected in later versions. For the time being, don't attempt to load files that aren't databases or selections.
- The linuxThreads distribution contains a wrapper for the scheduling syscalls. If you do not have libc 5.2.18, make certain you comment out the lines that adds syscalls.o to OBJS before compiling, or the realtime options will not work.
Future additions:
- Improve the FTP support. There's a few unstable things left, and impossible to change the port number.
- More stable disk IO. Currently it's very flakey, and if the file is in any way corrupt, or in a strange fileformat not immediate recognized as faulty, thigns will go way bad.
- Timer and Alarm. The possibility to tell the player to snooze and stop after a number of minutes, and tell it to restart at a specific time.
- Test the mpeg layer 1 and 2 and wav file support. Make the required changes to allow for the timer to work correctly with these fileformats.
- Proxies. I don't think this will be that hard, and the http is built in such a way that it should be an easy addition. I just need to figure out how its supposed to be done, and how its supposed to work.
- Tag file supports. Various index files used by other browsers. Tell me if there's an index file type you'd like supported.
- Copying between databases. Drag and drop if QT implements it.
- Improved file browser, which allows for selecting by filters, multiple selections and drag'n drop to the selection window.
- Make it possible to give the playing processes commandline arguments at startup. Add the possibility to use unix "|" and fork multiple processes where the first process in the chain is the controlling process. Change message handling from stdout/stdin to a higher numbered socket [required if I start piping].
- Well, ideas?
Downloading:
A mailinglist has been set up for discussions and announcements regarding
the Sajber Jukebox. If you wish to join, follow this
link.
If you encounter a bug, make an addition or bugfix, have an idea or a comment, please send an email to wizball@kewl.campus.luth.se or the mailinglist.
For a description about the various controls and features, check the manual page(v1.0) or the development manual(v1.08).
A note to the crafty.