PM123 1.01 User's Manual


  1. Welcome to PM123!
  2. PM123 User Interface
    1. Main menu
    2. Playlist menu
    3. Properties
    4. ID3 tag editor
    5. Sound visualization plugin
    6. Graphical sound equalizer
    7. Playlist Manager
    8. Commandline parameters
    9. Drag'n'drop
  3. Skin Utility and WinAmp skins
  4. Troubleshooting
  5. How to create your own MP3s (MP3 encoders)
  6. Remote control
  7. Registration and support
  8. Copyright, credits and greetings

Welcome to PM123!


Hello and welcome to the wonderful world of digital music on OS/2. First we must congratulate you for choosing the best MPEG-audio player available for OS/2! PM123 has been in development since beginning of 1997 and has become the most advanced player on OS/2. Some of you may have used the earlier betas of PM123 and for your convienence, here are the new features in this release:

PM123 main window



PM123's default main player window

This is PM123's main window on startup. The window has several controls and lots of status information. The main playing controls are these:

From left to right: play, pause, rewind, fast forward, open/close palylist, repeat mode, randomize playlist, next song, previous song and power off. Volume can be controlled clicking and dragging the volume bar:

While playing there are some status indicators such as:


Stereo/mono indicator and bitrate

Playlist index/total

You can right click the player to open up the main menu.

Keyboard shortcuts: We have defined some keyboard shortcuts to be used from the main window:

PM123 main menu


The main menu can be invoked by clicking the right mousebutton or by pressing space over the main window. The following menu will then pop up:

Open playlist: Opens the playlist window.
Load file: Opens a single file.
Open URL: Opens a file from the Internet for streaming.
Recall: Displays shortcuts to 10 last used files.
Edit ID3 tag: Edits the ID3 tag of the currently loaded file.

Properties: Displays PM123's configuration dialog.
Load skin: Load a new skin into the player.

Equalizer: Displays the Graphical Equalizer.
Playlist Manager: Displays the Playlist Manager.
Font: A submenu which allows you to select from two fonts.
Size: A submenu which allows you to select the size of the player from 3 predefined sizes.
Float on top: Toggles 'float on top' option, which allows PM123 to float above all windows.
Hide window: Hides the player window. PM123 can be restored by selecting it from the window list.

Keyboard shortcuts: You can use any of the commands in the main menu by giving focus to the PM123 window (by clicking it, for example) and pressing Alt and any character underlined in the main menu. For example, you can edit the ID3 tag by pressing Alt+3.

PM123 playlist menu


Use this playlist: Activates this playlist.

Add to list: Add file(s) to the playlist.
Add URL: Add HTTP files or playlists (M3Us).
Clear list: Clear the whole list.

Save list: Saves the list.
Load list: Loads a saved list.
Recall: This submenu has shortcuts to 10 last loaded playlists.
Sort: This submenu has options to sort the playlist by size, playing time, filename or songname.

Load: Loads this file into the player.
Remove from list: Removes this file from the playlist.
Edit tag: Edits this file's ID3 tag.
Delete tag: Removes the ID3 tag from this file.

Keyboard shortcuts: You can use any of the commands in the playlist menu by giving focus to the playlist (by clicking it, for example) and pressing Alt and any character underlined in the playlist menu. For example, you can edit the ID3 tag by pressing Alt+E or load a new playlist by pressing Alt+L.

PM123 properties



PM123's properties dialog, page 1 of 3

The properties dialog can be accessed from the main menu. In the dialog you can configure PM123's audio engine and interface.

Sound system

DART: This is the default sound system. DART stands for Direct Audio Real Time. Some Warp 3 systems will need a file called DART.ZIP to use DART.
MMOS/2: This sound system is not available in current release. DART is much faster and stabler than the old MMOS/2 playlist driven audio system.
8-bit audio: 8-bit audio switch is provided for old soundcards that don't support 16-bit audio.

Sound quality options

