xmms-crossfade: XMMS Output Plugin for Crossfading / Continuous Output ---------------------------------------------------------------------- Features: --------- * Crossfading * Continuous output * Gap-Killer: Some mp3-encoders produce small gaps of silence at the beginning or end of the stream. They can automatically be detected and removed. Installation: ------------- Just the usual: ./configure make su make install This will install libcrossfade.so (along with the libtool support file libcrossfade.la) to the XMMS output plugin directory as reported by `xmms-config --output-plugin-dir`. The default depends on how you configured your XMMS. On my machine, the Output plugin directoy is /usr/X11R6/lib/xmms/Output. Older versions of XMMS did not include xmms-config. In this case, the configure script will guess the output plugin directory from xmms' installation path. You can always override the installation directory using the --libdir= option. You need to restart your XMMS for the plugin to become available. Next, go to "Audio I/O Plugins" and select "Crossfade Plugin" from the list. After that, you should check the plugin's configuration and set the correct audio and mixer devices (but the defaults should work fine for most people). Configuration: -------------- To enter the plugin configuration dialog, go to the "Audio I/O Plugins" tab of the XMMS configuration dialog, select "Crossfade Plugin" from the list of available Outputs and press the "Configure" button. In the "Devices" tab, you can select the DSP and Mixer devices to be used for playback and volume control. The first entry in the lists corresponds to the default devices (/dev/dsp or /dev/mixer). If you have more than one Audio card, you can select them here. (/dev/dsp1, /dev/dsp2 etc..) Alternatively, you can check the "Use alt device:" box and enter a device manually. In the "Buffer" tab, you can set the size of the internal buffers. The values are given in ms (milliseconds). The internal buffer format is 16 bit stereo @ 44100khz, thus using 176400 bytes for 1000 ms. The "Mixing" buffer is used when crossfading between songs. Its size corresponds to the duration of the crossfades. For example, a value of 2500 (the default) will fade the last 3 seconds of a song with the first 3 seconds of the next. Note that the actual crossfading time might be shorter if the input stream is slow or the songs are short. The "Preload" buffer is filled at the beginning of playback, but before any data is written to the audio device. It serves as a puffer to avoid gaps. The default size is 750 ms. If you experience gaps when changing songs, you can try to increase the preload buffer size. The two checkboxes enable/disable crossfading and the gap-killer. Note that the gap-killer is always disabled when using crossfading. The "Mixer" tab should be self-explanatory. You can completely enable/ disable the mixer, reverse balance control or select Master Volume instead of PCM. The "Misc" tab contains two options for informational purposes only: "Write debug output to " writes verbose debug information to . This is useful when you have problems getting XMMS to play anything. Also, if you discover a bug in the plugin, please include this debug output in your report. You should turn this off if you start XMMS from within Netscape (otherwise you will be bugged by lots of popup dialogs). There is a new option introduced with version 0.1.1: "Apply effect after mixing". When checked, this will enable an alternate method of applying the effect plugin. The effect plugin is called immediatelly before the data is written to the device. This way, you will almost immediatelly hear the results of changing the plugin's paramters. Also, this will enable the LiveIce plugin to correctly work together with xmms-crossfade. This feature is enabled by default. Unfortunatelly, it makes xmms-crossfade more sensible to buffer underruns -- so if you have a slow machine and are experience gaps in the output try turning this off again. The buffer monitor continuously displays the status of the internal mixing buffer as well as the device's buffer. This is sort of a gimmick (and also uses considerable CPU time just for the updates), but it has been very useful in tracking down the cause for erratic/gapped output, so I decided not to remove it from the release. Known bugs: ----------- * When playing the last song of a playlist (and "Repeat" is turned off), the last few seconds (= mixing buffer size) of playback can't be stopped. * During crossfade, the analyzer display and any visualization plugins is not accurate. When the next song starts fading in, the analyzer display will make a short pause an then display the new song in full volume. * The Effect plugin handling is still not perfect. With the "Apply effect after mixing" option enabled , you are more likely to have buffer underruns on slow machines, because the effect is being applied from within the writer thread. Please send any comments or bug reports to . When submitting bug reports, please activate debug output in the Misc tab of the configuration dialog and send the output along with it. Credits: -------- Thanx to Manuel Ubeda, Alex Schuster and Gordon Decker for testing; to the XMMS staff, especially Olle, for XMMS, bug reports and support; to all who have sent me feedback, bug reports and feature requests. Version history: ---------------- * V0.1 06/16/2000: Initial release * V0.1.1 06/26/2000: Bugfix release - Fixed effect plugin handling. All effects which used the query_format() callback did not work, including QSound iQ. Also, effects are now applied after crossfading and synchronous to device output. The LiveIce plugin will work now, too. Thanx to Olle Hällnäs and Jamie Zawinski for help on this one. - Fixed a bug which could cause crashes when saving config - Fixed a crash when crossfading between slow inputs (like a cdrom spinning up) - Closing the monitor window no longer unchecks the "Show Buffer Monitor" option in the configuration dialog - Fixed bad synchronization with analyzer/visualization output. Also changed "Known Bugs": The analyzer will always work, even with no buffers at all. - Enabled crossfading on manual songchange! This has been requested by numerous people. - Added support for arbitrary rates. Now it is possible to play files with rates other than the standard 11025, 22050 and 44100. Thanx to Thomas Nilsson for reporting. - Changed default buffer sizes to 2500/750. - Moved Credits from AUTHORS to README