maplay 1.2+ for Win32

What's New?

07/06/97: Version 1.90

- MPEG-2 LSF streams can now be decoded!

- Added menu options to save files, delete files, and go to the 
  maplay 1.2+ web site. Also added menu items for recent files and
  lists.

- Added the ability to decode an MPEG stream to a PCM Wave file.

- Added ability to play other types of multimedia files supported by 
  ActiveMovie, including Sun AU, Apple AIFF, MPEG-1 and Quicktime 
  movies (!)). ActiveMovie must be installed for this to work.

- Redid the options dialog box to be a property sheet. Also many more
  options were added: 

  * Playing immediately after opening a file
  * Exiting after playing a file from the command line
  * Minimizing into the systray
  * Changing the priority of the MPEG decoding thread
  * Using a custom scalefactor instead of the default

  These options are now stored in the registry, so they will remain
  constant between sessions if you save them.		

- Added a context menu that is displayed when the right mouse button
  is clicked. The context menu that is displayed if you right click
  on the systray icon doesn't go away correctly yet.

- Added the .M3U extension to list of acceptable playlist extensions. 
  This will allow maplay to be used in place of Winplay3 when running 
  playlist managers.

- Changed the filename display when playing lists. The word "Track" 
  has been eliminated, allowing more the the filename to be shown.
  This is due to a suggestion from Nai-Chi Lee.

- Fixed the instance behavior. If "Allow multiple instances" is 
  off, running another instance of mp2win will simply bring up the
  first instance. If you try to play a file from the command-line
  (like opening a MP3 file from Explorer), the file will be sent
  to the first instance of mp2win.

- Fixed decoding of Layer I streams.

- Fixed a bug that caused the trackbar and playing to not be updated
  if a file was repeated.

- Fixed a bug that caused the program to crash after playing a list.

04/20/97 : Version 1.81

- Ported a Win32 console version, which must be downloaded separately
  from the normal GUI version and the source. The console version does
  not run on Win 3.1 systems with Win32s yet, and does not include 
  playlist features or the ability to play WAV or MIDI files.

- Added drag-and-drop capability. Just drag any file that maplay 
  recognizes from Explorer, drop in in maplay, and it will begin 
  playing automatically.

- For slower computers, decoding a single channel of a stereo layer 
  III stream has now been implemented. Also, a downmixing option has 
  been added. This will reduce the CPU time by downmixing the 
  channels before fully decoding them. Right now, downmixing works 
  for layer III only. Finally, a Cancel button has been added to
  the dialog box that lets you select which channels you want. 
  (The pre-decode bar has been disabled, because the feature _still_
  has not been implemented.)

- Fixed a bug that caused "beeps" to be played when decoding some 
  layer III streams.

- Performance improvements of almost 25% due to optimized
  SynthesisFilter routines by Conrad Song, a fast 9 point
  IDCT by Mikko Tommila, and some of my own optimizations.

- Better syncing allows for many corrupt streams to be decoded, and 
  should cause less problems with streams with ancillary data.

- An error message will be displayed if and MPEG-2 stream is opened,
  since these streams are not supported yet.

- Fixed the window so that it is no longer resizable.

- Multithreading is now perfect, as far as I know, so no more 
  waiting for the decoder thread to be killed.

- WAV and MIDI files with spaces in their filenames can now be played. 
  Thanks to Alexander Grigoriev for his suggestion on how to fix the
  problem.

- New icon used as the application icon (replaces my beautiful, 
  hand-drawn "m"), created by David Low. Also I fixed my file
  folder icon and the weird colors of the pause button.

- Eliminated the need for the external file "huffdec". Timo Jantunen
  wrote a program to write out the huffman tables, which are now
  included in the code. If you still have the file "huffdec" in 
  your windows directory, you can delete it.	

- Empty playlists no longer crash maplay, and playlists are checked
  more carefully.

- Code is much nicer and more portable now. Support for MPEG-2 LSF is 
  not finished yet, so an error message will be displayed when opening
  these files.

02/01/97 : Version 1.80

- Layer III files can now be decoded! However, more optimization needs          
  to be done, as decoding a stereo stream takes 75% of the CPU time on 
  a Pentium-100. Also I have not implemented mono playback of a stereo     
  stream or the Low Frequency Extensions of MPEG-2.

- Threading cleanups are much better, but still have problems. This     
  causes memory leaks.

11/29/96 : Version 1.72 (not officially released)

- Added syncword detection. If the stream does not sync, maplay
  skips a byte and attempts to sync again. This is an Intel specific 
  change due to the stupid byte order. The change makes it possible 
  to playback Layer II files produced by DALET.

10/10/96 : Version 1.71

- Installation is now through an InstallShield application. If you 
  want the source files, choose the custom installation. Otherwise, 
  just choose the typical installation. Also, the MP2 extension is       
  automatically associated to maplay, so you don't have to do this   
  yourself.

- Discovered that memory leaks as waveform audio is being played in
  Windows 95. This is not a bug in maplay, but in Windows 95 itself.
  The result is that the allocated memory slowly rises as MPEG and 
  WAV files are being played.

- Received Borland C++ 5.01 courtesy of Borland International through
  Mike Weisert. The program now reports that it is a 32-bit 4.0     
  application instead of 32-bit 3.1 application. The MPEG..Options     
  dialog box looks much better with 4.0's color scheme. Also there is     
  real Pentium optimization.

