-I forgot to mention this in the previous version: 8bit soundcards are now
supported too (with command-line option -8 it's forced)
-Squashed another sigsegv bug that tried to fclose() NULL.
-genre-bug that caused random genre to be displayed squashed.
-Fixed a bug causing sigsegv for configfile lines with a list of values.
-Added AudiofileMatching keyword to configfile: You can specify a list of
regular expressions here that match valid audio files if you're not happy
with the default filename matching (this triggered a bug in the filemanager
that would add dirs with '.*' regexps..fixed)
-The bugfix that prevented leaving files open introduced another feature.
-#threads can be set with command-line option too.
-fixed bug preventing mp3blaster from running w/o a .mp3blasterrc in your
homedir. (thank you Tjerk Meesters for pointing this out!)
-during playing, all files accessed were left open. This is hopefully fixed
now. (thanks go to Steven Otten for pointing this out!)
-winnt/ section updated (mp3tag.exe from 2.0b11 with genre support)
-all interesting global variables are now put in a struct, shared by some
-downsampling possible with commandline options --downsample/-2 (might run
on a 486/66 now, bother to try this for me if you an antique 22Khz/8bit
soundcard!) NOTE: This is still broken (for 8bit cards); the next version
will support 8bit cards too.
-besides just stereo/mono, the interface knows about joint stereo and dual
channel too now.
-http streams in playlist are now considered to be valid audiofiles in the
-Added "/ to search" in filemanager.
-Added vi-style keys to interface (h=dir up, j=down,k=up), and therefore
changed 'h' to '?' to get help
-More userfriendly path handling (~'s are expanded so you can enter ~/bla
as path, f.e.)
-configuration file support. Just the basics yet, only 4 options can currently
be set in this file. Read config.cc to know more. If you have suggestions
what to put as a configurable option, please email!
-Fixed a bug in the genre support (char=>unsigned char). Bedankt Tjerk
Meesters for the hint!
-Got rid of some (harmless) compilation warnings.
-NAS Support en SID playback support, by Willem-Jan Monsuwe (firstname.lastname@example.org)
This is still rather alpha..playback with NAS crashes on my machine, but
works on another one. Your Milage May Vary :)
-Fixed a bug that prevented mp3blaster to compile without errors with the
-Convert to WAV now asks for a filename to write to.
-Casted some (const char*) as (char *) to get it to compile with ncurses5.0b2
and gcc-2.95.1. Hope this won't break anything.
-improvements on autoconf files and some general code by email@example.com.
-Applied a patch from Sverre Huseby (firstname.lastname@example.org) to hopefully get rid
of mp3blaster stopping during playback because input blocks.
-If nmixer is called as 'nasmixer' (e.g. using a softlink called nasmixer) it
will act as a soundmixer for NAS. You need to set $DISPLAY then.
-Fixed a bug that caused a layout error (or sigsegv).
-Added genre support to the ID3Tag code. Thank you Petr Cech!
(I falsely put this in 2.0b10's ChangeLog, oops)
-Added very basic (and simple) conversion from mp3 to wav.
-Minor bugfixes (MYINT)
-Hopefully fixed the problem where mp3blaster interrupted playing mp3's while
waiting for a key to be pressed on certain configurations. If you *still*
suffer from this, edit src/playwin.cc, search for usleep(1) and try to
put it somewhere else before the getch() function call until it works and
mail me about your change. Thanks to Martijn van Buul for pointing it out
and several other people for confirming that it actually works.
-Enhanced the check for a __math.h that crashes mp3blaster: It's due to
gcc 2.7.* or older. Setups with this compiler will compile with
-Fixed a 'major bug' in mpegtoraw.cc that caused mp3blaster to crash on
certain mp3's: Some mp3's have garbage, produced by some encoders, prepended
that contains 0xfff, the start of a synchronization header. The original
author of mpegsound figured that the first occurence of 0xfff must be the
first header, and therefore didn't check for the header's validity. I've
added validity checking for each sync.header, so if this breaks some mp3
that played before: tough luck, it's _really_ damaged then.
Basically mp3blaster will assume the first header that can possibly be a
valid sync.header is the start of an mp3. This might prove wrong in rare
cases, but there's no better solution as long as I don't know the format of
-Fixed a major memory leak. There's still some loss but it's heavily reduced.
Also some minor ones; thanks to Steve Kemp for pointing those out.
-Added command option for output device
-Changed mixer layout
-Added command-line options for nmixer: You can now set any mixer-device
supported by the OSS-lib (and your soundcard, ofcourse) on the command-line.
Together with the option -q you can use nmixer to initialise your mixer's
volumes (it will quit nmixer immediately)
-Wrote a manual for nmixer.
-Changed command-line syntax. You don't need the -f option now to play just
one (or now, more) mp3(s), you can just do mp3blaster [options] *.mp3 for
-The default behaviour when mp3blaster starts playing immediately
at startup is to quit as soon as the playing is over. -q now prevents this
(instead of causing it)
-Changed mp3tag so that it will recognise ID3tags that are not preceded with
28 or more 0xFF's (some programs obviously do this!)
-Fixed a few layout bugs.
-I changed the mpegsound lib such that mp3blaster now also plays mp3's with
errors in them. This breaks the ability to play free bitrate mp3's though,
but I haven't heard of anyone yet who actually uses those. If you have
free bitrate mp3's (or know how to make them) I'd love to hear about it so
I might be able to allow free bitrate mp3's *and* playback of bad mp3's.
This fix should (hopefully) STOP mp3blaster from SIGSEGV'ing on bad mp3s!!
-Added mp3tag.exe on the mp3blaster homepage. Thanks to Steve Kemp
<email@example.com> for this! Also check the winnt/ dir for the sources.
-Added time to the playing interface. Playing time, total time *and* remaining
time are displayed now. Note that the timing will not work with free bitrate
mp3's since the total time's calculation is based on the info from the first
frame in the mp3. Also, when threading is used, the time is not updated during
the last seconds of the mp3(I need to fix this yet!). The code's inspired
on patches from Martijn van Buul.
-updated some classes.
-Changed (Improved) the interface: '+' and '-' in the playlist editor now
select the previous/next group in the group-window (the small rightmost
window). F3 in playlist mode will delete the current group (finally this
feature made it, I simply didn't have space in the interface to add this
functionality before ;).
-Very cool new feature in the file manager ``add dirs as groups'': If you
use this function, every subdir that has mp3's in it, will be added as a
group with the name of the directory as groupname! Making a playlist never
has been easier!
-The playlist saves the global and each group's playmode. A conversion script
for playlist that are made with mp3blaster <2.0b8 is included:
./convlist /path/to/oldplaylist.lst > newplaylist.lst
-In file selection mode, you can now enter a path directly.
-Sound device is now guessed correctly for OpenBSD (/dev/audio i.o /dev/dsp)
-Wrote a manual. Sniff.
-One can select the number of mp3-frames to run in one loop as a command-line
option. This is useful for either speeding up the interface or avoiding
-added a check to configure for bad /usr/include/__math.h that crashes
mp3blaster when an attempt to play an mp3 has been made.
-Selected files in the file browser now visually differ from non-selected
files on a dumb (b/w) terminal.
-error-messages now should make more sense (the old ones were wrong ones
because of an indexing error)
-Fixed a bug that occured if /dev/mixer couldn't be opened for some reason
(non-existant, permission denied,..). It would close stdin..
-After chosing 'recursive select' from the file manager, the program returns
to the playlist editor immediately (since this is less confusing IMHO).
-Added the mp3tag command. Right now it's a command line tool to change/add
ID3 tags to mp3 files, but it will also be incorporated into mp3blaster
itself. It's very easy to use. Really. Enjoy! PS: Check the id3scripts dir
for a nice script to add id3tags to your mp3's based on their filename.
-It now accepts .mp2 and .mp3 as filename extensions for mpeg audio files.
-reduced the annoying ``ticks'' in between songs further. If you still
suffer from them (and it's not the mp3 having a bad head or tail!) please
give me a ring..
-fixed a bug with mixer initialisation at playlist starting time that was
introduced in 2.0b6.
-path to mp3 put in border of playwindow which leaves more room for the
playlist (that's still got to be put in)
-Applied a patch from Jukka Honkela that should reduce the audible "snap"
between numbers while playing. If you still here snaps between songs
that are played in a playlist without user intervention, please tell me!
-Both DEL and d remove a song from the playlist now(in playlist editor)
-Added "'q' to return" msg in playlist window
-Added menu with key functions ('h')
-Changed minimum size to 80x24 to support more consoles.
-chroot-function. This is about to change to something that (a) doesn't
require root-privs and (b) only affects the file selection dialogs.
-Several new commandline options for setting default playingmode,
wether to have a mixer or not, wether to start playing / quiting
automagically or not, etc.
-Compiles on OpenBSD/alpha, FreeBSD(2.2.8), Linux/alpha too.
-Built-in mixer support! (also, nmixer is distributed as an integrated
package with mp3blaster. This is the very same mixer as used in mp3blaster,
but then as a separate binary!)
-When a new group is added, it is now automatically selected too.
(it used to select the new group but displayed the wrong one)
-The .lst extension is no longer automagically added when writing a playlist.
-It recognizes 48Khz sampled mp3's now! (instead of crashing om them)
However, it doesn't synchronise yet (which is necessary if the mp3 is
slightly corrupted at some point - then again: Get only good quality MP3's!)
Hmm..this actually appears to be a feature, not a bug :) The mpegsoundlib
supports variable bitrate mp3's.
-The command-line syntax is changed becuz I use getopt now to
process arguments. If you have getopt.h, it supports meaningful long
arguments (--blabla instead of -b) too.
-No more reports about sigsegv's unrelated to weird mp3 formats.
-No mp3's discovered that could not be played by mp3blaster. (only some
mp3's with glitches in them that causes mp3blaster to stop playing them)
-Option -l supported now
-Warnings will not wait for a key to be pressed, but stay onscreen for 2
-default playmode changed to playing all songs in given order instead of
-Redesigned structure of this package so it uses autoconf & automake to
the max. (if you code for some UNIX-flavour, use these programs! It's a bit
tough getting used to, but when you get the hang of it, it makes life so much
-Fixed bug that caused screen to be blank after a warning-message about illegal
-There seems to be some nasty bug somewhere causing sigsegv. It seems to be
fixed, but I don't have a clue what has fixed it. If you run into segv's (and
not because you play some weird-format mp3's!!) please mention it to me and
what you did to get it. It could be that these segv's were caused because I
had 10 different distributions of ncurses scattered on my system but I'm just
-Now accepts as first (and only) argument a filename that points to an mp3.
This mp3 will then be played and afterwards the program exits.
Also, -l <filename> can be given as the first 2 arguments, which will make
mp3blaster load a playlist pointed to by filename. (TODO: start playing
-Instead of using function-keys in the selection menu, you can also use
numeric keys (for [x-]terminals that either do not support function-keys
or use them for other purposes)
-The progress bar is now updated so people with B/W terminals can see it as
Large parts of code have been redone and written in C++ instead of plain C.
The interface while playing has changed entirely and should be more user-
The code for keyboard input handling has been changed. Effectively nothing
has been changed concerning the interface though. Soon however this new code
will allow the playlist that's currently being played to be shown on-screen
and it can be scrolled.
This is the very first version I considered worthy distributing. Most major
features I planned have actually be implemented now though there's still a
lot of room for improvement..but since I like to get opinions from other
people who use it I released it. Some changes since the previous version:
-Loading a playlist now is possible, though it can only load it's own generated
playlists. If you already have playlists that are nothing more than a list
of filenames(+paths!) of *.mp3-files (mp2 not yet supported) then you can try
to insert 1 line at the top of the file reading: "GROUPNAME: Default"
(without the double quotes).
-Problems with file-selection fixed. File-selection should be pretty reliable
-cosmetic bug-fixes (mostly text that could be written past a boundary)
Fixed a bug that caused selected items following a deleted item to shift up one
Added pageup/pagedown support for sw_window selection windows.
Some minor bugfixes.
Recursive file selection added.
Some minor bugfixes.
Directories are now alphabetically sorted.
When you select files and change directory afterwards before adding the files
to the current group they won't be lost (as before) but stored and added to
the group-window when you press F1(add files)
'Select all' feature changed into 'invert selection' feature.
'Select all' feature built in for the file selection window.
This is the first 'working' version that can play mp3's in group in any random
order, etc. It's still not ready to be released because of lacking features that
make the program so much better than all those others :)