-------------------------------------------------------------------------------
madman administrates digital music archives neatly
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
I. Welcome to madman.
-------------------------------------------------------------------------------

madman is a music manager application that allows you to easily keep your
music database organized and tidy, and it helps you listen to better music,
be happier, brighten your teeth and quickly restore world peace.

madman's killer features include
- Remote control of the XMMS player.
- Full mp3 and ogg tag support, both reading and writing.
  "Slow double click" retagging for fast and convenient retagging.
  Tags are cached between runs in an XML database file.

- Fully drag and drop enabled: Drop a song onto a set,
  reorder your sets by drag and drop, reorder songs within
  a set - all it takes is one mouse drag.
- Powerful expression syntax to quickly locate the music you're looking
  for.

  Examples:
    - pearl|creed|metallica to find something for your 
      anger.
    - jetplane cher to find Cher's version of "Leaving
      on a jetplane."
    - "dog eat" to find "Dog eat dog", but not
      "Sound of dogs eating a human".

- "Sets" which are somewhat like playlists, except they can
  be automatically keep track of songs matched by expressions.

You can get in contact with the author by writing to <inducer@users.sf.net>.
madman's homepage is at http://madman.sf.net.

See the web page for an FAQ.

-------------------------------------------------------------------------------
II. Compiling
-------------------------------------------------------------------------------

To compile madman, you need