- Fixed the MPEG..Options dialog box which did not allow the user to
  decode only one channel of stereo streams. This option works as 
  before but displays a warning if a stream is being decoded in the 
  background.

- Added the capability to take playlists from the command line. The
  file extension LST is now interpreted as a playlist also. (Before
  playlists had to have the extension TXT.) Now you can have your 
  lists play by double-clicking the LST file in Explorer. 
  (InstallShield will automatically associate LST files for you.) 
  Also the batch file "makelist.bat" creates a file called 
  "playlist.lst" instead of "playlist.txt".

- Made the application window larger to accommodate larger fonts.

- Fixed the time per frame for Layer I files. The playback time 
  should now be accurate for all layers.

- Memory for the playlists and mpeg objects is now freed correctly. 
  Also the current track is now reset when loading new playlists.

08/01/96 : Version 1.70

- Interface changes:

  * Replaced the scrollbar with a trackbar.
  * Added status bar for current action, current file in playlist, 
    current playtime, and if Repeat is enabled (an "R" will appear in 
    the rightmost pane).
  * Removed the repeat button for playlists, and placed the previous 
    track and next track buttons next to the rewind and fast foward 
    buttons, respectively. The rewind and fast forward look like this:
    << and >>. The previous track and next track buttons look like 
    this: |< and >|.
  * Added rewind and fast forward to the Audio menu.
  * The MPEG...Decoding Options dialog box has been changed. The 
    background is now light gray, but the text is still black on white. 
    Right now the dialog box looks quite ugly, but once I figure out 
    how to get black on light gray text, it will look much better.
  * Colored in the play and stop buttons. Added 3D look to disabled 
    buttons.

- Fixed MIDI playback so that MIDI files can also be seeked.

- Widened the application window so that Large Fonts at 1024x768 don't 
  make the menu bar wrap around to the next line.

- Included a batch file to make playlists from the command line. Type
  "makelist /?" for instructions.

- Layer III code is already in maplay, but it needs to be debugged. 
  Attempting to decode Layer III streams will result in memory access 
  violations. I will not include the buggy code for the Layer III 
  stuff in the source code version.


07/09/96 (version 1.61)

- Changed the default extension of MPEG audio files from "MP2" to 
  "MP*". This will allow more MPEG audio files to be opened easily, and 
  prepares for Layer III (MP3) files.

- Fixed a bug which sometimes caused the scroll bar to not be reset 
  after playing.

- Changed the MPEG...Decoding Options dialog box back to the ugly 
  default Windows dialog box. The Borland style one cannot load unless 
  BWCC.DLL is loaded before the application is run, so I took it out.

- Made the libararies link statically, which increases the code size, 
  but reduces the possibility that the application will fail to work 
  due to missing DLL files. (I think)

- Started work on layer III. Some layer III stuff has been added in the
  source code, but of course, it doesn't work yet.

06/26/96 (version 1.60)

- Added a scroll bar that updates as sounds play. You can also use it 
  to seek anywhere in the sound. Fast forward and rewind also have been
  implemented.

- Reduced the buffer size by one half again, to reduce latency when 
  seeking. Again, if you had version 1.51 or earlier working correctly, 
  and version 1.60 messes up, just let me know.

- A couple more cosmetic changes, and additions to the maplay classes 
  that allow seeks.

- The output buffer now uses fixed memory which is more likely to be 
  available.

- Reduced the size of the executable (from 180 KB to 83 KB) by not 
  including debug information.

03/31/96 : Version 1.51

- Added the ability to play MIDI files. Wow, I'm a genius (NOT). Still,
  it's cool that you can just use maplay to play everything. You can 
  also put MIDI files in the playlists.

03/28/96 : Version 1.50

- Replaced buttons with neat looking icons. 3D too!

- Added ability to stop after pausing playback.

- Added a dialog box to play files in stereo or in mono. This function 
  works but the pre-decode feature has not been implemented yet. 
  Selecting mono will take half as much CPU time, and may be 
  necessary for 486 or lower CPUs.

- Fixed a minor bug with play lists, but lists still do not play 
  perfectly.

- Made all the buffers of all versions (386, 486, Pentium) the same 
  size. I don't think the size of the buffer makes much difference 
  anyway. If you had a version that worked before, but doesn't work 
  now, please contact me.

- Discovered a minor "bug" - Wave files will not play if you have 
  spaces in the filename or the directory that the WAV file is in.

03/11/96 : Version 1.30

- Added play list functionality. To play a list of files, create a text
  file with a filenames (MP2 or WAV) separated by newlines (hit enter 
  after each filename). Make sure you include the full path in the 
  filename, and that the name of the list file ends with a TXT 
  extension. Here is a sample list (arg.txt):

sucky_american_music.mp2
grunge_bites.wav
anime_rules.mp2
send_donations_to_Jeff-san.wav

The play list is far from perfect, as it frequently freezes in the 
middle of files. I'll work on fixing it.

- Fixed lack of stereo playback. The previous version only played the 
first file in stereo, but after loading a mono file, the playback 
remained in mono for stereo streams. This has been completely fixed.


I'll continue to try to improve maplay until it is perfect. Better 
playlist manipulation, and Netscape plug-in functionality are in the plans.


Jeff Tsay (ctsay@pasteur.eecs.berkeley.edu)