Mix both channels (mono): This mixes the left and right channels into a mono stream. This reduces the stress on CPU. Useful on 486 systems.
Downmix 2 to 1: Decodes only every second byte, therefore dropping the sample rate from 44100 to 22050 and from 22050 to 11025, etc. Useful on 486 systems.
Play 48kHz as 44kHz: Play 48kHz files as 44kHz. Toggle this if you have problem with such files.

Sound device

Select a sound device to use from the drop down list.
Sound device is shared: Opens the sound device in shared mode, allowing other programs to use the device while a file is being played. Works only on drivers that support it (the Gravis Ultrasound drivers, for example).

Decoder settings

Number of buffers: This is the amount of audio to buffer in 16kB chunks. You may want to increase this on a heavily loaded system.
Trash buffers on seek: This option provides a much faster response on seek operations (fast forward, rewind, jump to position), but consumes more CPU time during the seek.

Behaviour

Start playing on file load: Automatically starts playing when you load a file.
Auto 'use playlist' on add: Automatically selects "Use this playlist" when adding files or directories to the playlist. Auto play on 'use playlist': Automatically starts playing on "Use this playlist".
Scroll: Infinite: Keeps scrolling the display forth and back until you start feeling sick :-)
Scroll: Once: Scrolls the display forth and back once.
Scroll: Disable: Prevents the display from scrolling. Useful if you are scroll-sick.


PM123's properties dialog, page 2 of 3

Miscallenous

Filename: Display the filename by default.
ID3 tag: Display the ID3 tag by default.
File info: Display the file information by default (bitrate, frequency, mode).

Streaming audio

HTTP proxy URL: Specify your HTTP proxy here.
HTTP auth: This is your HTTP authentication string in format username:password.
Buffer size: Specifies the read ahead buffer size (useful when playing across a network or from a streaming source).
Fill buffer before playing: Fills the buffer (see above) before playing.


PM123's properties dialog, page 3 of 3

Plugins

Disable/Enable: Disables/enables the selected plugin.
Unload: Unloads the plugin completely.
Configure: Available only if the plugin is configurable. Click this button to set plugin's settings.
Add filter plugin: Add a pure filter plugin (visual plugins are skin specific, see PM123 sound visualization).

Registration

Name: Enter your name here.
Code: Enter your BMT Micro provided registration code here.
Register: Click this button to finish your registration!

PM123 ID3 tag editor


"ID3 tag editor? What's that?", you might ask. ID3 tags are way of appending some information to each MP3 file. The information contains song title, artist's name, album's name, music's style, release year and a comment. ID3 tags don't belong to the MPEG standard, but it has already become a widely spread standard among MP3 listeners. It's a good idea to add this tag to your MP3 files (if your filenames get mangled, you'll always know the songname).


PM123's ID3 tag editor window

PM123's tag editor is quite simpled. It can be invoked for the current file from the main menu or by pressing Alt+3 on the player window. You can also edit the tags of the files in the playlist by right clicking a file in the playlist and selecting Edit tag or by pressing Alt+E in the playlist. You can also remote a tag by selecting Delete tag.

PM123 sound visualization plugin


PM123 comes with a sound visualization plugin, ANALYZER.DLL which is located in the visplug directory. The plugin is visible right next to the volume bar. By default it shows the spectrum analyzer. Click it once to bring up the oscilloscope, a second time to bring up the CPU monitor and third time to disable it.


The spectrum analyzer.

Note that because the spectrum analyzer is visual plugin, it is skin specific and will not display on older PM123 skins. But you can add them easily to any skin by editing the skin's .SKN file and adding this to it:

1=visplug/analyzer.dll,x,y,size-x,size-y
Replace x, y, size-x and size-y with suitable coordinates (a easy way to find out the coordinates for a certain area is to load up PMView, take a Window capture of the skin and use the 'Track info' feature). You can also use WinAmp-compatible viscolor.txt files like this:
1=visplug/analyzer.dll,x,y,size-x,size-y,viscolor.txt
The plugin will then read viscolor.txt and adapt to colors specified in it!

