Theme changes, fix for unicode conversion errors, misc
[rox-musicbox.git] / Help / Changes
blob463704f22d96bbd13f28c48169912a03b6e1db78
1 MusicBox - an MP3/OGG Player for the ROX Desktop
2 by Ken Hayber
4 027
5 30-July-2006
6 - Allow GTK theme to set the toolbar icons (edit musicbox.py if you want to use my icons)
8 026
9 4-Dec-2005
10 - Add native(?) alsa support via pyalsaaudio module
11 - Realize that pyalsaaudio doesn't play as well as libao and primarily use it for volume
12 control if pyao is installed :( (at least we don't depend on oss anymore)
13 - Fix for endian issues with ossaudiodevice, pyalsaaudio and linuxaudiodevice
14 - Refactor all decoders and output drivers in preparation for AAC support.
15 - Fix for not specifying device parameter to Player init method.
17 025
18 16-Oct-2005
19 - Fix (?) for string translation (Chinese, etc) for ID3 tags that were not latin1.
20 - Included Chinese translations properly (missing .gmo files)
22 024
23 24-Sep-2005
24 - Fixes for changed mime-types in shared-mime-info version 0.16
25 - Fixes for flac support for version 1.1.2
26 - Misc fixes for ppc/ppc64
27 - New Chinese translation
29 023
30 23-Feb-2005
31 - Fix bug when adding songs via DnD or command line, does not play.  Index is set wrong.  (reported by Cyrille Mars)
33 19-Feb-2005
34 022
35 - Add Album Cover Art display (supports .DirIcon and
36                 [.folder|folder|Folder|.album|album|Album|.cover|cover|Cover].[png|jpg]
37 - Fixed sorting in playlist
38 - Fixed the save box
39 - Changed from old Choices system to new basedir system (using hayber.us domain)
41 14-Jan-2005
42 021
43 - Add Wav and Flac support (Flac support is not complete - no tag info is supported,
44   seeking during playback does not work)
45 - Reworked player code for modularity to support the above.
46 - Filters are back!  And they _really_ work this time.
47 - Requires PyGTK/GTK 2.4 now :(
48 - MenuKey patch from Rds for those with evil(Windows) keyboards.
50 ** Note: flac support depends on the pyflac module which you probably don't have.  I included
51 a copy in the 'flac' directory, but you must build it first.  Just type make in that
52 folder.  If you have this (e.g. Debian users?) just delete or rename this folder. **
54 26-Oct-2004
55 020
56 - Add support for editing options without starting player
57         (in case things are really hosed)
58 - Add popup message if player cannot find file when asked to play.
59 - When loading songs and shuffle is on use next() instead of play() so first
60         song is random.
61 - Added Mini toolbar buttons option.
62 - Use python optparse module in AppRun to make remote control easier.
64         usage: AppRun [options]
65         options:
66           -h, --help     show this help message and exit
67           --options      display options dialog without running application
68           -l, --load     replace the current playlist with listed songs and start
69                                          playing
70           -e, --enqueue  add listed songs to the playlist, do not start playing
71           -p, --play     start playing the current song
72           --pause        pause playing
73           --stop         stop playing
74           --next         skip to the next song and start playing.
75           --prev         play the previous song
78 17-Oct-2004
79 019
80 - Tried to stop using threads since many people seem to have problems there,
81 but only managed to reduce thread use to one (the main player thread).  Without
82 threads playback was too jumpy.
83 - Add suggested/requested UI changes:
84         * Configurable toolbar like the Filer has (any buttons can be hidden)
85         * Show/Hide for toolbar, volume, seek-bar (for minimalists)
86         * Toggle for word wrap of text area (just in case you don't like word wrap)
87 - Tried to fix seek bar (clicking in 'page' area always jumps backwards!) but it
88 seems to be a Gtk issue (at least as of 2.4.9)
89 - All new client server mechanism using xsoap.py that I wrote a while back.  This
90 is based on ROX-Filer's client/server mechanism, but without the XML part.
91 - Extras folder with tiny little AppDirs to remote control MusicBox
92 (thanks to Nils-Erik Svangård for the idea and original effort)
93 - Control for elapsed vs remaining time.
95 22-May-2004
96 018
97 - More user feedback changes;
98   * Text display (main window) font settings (Title and others)
99   * Text and main display background color settings
100   * Proper wordwrap and resizing of text in main display.
101   * Fixed repeat bug (always did repeat even if setting was off)
102   * Fixed save playlist to xml bug introduced in 016
103 - Time display now shows elapsed/total instead of just remaining.
105 13-May-2004
107 - Due to user feedback, changed how Drag and Drop works.
108   * Main Window defaults to replacing the current playlist.
109   * Playlist Window defaults to appending to the current playlist.
110   * Ctrl pressed when dropping on either Window always appends.
111   * Shift pressed when dropping on either Window always replaces.
112   * When replacing always play after the load completes.
113   * At startup with no args or rpc input, don't play.  Otherwise always play.
114 - Replaced rpc call load_args() with load_songs() and add_songs().  The first
115 one always replaces, the second one always appends.
117 13-May-2004
119 - Changed menu to use new Action menu system of ROX-Lib2
120 - Fixed alignment of text in main window
121 - Volume and Progress bars have finer stepping now
122 - Playback thread is created at startup and reused.  Previoulsy each song started a new
123 thread.  This caused race conditions and occasional lockups.
124 - Playback now uses a queue to send songs from the main window to the Player.  Avoids
125 race conditions and lockups.
126 - Playlist now uses a GtkListModel for its storage.  This avoids needing a separate
127 structure for the playlist and PlaylistUI.  It also means that the Main Window and
128 PlaylistUI remain syncronized.  (e.g. Sorting now works properly!)
129 - Show song title and remaining time in Iconified mode.
130 - Prevent multiple Playlist windows.
131 - Make Back/Prev button 'Really' work like a browser.  I mean it this time!
132 - Went back to the old behavior for importing audio support libs.  Sometimes we would
133 fail to import something we needed.
134 - Make sure we send 'pause' state to main window.
135 - Shuffle cache was never using the value from the Options dialog.  Fixed.
136 - Initial Playlist window size and column widths fixed to show all info.  Still resizeable.
137 - Removed Filters (until I can use Gtk 2.4's ListModel.filter_new() feature.  Needs PyGtk 2.4)
138 - Added DnD to the Playlist! (using XMLrpc to send the info and commands to the main window)
140 And last, but certainly not least...(OK, maybe it is least.)
141 - A New (SVG) Icon!!!! (I made it myself.  I are a Artist.)
143 09-Apr-2004
145 - Oops! Last release broke OGG playback.  For some reason using a buffer larger than 512 bytes
146 causes lots of ugly distortion.  I forced it to 256 and it seems OK on my system.
148 09-Apr-2004
150 MusicBox changes:
151 - Changed version numbering.  I like the simple serial number better than the dot notation.
152 - Removed the gtkexceptionhook.py thing in favor of a simple rox.report_exception() call.
153 - Moved the genre list into a separate file to make it easier to share with other apps.
154 - Updated findrox.py, again :)
155 - Applied two patches from Eric Gillespie (don't use ':' as separator in DnD paths
156 and allow relative paths in m3u files)
157 - Set window borders to 0 to look better in WMs with no window borders.
158 - When iconized show title and remaining time in title (icon caption)
159 - Word wrap song title, artist, album in display window
160 - Refactor player.py a bit and improve error handling.
161 - Make ossaudiodev the default playback device (instead of ao)
162 - Update volume control widget if someone else changes PCM volume.
163 - DnD of directories and playlists does not change your default Library.
164 Playlist changes:
165 - Add initial track sorting code (slow!)
166 - The Prev button now works like a browser Back button.
167 - Fix long-standing Unicode vs Ansi support in id3 tags.
168 - Add support for Extended Attributes as song tags
169 (user.Title, user.Artist, user.Album, user.Genre, user.Track)
170 Playlist UI changes:
171 - Remove Type column
172 - Sort by Track (really sorts by Album, then by Track which is what you would expect)
174 05-Jan-2004
175 0.0.13
176 - Fixed a couple of bugs with crashing on empty playlists.
177 - Disable controls when no songs in playlist.
178 - Added InfoWin.
179 - New French translation from Sébastien Person
181 20-Dec-2003
182 0.0.12
183 - PlaylistUI is nearing completion.  It is useable now and stays synced with the main
184         window.
185 - Finally worked out how I wanted the library vs on-demand playing to work.  Now you can
186         easily just play a few songs, or you can save a large list for fast loading (in xml)
187 - Added xmlrpc to prevent multiple instances and pass commands from the outside.  So now
188         if you are aready playing and you launch a new .mp3 file, it just replaces the list
189         and starts playing.  Could add XMMS-style remote control with this too.
190 - Added savebox to the save menu so you can save full or filtered playlists to xml for
191         fast loading.
192 - Added pyid3lib support (optional) for ID3v2 tag support.  Needs separate installation.
193         see http://pyid3lib.sourceforge.net and http://id3lib.sourceforge.net
194         (Note: due to these changes, loading a big list of songs takes considerably longer
195         it seems.  However, now you can at least see the song count as it is loading, you
196         can safely start playing while the list is still loading, and you can save the list
197         with tag info to xml for fast loading later.  Did I mention the fast loading part?)
198 - New findrox.py for 0install support.
201 09-Dec-2003
202 0.0.11
203 - Preview Release of next version.  Looking for feedback.
204 - UI redesign (main window is like Gnome CD player, playlist window is a popup)
205 - Code refactoring.  Trying for a MVC design (UI->Playlist->Player->libraries(ID3/MAD/OGG)
206 - Playlist main store is an array now instead of a dictionary.  The dict is what caused
207         the default 'sort order' to be other than your directory layout.
208 - Take advantage of Python 2.3 (currently only ossaudiodev support to enable the volume control)
209 - Fix: last version slowed down the playlist loading due to enabling the Artist column
210         for sorting before the list was filled.  Man does that slow things down!
211 - New feature: Volume control if you are using Python 2.3 and OSS (or alsa oss emulation)
212 - New feature: The current playlist can be saved with all the tag info in an XML file
213         called Library.xml in your Choices/MusicBox dir.  If this file exists then it will
214         be loaded by default when starting.  This greatly speeds up load times for large
215         collections.  I'm toying with the idea of making this file iTunes compatible. (I have
216         an iBook and and iPod so there is incentive there for me)
218         Note: the playlist in this version does very little now, but you can save the library
219         from there using the right-click menu.  The main window is mostly complete.
222 30-Nov-2003
223 0.0.10
224 - Bugfixes for python 2.3 support and misc. (thanks Ulrich)
225 - Added Track number and Comment tag display to the browser
226 - Added <track> regex tag for guess() function
228 10-Sept-2003
229 0.0.9
230 - Split out the playlist code to allow easier addition of stuff like filtering.
231 - Rudimentary filtering: single Artist, Album or Genre only for now.
232 - Added regex pattern for splitting the path/filename into artist/album/title.  This
233         is used on initial load and when there is no tag information.  You can edit this
234         pattern to match your preference for storing and naming your music.
235 - Added Spanish translation (thanks Nicolas)
236 - Refactored player.py to allow song-specific parameters to be passed into the ouput
237         driver (fixed problems with mp3 sampled at 22050 instead of the more typical 44100)
238 - Automatically try linuxaudiodevice if ao fails to import. (not tested)
239 - Allow menu from right-click on song list (preparing for selection-specific menu)
240 - Fixed shuffle cache code (int_value not value)
242 1-Sept-2003
243 0.0.8
245 - Fixes for hangs that several people were reporting (need pygtk 1.99.17 or higher)
246 - Fix to prevent crash when using Seek bar with no song playing.
247 - Fixes for missing ogg, mad, ao handling.  Requires at least one of ogg/mad and requires
248         ao to run.
249 - Added Shuffle cache to prevent replaying of songs too frequently in shuffle mode.
250 - Re-layout Options dialog.
251 - Load initial playlist based on directory structure (Artist/Album/Song), then load
252         tag information in the background.  Should speed up initial loading for large
253         playlists.  (Works well for me with ~400 songs via 802.11b wireless connection)
256 29-Aug-2003
257 0.0.7 (Version 0.0.6 wasn't very good)
259 - Rewrite player code to use pymad, pyogg, pyao directly.  No more MPG123/321.  This
260         gives better control over the player and it now works correctly when using
261         esd (you can hear your sound effects and notifications; e.g. 'you've got mail!')
262 - OGG!
263 - Playlist support (.pls and .m3u)
264 - Drag and Drop support - you can drag and drop folders, mp3, ogg, pls or m3u files
265         onto MusicBox.  If you hold the Shift key these files will be added to the
266         current list, otherwise the list will be replaced.  The result will be saved
267         as the default.
268 - Moved remaining time and current song to the Title bar so that this information shows
269         while iconized.
270 - Italian and Portugese (Brazil) translations (thanks to Yuri and Leandro) - but they
271         need a couple of small updates.
272 - Decided that volume control was not going to happen, so I changed it to a Seek bar
273         so that you can skip to any point in the song.  It also keeps moving while the
274         song plays.
277 23-Aug-2003
278 0.0.5
279 - Added support for multiple Music folders using ':' as separator (e.g. like PATH).
280 - Added support for drag and drop of folders into main window.  Dropped folder list
281         replaces current library and is saved as the default.
282 - Loading library is now in a thread so window comes up faster and you can start playing
283         before library is completely loaded (for those with large libraries).
284 - MAY have fixed the bug that some are seeing with mpg321/123 locking up when Stop or
285         other buttons are pressed (I fixed a gtk threads issue, but since I have not
286         seen the reported problem it may not be the same problem)
287 - Display song and remaining time on title bar so that minimized player still shows status.
288         (This needs some work and should be optional I think)
289 - I received an Italian translation (thanks yuri), but it is not working.  Someone tell
290         me what I'm doing wrong, please.
292 I've noticed that only ogg123 allows other sounds to be played when using esd.  This
293 kinda sucks.  I'm looking at doing all the playing in python (pyogg, pyao, pymad) to
294 see if that works any better.
297 19-Aug-2003
298 0.0.4
299 - Added error handling for missing library path and missing mp3 player.
300 - Default mp3 player to none and show options dialog at first run.
301 - Removed 'Time' column for now because a) it was broken and b) when I fixed it it took
302         WAY too long to load even my measly 300 song library.
303 - Fixed Shuffle to use time.time() as the Random() seed to that it is actually
304         somewhat Random.
305 - Don't load mp3 player until needed (first step to supporting ogg)
307 0.0.3
308 - Edited the Options.xml to have a big tooltip for the mp3 player explaining some things.
309 - Edited the README a bit (put MY email address in there instead of Thomas') giving some
310         basic instructions.
311 - Changed mp3 player launching from os.popen2 to popen2.Popen3 so I can get
312         the pid and kill it later if necessary (for me it is needed for mpg123, otherwise
313         the player never dies and runs at 100%)
314 - Initial value of mp3 player is now ''.  MusicBox now detects that at startup and
315         shows the Options dialog so you can specify your player.  (TODO: Need to detect
316         failed player launch and inform the user to try again)
318 18-Aug-2003
319 -----------
320 0.0.2
321 - Fixed Prev button and rewrote Next button handling to match.
322 - Implemented Repeat and Shuffle and their options.
323 - Got ToggleButtons working thanks to this tutorial -
324         http://www.moeraki.com/pygtktutorial/index.html
327 17-Aug-2003
328 -----------
329 0.0.1
330 First release!