Version 1.x - Not released yet ================================ General: - Define bool operators 'true' and 'false' if not defined. - Use these values in the code where relevant. Version 1.0.2 - Sat, 30 Aug 2003 ================================ General: - Fixed bug in mixer_common.c that caused the ncurses UI to display the wrong device but with the wrong channel numbers when saving or loading settings. This bug was introduced in 1.0.1 because I didn't test enough when I changed the inverted loops to normal. This happened because the current mixer wasn't reserved when returning from the settings_save() or settings_load() functions, now it is. - Fixed a bug that could have caused segmentation fault when Umix quits. mixer_close() was free():ing something that cannot be freed, this leads back to when I removed plugins and didn't check this. Again, thanks to Andrew B. Collier for helping. Ncurses UI: - Cleaned code up (somewhat) and moved stuff to their own functions. Version 1.0.1-1 - Tue, 26 Aug 2003 ================================== General: - Fixed a stupid double semicolon in mixer.c, should now build with gcc version 2.9.x. Thanks to Andrew B. Collier for reporting this. Nothing else changes, just this and the source tarball version number. Version 1.0.1 - Sat, 23 Aug 2003 ================================ General: - The default mixer device is again '/dev/mixer', I changed it back at some point but don't remember when. Use `./configure --with-mixer-dev=/dev/sound/mixer' if you are using devfs. - Changed the saving settings message. - Moved stuff in umix.c to their own functions. - General code cleanup. - Fixed an off-by-one bug in the oss driver when updating values from the mixer which might have caused passing the wrong parameter to ioctl. - Updated the test() function. Packages: - Fixed Debian package version number in debian/changelog, was 0.9.1, now 1.0.1. - Updated Gentoo ebuild from the portage tree. Version 1.0 - Sat, 08 Feb 2003 ============================== General: - Removed plugin system - Removed GTK+2 and Gnome2 UI's. - This release is basically the thing I originally wanted to write, a simple replacement for Aumix. You can set the volumes from the command line or from a ncurses UI. Removed all unnecessary stuff. I have no interest in this project anymore, so I'm just releasing this out .. maybe someone will need a simple commandline volume mixer for OSS.. - Fixed some bugs - This is the final release, I am no longer working on this thing. Version 0.9.3 - Not released ================================ Gnome2 UI: - First revision - Basically just a Gnome2fication of the GTK+2 UI, with code cleanups. This will probably replace the GTK+2 UI, or I will first complete the Gnome2 UI and then branch of a version that only uses GTK+2. GTK+2 UI: - The about dialog now uses the stock gtk_about_dialog(). Ncurses UI: - Updated the code to use the new chan_toggle_mute() function. General: - Fixed the setting of sysconfdir with `./configure --sysconfdir=path', so that the config file is now installed to the right directory. Thanks to Svend Sorensen for reporting this. - Added helper function chan_toggle_mute() to toggle the mute status of the current channel. - Moved pixmaps to ui/pixmaps so that all UI's can share them. - Umix homepages have now moved to SourceForge.Net! The new URL is http://umix.sf.net/, so check it out. Also set up the CVS tree, so you can download up to date versions of Umix if you have absolutely nothing better to do! Woot! Getting used to CVS, and I like it :) - Updated the autogen.sh script to do all the necessary configuration to enable building from the cleaned up CVS tree. - Commandline options are now passed to the UI's with argc and argv. - General code cleanup all over the place. - Moved command line parsing code to their own functions parse_cmdlineopts and parse_cmdlinevols. - Restructured mixer initializing so that UI's now init the mixers, so that each UI can show their own error messages. - Restructured most of the umix.c code. - Functions mixers_init() and plugins_init() now save the state if mixers or plugins have been already initialized. Version 0.9.2 - Mon, 16 Sep 2002 ================================ GTK+2 UI: - Cleaned up the preferences window for now, will include more options in the future. Documentation: - Changed 'deprecated' to 'shortened' in the man page when speaking about channel names. Must have been braindamage or something .. General: - Added option --with-mixer-dev=path to set the default mixer device path to the configure script. NOTE: the default mixer device w/ Linux is now /dev/sound/mixer instead of /dev/mixer. If you don't use devfs, use `./configure --with-mixer-dev=/dev/mixer'. - Update the gentoo ebuild to depend on the USE flag "gtk2", not "gtk". - Fixed so that compiling with --disable-gtk actually works if you don't have GTK+2 gdk-pixbuf-csource installed. - Tweaked the --help output to fit in 24 lines. - Moved volume sliding code to it's own function slidevol() in umix_common.c. - Renamed all mixer drivers from mixer_whatever.c to driver_whatever.c to clarify the difference between mixer.c and the drivers. - Umix ebuild is now included in the Gentoo portage tree, so replaced the one I made with the one in the portage tree. Version 0.9.1 - Sat, 13 Jul 2002 ================================ GTK+2 UI: - Added global options to the preference dialog. - Added preferences dialog. - Added settings loading and saving options to the menu. - Record sources now update dynamically, and allow more than one channel to be a recording source. - Fixed the slight change of sliders that had been happening after when changing volumes. - Restructured the channel creation code so that invividual channels can be shown and hidden more easily. - The pixmaps are now converted from .png files to .h with gdk-pixbuf-csource. Removed the old support code for showing pixmaps and rewrote to use the new gdk-pixbuf way. - Checked and changed code to not use deprecated GTK+ functions or definitions and defined -DGTK_DISABLE_DEPRECATED etc in Makefile.am. - Restructured the preferences window code in prefs.c - The main menu now uses GTK stock items and added more keyboard shortcuts. - Added left and right speaker pixmaps to the balance adjustment to clarify it`s meaning. - Changed to show volume values beside the sliders instead of in the statusbar. OSS mixer driver: - Internal record stat flags were not updated when oss_is_recsrc() was called, causing flags not to be up to date and chan_is_recsrc() returning wrong values if another process changed the record states. Now record states are updated correctly with the interactive ui's. General: - The GTK+2 GUI is now built by default. - Now includes a Gentoo build script. I`ve used Gentoo since February, and it's great ! - Fixed the forcing of specific compiler -O options during build. - Capitalized all first letters in error messages for consistency. - Added helper function chan_toggle_rec() to toggle recording state of the current channel and made UIs use it. - Moved commandline volume parsing to function parse_cmdlinevols(). - Checked all own defines that might cause confusion to be prefixed with UMIX_. - Defined all general setting loading/saving error strings in ui.h so that the same error strings can be easily used in different UI's. - Renamed savesettings()/loadsettings() to settings_save()/settings_load(). - Changed so that the commandline option `--globals' can be used even if initializing of mixers or plugins fails. - Rewrote the plugin handling code to be more verbose when errors happen. - Renamed addnv() to nv_add() and lookupbyname() to nv_lookupbyname(). - Fixed in nv_lookupbyname() to return the val of the indexed name, that was searched, not the whole nameval structure. Don`t know when I screwed this up, or was it always like this. Version 0.9.0 - Sat, 08 Jun 2002 ================================ - Now includes a GTK+2 user interface! Not yet fully ready, doesn`t support multiple mixers for example, but should be good enough for single mixer use. This is for testing ATM, use `configure --enable-gtk' to build it, and specify the ui as 'gtk' in the configuration file, or use the command line option '-u', eg. `umix -u gtk'. - Rewrote most parts of the volume API, now uses volume/balance values instead of left/right values. Volumes and balances are now handled independently of each other inside the mixer drivers, and are float values instead of integer. Added functions chan_get_bal(), chan_set_bal(), chan_inc_bal() for balance control and chan_get_vb(), chan_set_vb() to get/set both volume and balance values at once. Functions chan_*_bal() and chan_*_vol() now return a single float value, chan_get_vb() return the new volume structure that is consisted of volume and balance ATM. Also added functions lr_to_vb() and vb_to_lr() to convert between left/right and vol/bal values. - Rearranged the commandline option ordering when displaying help to be more logical. - Rewrote most of the plugin loading and handling code. Added commandline option `-n, --listplugins' to display all available plugins. - Renamed configure.ac back to configure.in again .. wtf is the difference between these two, beats me. With configure.ac I get random errors, and much slower processing, with configure.in everything works .. the .ac seems to require the newer autoconf/automake versions too, so I`m sticking with configure.in for now on. - Added function chan_set_mute() to mute or unmute a channel. This removes the need for storing the volumes in interactive UIs. - The ncurses UI doesn`t anymore need to store balances itself, so removed some functions and rewrote parts of it. - Added an about screen to the ncurses UI and specified version numbers for the UI`s. - Added some *bsd checking to mixer_oss.c when trying to include the OSS headers. - Fixed a bound checking bug in the OSS mixer driver when setting channels. - Added functions get_version_str() and init_version() to umix_common.c that returns the formatted version string. Changed curses and gtk UIs to use this. - Commented out all chan_*_elem() function related code, because this is not used ATM. - Rewrote most of configure.ac, should behave better now. The inner workings of autoconf/automake are still black magic to me .. the 1.5 and 2.5 version differences too. Use of acconfig.h now seems to be deprecated with new versions of automake/autoconf, but I`m too lazy ATM to understand why. Seems like a big mess .. - Changed ui_ncurses documentation "Move left/right" to "Increase/Decrease volume / balance". Version 0.8.3 - Thu, 21 Feb 2002 ================================ - Added more error checking to commandline options handling. - Changed the structure of plugin building, every plugin is now in it's own directory, and built independently. - Moved umix_error.[ch] to be independent of Umix, and renamed to error.[ch]. - Added the GPL v2 license banner to all .c and .h files. - Made error reporting make more sense when loading settings. Version 0.8.2 - Fri, 30 Nov 2001 ================================ - Added support for raising and lowering the volume in steps, I am using the term sliding about this. Can be used like normal volume setting, and works with loading/saving settings etc. - Updated man page about sliding volumes. - Moved all temporary static variables that are not global to normal variables. - Added overflow checking to channel parsing. - Removed the word "advanced" from all descriptions. This is just a program for setting the volumes, nothing so advanced about it. - Fixed record source updating when toggling record sources with space in ui_ncurses. The record source was changed but no status updating was done .. doh. - Changed so that when entering values with 'e' in ui_ncurses, nothing will be done if only enter is pressed. - Now includes Slackware build script (tested with Slackware 8.0) - Restored NEWS, includes release notes. Version 0.8.1 - Tue, 13 Nov 2001 ================================ - Documented the special channel name 'all' in the man page and fixed some errors. - Checked all printed strings for missing i18n _("") macro and added if missing. - Changed `umix -blaa` to `program_name -blaa' when suggesting commandline syntax. - Removed unnecessary volume clamping in parsechanopt(), all volumes are clamped in chan_set_vol() anyway. - Converted the TODO file to a more readable format, and changed ChangeLog a bit too. - Moved all integer constant #define's to enums, removed enum names and added more comments.. I use enumerations because they make more sense than defining constant values as macros, and because it is recommended in "The practice of programming" by Kernighan and Pike :-). - Fixed record source updating when entering values with 'e' in ui_ncurses. - Fixed return value checking when loading settings, now reports error messages correctly if loading fails. - Changed so that if loading [global] settings fails, no errors are reported. This would report bogus errors when the default /etc/umixrc doesn't exist. - Loading settings now stops parsing the file if binary/garbage is detected, and reports that binary is detected. Version 0.8.0 - Mon, 05 Nov 2001 ================================ - Major rewrite. Now uses a function based API to access the mixer interfaces. All mixer driver information is kept private behind the API. Almost everything was rewritten somehow, this should allow better support for different mixer drivers like ALSA etc .. at least I hope so :) - New way of parsing command line volumes. Volumes are not parsed as command line options, but as channel names so that they can be dynamic depending on what channels are available. Eg. volume is set with `umix volume 100`, not with `umix -v 100` like in the old versions. The volume format also slightly changed to be more easily parsed, incrementantion now comes after the number eg. `umix pcm 20+ bass 5- treble 5:3+`. - Changed all commandline options to lowercase and changed some letters to make more sense, now that volumes aren't set with commandline options. So check your scripts, -L and -S still work though for loading and saving settings for compatibility reasons. - Moved configure.in to configure.ac .. this may cause some incompatibilities with older autoconf/automake versions, and I am not really sure what the changes are, but I understand this is the proposed way. - Ncurses ui now shows the number of available mixers and the current mixer. - Renamed "channel" and "volume" when loading settings to "mixer" - Fixed the error message to be displayed when entering invalid values in ui_ncurses with 'e' Version 0.7.2 - Sat, 21 Jul 2001 ================================ - Added commandline option -G to print current global settings - Added an option in ui_ncurses to enter volumes manually - Fixed -s and -p to not being swapped when parsing command line options - Renamed get_ui_info() to get_ui_func() - Changed the error reporting a bit to be more verbose when initializing mixer devices fails. - Updated the man page with more information about permissions and plugin directories. - Added the mixer interface driver currently used to be displayed with -q - Sold my AWE32 and bought a SB Live! Player 1024. OSS sucks with this one, ALSA is much better. I now have one ISA slot free to make space for my Hardsid :). This lead to a fix with long channel names when querying to justify right. - Removed redundant header/lib checks from configure.in - Now errorstr() does'nt print strerror(errno) if errno is 0 - Fixed command line option --ui to work Version 0.7.1 - Sat, 23 Jun 2001 ================================ - Renamed all mixerinfo *mixer to mixerinfo *mixinf to clarify meaning - Added a hack to check if the current process updated the mixer in ui_ncurses, will be fixed in future versions - Added third mixer device with 32 channels to mixer_dummy to test limits - Balance settings in ncurses ui are buggy again due to rereading the mixer settings .. this needs again rewriting the volume structures to use volume and balance instead of left and right .. - Changed behaviour of readlevel() to not read left and right specifically, but just read both to the mixer structure directly. - Changed the order of parameters passed to writelevel() - Fixed comparing of device names in loadsettings(), and changed the format so that instead of mixer names, device paths are now used. - Removed ui_gtk from the distribution .. it really is not ready. - Changed the way stuff is scaled in ncurses ui, much better now with wide terminals etc. - Renamed drv* plugins to mixer*, struct mixerdev to mixerfunc and get_driver_info() to get_mixer_func() - Changed record flags to be bold in ncurses ui. Version 0.7.0 - Fri, 08 Jun 2001 ================================ - Fixed command line volume options overflowing. - Added a section about the config file to the man page. - Changed error reporting to be more verbose. - RPM and Debian package specifications are now included in the source dist. - If $HOME/.umixrc exists, it is now used as the config file automatically. - Added option -g, --plugindir to specify the directory where plugins are loaded from. Added this option to config file. - Combined wrapper.c and error.c to umix_error.c. Changed again some function names and removed unnecessary errorquit_e and errormsg_e. - Fixed bug in loading mixer volumes with similar channel names (line,line1,etc). Thanks to John Waggenspack for reporting this. - Moved all common mixer functions from umix_common.c to mixer.c - Updated documentation. - Rewrote config file format. Now global options and multiple mixer settings can be saved. - Added function to mixer interface to check if the mixer has been updated. Now interactive UIs automatically refresh if the mixer has been changed. - If options -S or -L are given, no interactive UIs are loaded automatically. - When commandline options -D, -d and -u are specified, -I is automatically set. If -q is given, -I has no effect and no UI's are started. - All optional drivers and UI's are now dynamically loaded at runtime, like plugins. Changed most parts of the program again. - New GTK+ GUI. It needs more work though, and you need to do some hacking to get it work. - Removed internationalization support for the time .. it just messes things up and nobody else really uses Umix anyway or has the need for other languages. - Cleaned the code up, changed #define's to enumerations, changed all mixed upper and lowercase function names and structures to lowercase. - Fixed toggling of record sources - Converted the old ChangeLog format to this. - Removed NEWS. Version 0.6.0 - Mon, 19 Mar 2001 ================================ - Rewrote mixer structures etc everything. Now support for multiple mixer devices in one session is possible, no stupid global mixer structures. Ui_ncurses now supports switching between mixer devices when running, and even controlling mixers with different drivers (eg. OSS&ALSA) in one session should be possible. - Changed almost every part of the program. - Added multiple device support for the ncurses ui - Changed the structure of struct mixerdrv to include the name of the device (eg. Sound Blaster). - Included mixer.h in common.h, added more comments, moved things around. - Changed all debug messages to use err_msg(), and added errnoflag to err_msg() and err_quit(), thus removed err_msg_e() and err_quit_e(). - Changed configure option --disable-curses to --disable-ncurses. - Removed unnecessary const when passing parameters to functions - Added c_readlevel and c_readall to common.c - Fixed compilation with ncurses disabled - Added some more comments to the code. - Renamed the global `drv` mixer structure to `mixer`. - Moved mixerdrv.[ch] to mixer.[ch] Version 0.5 - Mon, 19 Feb 2001 ------------------------------ - Improved error handling, removed colors from ui_ncurses because they suck. - The Linux/OSS text based portion of Umix is now pretty much ready .. - Added wrappers for common functions and better error handling. - Changed the way input is handled in ui_ncurses, curs_drawborder now uses hline(). Added optional color support in ui_ncurses. - Moved #defines from ui_ncurses.h to ui_ncurses.c Version 0.4 - Sun, 28 Jan 2001 ================================ - Version 0.4 released. Note that the included fi.po is only for testing, the translation is bad. Need new translations - i18n support added, changed or removed lots of stuff. No translations yet, I have a fi.po for testing, but it is not good enough for distribution. - New ChangeLog format, date -R and the email address of the author. This allows more detailed ChangeLog entries and separated by contributor. When a new version is ready, it is just announced Version 0.3 - Tue Jan 23 2001 ================================ - Lots of misc. fixes - Fixed to use getopt if getopt_long is not available - Changed the ui_ncurses [] behaviour to change volume max / 5 instead of volume max - Fixed -D to actually work - First public release Version 0.2 - Tue Jan 9 2001 ================================ - Fixed ui_ncurses so that changing volumes between muting and unmuting behaves better - Started the ALSA driver - Changed the way the default driver is determined - Fixed documentation to make more sense - Added configure option --enable-dummy to enable dummy driver independently without debugging information - Added option --driver to choose the mixer driver from the command line - Better way to scale in ui_ncurses - Fixed ui_ncurses settings loading to reinit VOL and BAL tables - Added option to save and load settings to and from `-` - Rewrote parts of the top configure.in file - Fixed ui_ncurses record source toggling to use the real channel Version 0.1 - Wed Dec 20 2000 ================================ - Initial revision 0.1 done, works with Linux/OSS