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