PM123 graphical sound equalizer


PM123 users can enjoy and play with the graphical sound equalizer provided.


PM123 Graphical Equalizer window

To enable the equalizer, click on "Equalizer enabled". Now you can adjust the bands by dragging the sliders. Preamplifier slider does software amplification (useful if your soundcards amplifier is broken). You can also mute bands by clicking on the checkboxes below sliders. To restore everything back to normal, click "Default". You can also save and load equalizer profiles.

If you don't think this equalizer suits your needs well enough, you can use Samuel's Real Equalizer plugin, which provides excellent sound quality and more bands to manipulate. The plugin is provided with PM123 and is located in file realeq.dll. Install it via PM123's Properties dialog (Add filter plugin -button). You can display the configuration window by pressing the Configure button in the same dialog.

Adjust FIR Order to suit your machine (at least P150 recommended for FIR order 64).

To come back on the filter order for the casual user, this is the number of samples processed (in addition to the current sample) to obtain a new sample. What does this means? Ok say you are playing at 44100Hz, this means there are 44100 samples passing per second in the filter also, right? Ok, so say you'd like to catch 20Hz and filter that decently. This means you will need a filter order of at least 44100/20-1 = 2204!!! With values in this range, you can make your stereo EQ jealous. Get a Pentium II and ditch your stereo. This also means that with my small 64 filter order, I cannot process frequencies under 44100/(64+1) = ~678Hz properly.

PM123 playlist manager


Playlist Manager is provided for browsing and managing playlists. Note that Playlist Manager is not a replacement for the playlist. You can add and remove lists from Playlist Manager, load lists into the normal playlist, load single files and calculate statistics. Also note that some of Playlist Manager's options only work with playlists saved with PM123 1.0.


PM123 Playlist Manager window

Playlist Manager will remember the playlist added to it next time you open it. Right click on an empty space (the title, for example) to get the main menu:

Add a playlist: Adds a new playlist to the Playlist Manager.
Statistics: Shows statistics for all playlists and files in Playlist Manager.

Right click on a playlist to get the list menu:

Load this playlist: Loads this playlist into PM123 playlist.
Statistics: Shows statistics for this playlist only.


Remove from list: Removes this playlist from Playlist Manager.
Delete: Removes this playlist from Playlist Manager and your hard disk.

Right click on a file to get the file menu:

Load this file: Loads this playlist into PM123.

PM123 playlist files


PM123 playlist files always have the extension .LST and they contain simply CR separated lines of the files in playlist (plus Playlist Manager special lines starting with >). PM123 also understands .MPL files used by WarpAMP and M3U playlists used over the Internet.

PM123 commandline


PM123 accepts a couple commandline parameters:

	-cmd [host] command 	If `host' is omitted, send commands to local PM123, otherwise
							send commands to PM123 running on `host'. For a command listing,
							see PM123 Remote control.
	-smooth 				Enables the smooth scroller, which supports national characters
							and DBCS. Only works with the default skin.
	-shuffle				Shuffles files added from commandline.
PM123 also accepts MP3 files, URLs and playlists as commandline parameters.

(the -proxy, -auth and -48as44 options in 1.0 have been moved to the Properties notebook)

PM123 drag'n'drop


You can drag'n'drop one or more MP3 files to PM123's main window or playlist. You can also drop one or more directories to them, and of course playlist files.

PM123 Skin Utility and WinAmp skins