- XMMS. [http://www.xmms.org]
  Version 1.2.6 and above.
- Qt. [http://www.trolltech.com]
  Version 3.x tested, others might work, too. (patches welcome)
- id3lib [http://id3lib.sf.net]
  Version 3.8.x required for proper tagging.
- Ogg Vorbis libraries [http://www.xiph.org]
  Any recent version should be fine.

To build madman, just edit the Makefile to taste and type "make".
madman is developed on Debian.  Compilation has been tested with 
gcc 3.3.

To get a debuggable build, do

./configure --enable-debug=full

-------------------------------------------------------------------------------
III. Change log
-------------------------------------------------------------------------------

far future --------------------------------------------------------------------
+ Support audioscrobbler.sourceforge.net.
+ Maybe rethink the UI.
+ What do MoodLogic (moodlogic.com), iTunes (apple.com/itunes),
  MusicMatch (musicmatch.com) have that we don't?
+ ~is-in-set(name)
+ Criteria wizard.
+ Add more flexible tagging from file name.
+ Add on-disk reorganization, i.e. renaming according to tags.
+ Allow players to have their own customization UI,
  thus allow having a customizable player executable.
+ Add some sort of history display and evaluation.
+ Session management.
* Don't put songs in playlist that are already in there
  (confusion-proof UI?) (Johan Forsberg)
+ One-time commit feature for tag writes. (Johan Forsberg)

future ------------------------------------------------------------------------
+ Support FLAC.
+ Maybe add little builtin player.
+ Splash screen.
+ Support musicbrainz.
+ Can we rip off Amazon's "other customers also bought" recommendations?
  MP3 Piranha, Amazon Web Services ...
  Should be possible to at least display album cover.
+ Maybe use MusicLink.com?
+ Add Plink. (playlist link)
  - Plink over Jabber.
  - Plink broadcast UDP discovery.
  - Plink clients for Winamp2 (3?), XMMS (write them using the tPlayer class?)
+ Integrate translations into build system.
+ BPM extraction.
+ Search for and play like songs through the context menu.
* Export M3U.
* Automatically add .mad extension to filename entered in
  SaveAs dialog. (Jon Burgess) [is this really a good idea?]
+ Hierarchical sorting. (album, track number) (good UI?)
+ Added man page.
* Try to identify current song through title if identifying through
  file name doesn't work.

0.92 --------------------------------------------------------------------------
MAJOR ADDITIONS:
+ Builtin web server for remote control, streaming/sharing, scripting.
  Made option for webserver to run standalone (no X). [done]
+ Added python script for remote control. [done]
+ Better auto DJ. (now uses Mersenne Twister random number generator,
  forbids replays,  allows configuration) [done]
+ Bookmark button. [done]
+ Added Player controls. [done]

MINOR IMPROVEMENTS:
+ Right click menu for Artist/Album list.
  (Jon Burgess, David O'Shaugnessy) [done]
+ Allow command line specification of the file that is 
  to be opened. [done]
* Add --help command line option. [done]
* Add criteria examples to help. [done]
* Make backups even if file does not have .mad extension.
  (Jon Burgess) [not reproducible, assumed fixed by previous changes]
+ Add file name and path to search index. (Johan Forsberg) [done]
+ Keep modification time stamps of songs, reread changed on rescan. [done]
* Try and deal with oddball track numbers (like "04/18"). [done]
* Added criterion ~unrated, to avoid depending on ~rating(=-1). [done]
+ Make a toolbar button to highlight currently playing song.
  (Fix F12 non-obviousness.) [done]
* Changed tPlayer architecture from polling to signalling for song and
  state changes. (hide polling mechanism within tXmmsPlayer) [done]
* Save whether toolbars are shown to config. [done]
+ Added rewrite tag function. [done]
* Modified number after "By Artist" to state number of songs
  (UI non-obviousness reported by Edgar Seemann) [done]
* Added button icons, thus friendlifying the whole UI a bit. [done]
* Cleaned up notification-on-modification in tSong. [done]

BUGS/ANNOYANCES FIXED:
* Fixed bug about column ordering not being preserved in some
  cases. [done]
* Workaround for id3lib's borked unicode tagging facility [done]
  UNICODE mp3 tagging is BROKEN by this.
* Weed out invalid characters in tag data. [done]
* Don't fail with only a console message if the web server couldn't be
  started. [done]
* Update hash table when adding/removing songs to/from collection.
  (reported by Martin Sauter) [done]
* Fixed Unicode ID3 tag reading/writing. [done]
* Madman's database is now really stored in UTF8. [done]
+ Will ask to save before opening new database. [done]
* Fixed a bug where hitting one of the numbers (for rating) wouldn't
  properly update the playlist window. [seems to have disappeared]
* Fixed the fact that there are no result when searching for uppercase
  strings. [done]
* Fixed several file descriptor leaks reported by 
  Jon Burgess <mplayer@jburgess.uklinux.net>. [done]
* Fixed segfault that occurred when reading Ogg tag from non-existent song.
  Reported by Jon Burgess <mplayer@jburgess.uklinux.net>. [done]
* Added proper exception handling in many spots that were lacking it.
  [done]

0.91.1 ------------------------------------------------------------------------
+ Fixed some compilation problem on SuSE gcc 3.2 prerelease compilers.

0.91 --------------------------------------------------------------------------
+ Added much marketing hype to the website. [done]

MAJOR ADDITIONS:
+ Added fuzzy match methods. [done]
+ Added plugin scripts. [done]
  Sample plugin scripts provided: Burn to CD, Move to Trash.
+ Made separate fields for Composer/Performer. [done]
+ Added play history collection.
  History records if a song is allowed to play to the end,
  to allow for statistical evaluation. Can be disabled. [done]
+ Rating feature, ~rating(...) criterion. [done]
+ Searches now work asynchronously, making them
  (seem) much faster. [done]
+ Added separate preferences dialog. [done]
+ More categories in overview tree (albums) [done]
+ In-Archive-Since, Last-Played and Play-Count are recorded for each song.
  Statistics are resettable per-song. [done]
+ Build process was autotoolsified. [done]
+ Make backups of databases. [done]
+ Added mass tagging. [done]
* Improved startup performance.
  - Used expat instead of Qt for XML parsing. [done]
  - Centralize reading serialization code in tDatabase. [done]
  - Made overview tree generate itself on the fly when clicked. [done]
+ Can import M3U and player playlists. [done]
+ Added a real help browser. [done]

MINOR IMPROVEMENTS:
+ Automatically show relevant page of preferences dialog if 
  creating a new file. Greet new users. [done]
* Display <none> instead of the empty string in the overview. [done]
+ Remember main window geometry (may be turned off in preferences). [done]
+ Added possibility to add 20 random songs from command line. [done]
* Moved duration column further to the front. [done]
* Better keyboard bindings. [done]
+ Added "Highlight current song". [done]
+ Made tag display dynamic. [done]
- Removed "search forward" feature because the improved "Restrict" 
  works so much better. Avoids user confusion. [done]
+ Order of columns is preserved between runs. [done]
* Achieved display speedup through not letting Qt do the 
  sorting. [done]
+ Added ability to customize which columns are shown. [done]
+ Added a file size column. [done]
+ Show a summary on the status bar whenever the selection changes. [done]
+ Show counts in overview. [done]

BUGS/ANNOYANCES FIXED:
* Removed set control buttons -> more screen real estate for actual songs. [done]
* Fixed bug in removing multiple songs from sets. [done]
- Removed the empty "View" menu. [done]
* Fixed auto_ptr+exception bug in expression compilation, 
  fixed or precedence. [done]
* Deferred retags until next main loop to avoid crashes when retag means
  removal from current set. [done]
* Fix artist sorting in overview.
* Flicker and slowness upon deleting multiple files was fixed. [done]
* Fixed crashes:
  - Make new file, add set. [done]
  - Open another file, drag song to set. [done]
  - updateSongSetTree was trying to use pointers that had
    become invalid while [done]
* Made fileOpen() exception-safe. [done]
* Fixed expression parsing so parentheses would really work. [done]
* Fixed error reporting for duration extraction from MP3s. [done]

0.90.1 - Feb 27, 2003 ---------------------------------------------------------
- Fixed Compilation with Qt3.0.

0.90 - Feb 26, 2003 -----------------------------------------------------------
- Initial relase