PM123 comes with a skin utility (SKINUTIL.EXE), which can converts WinAmp skins to PM123 skins. Here's an example how to convert a WinAmp skin (SKIN.ZIP):
	[c:\pm123] md skin
	[c:\pm123] cd skin
	[c:\pm123\skin] unzip -j c:\files\skin.zip
	Archive: c:/files/skin.zip
	  inflating: Viscolor.txt
	  inflating: Position.bmp
	  inflating: Main.BMP
	  inflating: Text.BMP
	  inflating: option.bmp
	  inflating: Cbuttons.bmp
	  inflating: Titlebar.BMP
	  inflating: Monoster.bmp
	  inflating: Posbar.bmp
	  inflating: Shufrep.bmp
	  inflating: Volume.BMP
	  inflating: Numbers.BMP
	  inflating: Playpaus.bmp
	[c:\pm123\skin] cd ..
	[c:\pm123] skinutil convert skin
	PM123 Skin Utility (c) 1998 Taneli Leppä <rosmo@kalja.com>
	Processing skin/cbuttons.bmp.......
	Processing skin/titlebar.bmp..........
	Processing skin/text.bmp: abcdefghijklmnopqrstuvwxyz_-()&.:0123456789öä ,+%[]
	Processing skin/posbar.bmp..
	Processing skin/volume.bmp...
	Processing skin/shufrep.bmp:....
	Processing skin/monoster.bmp:..
	Processing skin/numbers.bmp:............
	Processing skin/main.bmp:.
	Creating skin.dat...
	Creating skin.pak
	Bundling...
	124 images, total 212444 bytes (207 kB).
	Creating skin.skn
	Cleaning up...

There you go. You can now load skin.skn from PM123. The skin utility also created files skin.pak and skin.dat that are required if you use the skin. You can also bundle your old skins with lots of small files into two files. Run skinutil.exe without any parameters to see help.

PM123 troubleshooting


1. The player skips and/or the audio doesn't sound right!

There might be multiple reasons if you encounter this problem. Some of them are listed here. First of all, check your MP3 file. It may be broken. It might play succesfully on another player, but mpg123 may not necessarily like it. If you think it's not related to the input stream, maybe the problem is one of these: Extra effort has been put in creating a priority system that stops skipping. Samuel, who did the priority system, convinces us by saying: "I have played 2 MP3s on my P150 and watched a "dir /s" smooothly and happily scrolling in the foreground without either MP3 skipping... I think that's pretty convincing."

2. The player crashes on startup.

3. My mouse cursor is jerky or jumpy!



How to create your own MP3s (MP3 encoders and utilities)


There hasn't been many CD-DA or MP3 encoders for OS/2, but recently this situation has improved mainly because of the Win32-OS/2 project. To help you to create your own MP3s, Samuel has assembled a small review on MP3 encoders/decoders, CD-DA utilities and other useful software.


MP3 Encoders

I have tried five MP3 encoders by encoding CD quality WAVs (yes, even Classical Music) in MP3s at 128kb/s in stereo (not joint stereo, when possible) and tested them with some $40 headphones and pm123's spectrum analyzer and equalizer. I have benchmarked the speed of the different encoders by comparing it with L3Enc 1.0 for OS/2's since probably all MP3 OS/2 users tried it at one time or an other. (You can also jump right to my conclusion)

ToMPG 3.0 for Win32 (http://www.kiss.uni-lj.si/~k4fe0470/tompg.zip)

This is a Win32 console EXE, but it converts NUMBER ONE with Win32-OS/2 Alpha 0.02!! (http://www.os2ss.com/win32-os2)

ToMPG is fast. I mean astoundingly fast, light speed fast. WARNING!! it's going to blow your socks off!! It's seven (7) times faster (no joke) than L3Enc 1.0 for OS/2 here.

Use the following options to enable 128kb/s and Stereo output though. The default values aren't terrific. -B64 -M0

The hearing test was good. I didn't hear a difference between the original WAV and the MP3, but the spectrum analyzer showed a cut off at around 16kHz.

Its downsampling filtering is BS though, so if you plan on encoding low quality MP3 from high quality WAV, use something else, or downsample it before using ToMPG.

ToMPG also supports MPEG 2 Layer III (lower sampling rate MP3s).

This program presumably looks free. I see it on many unofficial sites, that means excluding Xing's, and it never comes with any license or shareware restrictions. It seems to be the predecessor of the commercial Win32 GUI Xing encoder (http://www.xingtech.com).


8hz's MP3 Encoder 0.2 (http://www.8hz.com)

This is a free MP3 encoder based on the public ISO MPEG code (the famous dist10.tar.gz). Eventhough it is at least 3 times slower than L3Enc 1.0 for OS/2, the source codes are available for free!! It is beta at the moment, it might not always work properly.

The hearing test was good. I didn't hear a difference between the original WAV and the MP3, although it attenuates any frequency over 16kHz upto 20kHz where it cuts off.

8Hz-mp3 0.2 does not support MPEG 2 Layer III (lower sampling rate MP3s).


L3Enc 1.0 for OS/2 (http://hobbes.nmsu.edu/pub/os2/apps/mmedia/sound/convert/l3en4os2.zip)

This is actually the well known L3Enc from Fraunhofer-IIS version 1.0. It looks like they used EMX to compile this version of L3Enc for DOS, and it had the side effect to make it also run in OS/2. Somebody, somewhere, had that old copy and made it reappear in public. The new versions of L3Enc now use DJGPP and that doesn't make any OS/2 binaries. Send shit to Fraunhofer-IIS!!

It's reasonably fast, but it hogs the CPU. You should get SPE (http://hobbes.nmsu.edu/pub/os2/util/system/spe.zip) to reduce its priority to idle 0 if you want to do something else when it's encoding.

It encodes in Joint Stereo only and the hearing test was bad, even if it only cuts any frequencies over 16kHz. The sound seems centered, probably that the Joint Stereo is too wide.

The -wav parameter doesn't work properly, so you need to feed it RAW files or you'll hear a pop at the beginning of your MP3s.

L3Enc 1.0 for OS/2 does not support MPEG 2 Layer III (lower sampling rate MP3s).


L3Enc 2.72 for DOS (ftp://ftp.cdrom.com/pub/sac/sound/l3v272d1.zip)

This one is about 2 times slower than L3Enc for OS/2 without -hq. With it, you're better off running it over night, but I haven't figured out what it actually does (is it just eating CPU cycles for the fun of it or what?). Sadly, this is the last (and obsolete) official version. It doesn't even appear on Fraunhoffer site!!

It encodes only in Joint Stereo, but the hearing test was good and the spectrum analyzer shows a cut off at 20kHz. So if you are sensitive to high frequencies, use this encoder.

Note, since this is a DOS program, it only supports 8.3 style filenames.

L3Enc 2.72 for DOS supports MPEG 2 Layer III (lower sampling rate MP3s).

It requires a registration for encoding over 112kb/s.


MP3Enc 3.0 for Win32 (http://www.iis.fhg.de/amm/download/mp3enc/)

This is a new face of L3Enc. A Win32 EXE is available, but no DOS EXE. It also converts fine with Win32-OS/2. Nonetheless, I was very disapointed by its performance.

By default, it cuts off all frequencies over 11kHz. This makes the sound very muffled. So I tried to use -bw 22050 (to set the frequency bandwidth we want) and it still only goes up to 16kHz. The resulting MP3s also have small "drop outs" and chops in sound not found in the original WAV. Against all expectation, the highest quality (which is the default) seems to make them worse while making the encoding process very very very slow. In addition, we can only use Joint Stereo.

At lowest quality, it's about the same speed as L3Enc 1.0 for OS/2.

This encoder has some nice features like allowing pipes to be used instead of files (this can be useful for realtime encoding and transfer), and some other not so nice options like -l3wav which deliberately sticks a RIFF wav header at the beginning the MP3 file.

I don't know what happened in Fraunhofer labs, maybe a visit from Microsoft?

You should get SP to reduce its priority as it hogs the CPU. (http://hobbes.nmsu.edu/pub/os2/util/system/sp103.zip)

MP3Enc 3.0 for Win32 supports MPEG 2 Layer III (lower sampling rate MP3s).

This requires a registration for more than 30 seconds of MP3 encoding.


os2enc01.zip

I didn't get it to work at all. Gives garbage.


AMPEG 4.3 (http://hobbes.nmsu.edu/pub/os2/apps/mmedia/sound/convert/ampeg43.zip)

Good free package with source codes available to encode mp2 files, but they need to be a bit larger (192kb/s instead of 128kb/s) than mp3 to achieve the same quality. I can hear the difference with my headphones.


Conclusion


Decoders

mpg123 for OS/2 0.20 (http://www.cam.org/~guardia/archives/mpg123_020.zip)

This is my port of mpg123 (which I used to make mpg123.dll). I included a WAV routine to include a RIFF WAVE header output mode. So basically, anything that pm123 or mpg123 can play can be dumped to WAV files that can then be used for editing, CD burning or reencoding with ToMPG.


CD-DA utilities

Leech 1.20 (http://hobbes.nmsu.edu/pub/os2/apps/mmedia/sound/editors/leech120.zip)

This is a CD grabber with dijittering capabilities. There is a very good reason that you want to prevent any jittering. Not only does it insert clicks in your PCM sample, it can also switch the left and right channel!!

Nonetheless, I get loads of "jitter correction failed" even though Alfons, for example, has no problem reading it. Must be my Goldstar CD-ROM drive that doesn't like to jump all over the place to correct jittering. I heard Panasonic CD-ROM drive do 0 jitter all the way, now that's neat. Anyway, if your CD-ROM drive hates CD-DA like mine, try to use -s10 and -j100. It might be slow, but at least you get everything.

Make sure you use the options to dump the audio track into a RAW file if you intend to encode it with L3Enc 1.0. If you don't do so, L3Enc will encode the WAV header (it doesn't recognize it), and you will get a click at the beginning of your MP3 files.


Alfons 0.99b (http://www.algonet.se/~mikkje/files/alf099b.zip)

This is the best CD-DA utility after Leech. It's very easy to use, and because Leech can take quite a while reading a track on my CD-ROM drive, I use Alfons for "quick and dirty grabs".


Front Ends

MP3 PM 0.55 (http://www.kiss.uni-lj.si/~k4fe0470/mp3pm055.zip)

Looks like a promising control interface, but at the moment it only supports Leech and the defunct L3Enc 1.0. Nice GUI though.


CD2MP3 PM 0.90 (http://www.cam.org/~guardia/archives/cd2mp3pm_090.zip)

This is a very nice (ah, I can't help being biased) utility that I also programmed that can use any Encoder and Grabber that can run in non-interactive mode using a simple configuration file. It reportably works very well, try it out!


PM123 remote control


PM123 can be remotely controlled via a named pipe, \PIPE\PM123. Named pipes were chosen because of their excellent features. Quoting from the Control Program Programming Guide and Reference: "Named pipes enable related or unrelated processes on either the same computer system or different systems to communicate with each other. Any process that knows the name of a pipe can open and use a named pipe. In addition, named pipe data can be transparently redirected across a network, such as a local area network (LAN)".

To remote control PM123 on the same computer, you can use either the built-in "echo" command, or the PM123 executable itself. PM123 understands a set of commands that are written to the pipe. For example,

	[c:\usr\pm123] pm123 -cmd volume 80
	[c:\usr\pm123] echo *volume 80 > \pipe\pm123
These commands will set the volume to 80%.
	[c:\usr\pm123] pm123 -cmd add d:\music\test.mp3
	[c:\usr\pm123] echo *add d:\music\test.mp3 > \pipe\pm123
These commands will add the file d:\music\test.mp3 to the playlist.

If you use echo, remember to prepend any commands sent to it with a * character. PM123 currently understands the following commands (optional parameters are enclosed in parenthesis):

play {file} Starts playing. If file was specified, it will be first loaded and playback will be started.
stop Stop playback.
pause on|off Pauses or unpauses the playback.
next Selects the next song in playlist.
previous Selects the previous song in playlist.
rewind Toggles rewind of the currently playing file.
forward Toggles fast forward of the currently playing file.
jump n Jump to n seconds in the currently playing file.
volume n Sets volume to n% (scale 0-100, of course).
load file Loads a file into. Plays it too, if 'auto play on load' is set.
shuffle Toggles shuffling.
repeat Toggles repeat.
mono on|off Toggles mono mode on.
downmix on|off Toggles downmixing 2 to 1.
autouse on|off Toggles 'auto use playlist on add'.
playonload on|off Toggles 'auto play on load'.
playonuse on|off Toggles 'auto play on playlist use'.
float on|off Toggles 'float on top'.
font 1|2 Selects font 1 or font 2.
size regular|small|tiny Selects the player size.
hide Hides the player window.
add file1;file2;file3 Adds file(s) to playlist. Multiple files must be separated with ';' characters.
use Use the playlist.
clear Clears the playlist.
dir directory Add directory to the playlist (non-recursive).
rdir directory Add directory to the playlist (recursive).

Now for the cool part. You can control PM123 over your OS/2 Local Area Network. Just use \\SERVER\PIPE\PM123. \\SERVER is the name of the computer PM123 runs on. For example,

	[c:\usr\pm123] pm123 -cmd \\mycomputer volume 80
	[c:\usr\pm123] echo *volume 80 > \\mycomputer\pipe\pm123
	[c:\usr\pm123] pm123 -cmd \\mycomputer add d:\music\test.mp3
	[c:\usr\pm123] echo *add d:\music\test.mp3 > \\mycomputer\pipe\pm123
Will do the same as examples above, but from a different computer. Easy, isn't it?

PM123 registration


PM123 costs only $15 per copy, so it's a very good investment!

Why to register?

Yes, why to register shareware applications? There are numerous reasons. One of the most important reasons is that registering ensures that you'll get new versions, support, bugs fixed and most of all, a good feeling that you've supported OS/2 and software developers. We won't abandon OS/2 as long as you keep supporting us. We won't do the same as Colorworks authors did.

Register! Where?

To serve users the best way, we are handling registrations via BMT Micro (http://www.bmtmicro.com). The price is just $15, which will get you a key that will work in all future releases of PM123. You can also use the secure ordering server at BMT Micro for instant purchases! Purchase PM123 online by clicking this.

				  Mail Orders To: BMT Micro
								  PO Box 15016
								  Wilmington, NC 28408
								  U.S.A.

					Voice Orders: 8:00am - 7:00pm EST (-5 GMT)
								  (800) 414-4268 (orders only)
								  (910) 791-7052

					  Fax Orders: (910) 350-2937  24 hours / 7 Days
								  (800) 346-1672  24 hours / 7 Days

		 Online Orders via modem: (910) 350-8061  10 lines, all 14.4K
								  (910) 799-0923  Direct 28.8K line

					via Internet: orders@bmtmicro.com
								  telnet@bmtmicro.com
								  http://www.bmtmicro.com
		   Secure Ordering: https://www.bmtmicro.com/info/placeorder.html


	 Ordering and general ordering questions:

							Via AOL: bmtmicro
							Via MSN: bmtmicro
						 Via Prodigy: HNGP66D
					Via Compuserve: 74031,307


	 We accept Visa, Mastercard, Discover, American Express, Diners
	 Club, Carte Blanche, Cashiers Check, Personal Check.	Personal
	 checks are subject to clearance.  Eurochecks in DM are welcome.
	 DM, Sterling, and US Currency is welcome but send only by
	 registered mail, return receipt requested.   We cannot be liable
	 for lost cash sent through the mail.

	 If you reside in a country with an unconvertible currency please
	 contact us for alternatives.

	 Purchase orders are welcome, subject to approval.	 The minimum
	 amount is $250.00.

	 Information for our German customers is explained in the last
	 paragraph of this order form.

	 _____________________________________________________________________

	 Company:_____________________________________________________________

	 Name:________________________________________________________________

	 Address:_____________________________________________________________

			 _____________________________________________________________

	 City: _______________________________State/Province: ________________

	 Postal/ZIP Code: ____________________Country:________________________

	 Phone:_______________________________________________________________

	 Fax:  _______________________________________________________________

	 E-Mail #1____________________________________________________________

	 E-Mail #2____________________________________________________________


	 Product					Quantity Price	Number of copies
	 _________________________	______________	________________

	 _PM123___________________	____$15.00____	x ____________ = + $ _______

	 _________________________	______________	x ____________ = + $ _______

	 _________________________	______________	x ____________ = + $ _______

	 Latest Version on Diskette _____$3.00____	x ____________ = + $ _______


	 North Carolina Residents add 6% Sales Tax					   $ _______

	 Shipping and Handling (no quantity limit / see below)		   $ _______

	   Email - Subject to Credit Card Verification	   Free
	   Fax (USA/Canada)...........................	   1.00 US
	   Fax (Non-North America)....................	   2.00 US
	   Worldwide 1st Class .......................	   Free
	   2nd Day Priority, USA Only ................ $   4.00 US
	   US Postal Service International Express
		 (Including Canada and Mexico), allow up to
		 7-10 days ............................... $  25.00 US
	   Airborne Select Delivery  (USA Only) 	   $   8.00 US
	   FedEx Overnight, USA Only (delivery by
		 3:00 pm the following day) .............. $  15.00 US
	   FedEx Europe/Japan (guaranteed delivery
		 within 3 days) .......................... $  35.00 US


	 Total: 													 $ _______


	  For credit card payment only

	  Circle one: VISA / Master / Discover / American Express / Diners

	  Credit card number: _____________________________________________

	  Expiration date: ________________________________________________

	  Authorization signature: ________________________________________

Support

Support is provided for registered users by following means (feel free to send bug reports, suggestions and other cool stuff):

Email: pm123@bmtmicro.com
Web: http://www.teamos2.sci.fi/pm123
Voice: +358505485242 (Taneli's cellfone, remember Finnish timezone GMT-2!)

Copyright, credits and greetings


MPG123.DLL was created with help and code from following people:

  Original mpg123 decoder written/modified by:
	 Michael Hipp <Michael.Hipp@student.uni-tuebingen.de>
	 Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>

  with help and code from:
	 Samuel Audet <guardia@cam.org>: OS/2 port
	 MPEG Software Simulation Group: reference decoder package
	 Tobias Bading: idea for DCT64 in subband synthesis from maplay package
	 Jeff Tsay and Mikko Tommila: MDCT36 from maplay package
	 Philipp Knirsch <phil@mpik-tueb.mpg.de>: DCT36/manual unroll idea
	 Niklas Beisert <nbeisert@physik.tu-muenchen.de> MPEG 2.5 tables
	 Henrik P Johnson: HTTP auth patch

MPG123.DLL special features were created by Samuel Audet and the graphical user interface was created by Taneli Leppä. Also code from following people was used:

	Generalized Bitmap Module by:
	  Andy Key <nyangau@interalpha.co.uk>

	Ooura Fourier Transformation library:
	 Takuya OOURA <ooura@kurims.kyoto-u.ac.jp> or <ooura@mmm.t.u-tokyo.ac.jp>

OOURA1D.DLL contains code found in the 1 dimension DFT / DCT / DST package by Takuya OOURA or , who owns the copyright. Thanks to him for the nice code!

I have replaced all double precision floats to single precision. It gives an awful e-07 precision instead of e-17, but it's faster and e-07 is by far enough for my needs.