MPEG layer 3 is an audio format that produces highly compressed files while sacrificing very little audio quality -- perceived frequency response and signal-to-noise ratio are retained. As a gross over-simplification, MP3 works by removing inaudible information. Compression ratios of up to 12:1 for stereo files can be achieved with very little degradation. If that bottom-line explanation isn't quite enough for you, visit the Fraunhofer-Gesellschaft - IIS site, where the MPEG layer 3 FAQ resides. For a good write-up (in layman terms) of the basics of audio perceptual coding, go here. If that whetted your appetite, visit Tristan's MPEG Audio site, where every conceivable question you could have regarding MPEG layer 3 in specific, and MPEG in general, can be answered.
The compression ratio by itself makes the MP3 format ideal for Usenet posting, where disk space and transfer time are precious commodities. The smaller file size also means that posts will be less likely to be dropped: a 3-part file is more likely to come through whole than a 33-part file.
An added bonus of MP3 is that it can be broken up into pieces, and each piece is still playable. Do you want to sample only 15,000 lines worth of a 45,000 line post? Download and uudecode only part 1 of 3. The feature that makes this possible (headerless file format) also means that MP3 files can be made to stream across the net real-time (assuming the playback bitrate and speed of the Internet connection are compatible).
The disadvantages of MP3 compression are that lots of processor power is required to encode and play files, a sound-card is required (16-bit sound card recommended for PCs), and the player/encoder/decoder software is not yet in widespread use. The last point is undergoing change as multimedia companies like Macromedia (Shockwave), Telos (Audioactive), and museArc are incorporating layer 3 into their audio produts. The sleeping giant, Microsoft, has recently awakened to the possibilities of streaming compression/decompression algorithms (codecs), including layer 3. Their ActiveX Streaming Format (ASF) is a codec-independent standard for delivering multimedia data over the Internet. The Microsoft Internet Information Server (works with the Windows NT server) and their NetShow player is how Microsoft plans to rule the audio/video multicast world (It's not the codec, stupid -- it's the delivery method!).
In general, the sounds here were sampled in stereo at 22.05 kHz with 16-bit resolution. MPEG-2 layer 3 encoding was used with a playback bitrate of 64 kbit/s resulting in 11:1 compression. I have purposely used MPEG-2 and avoided higher bitrates to keep CPU requirements down a bit. Even still, you need a fairly powerful computer to play these sounds realtime. There are currently realtime players available on PC's (MS-Windows and DOS) PowerMac (System 7.5.2), and Sun Solaris platforms.
You must have a 486 or better (floating-point unit) to play realtime on PCs, and will have to downmix from stereo to mono if you are using a 486-33. A Pentium 133 or greater is recommended for best performance and sound quality (although I have yet to practice what I preach!). A shareware MP3 realtime player (Winplay3 version 2.0, released Oct 30, 96) that cuts off after the first 20 seconds is available at Fraunhofer's site. Some mp3 afficionados recommend the beta version (version 2.0 beta 6) over the final version, claiming it requires less CPU, although from the limited testing I've performed using my 486-120, I think I'd give the final version the edge. An older, freeware version (Winplay3 version 1.3) for PCs that does not have the 20 second limitation is available at the Winsite (formerly CICA) archives. An advantage of version 2 (I'm referring to the final release), especially for users of 486 machines, is that it performs better than the older versions. If you couldn't before, you may now be able to listen to stereo MPEG-1, 128kbit/s files in downmix mode (mono), or in stereo at half-frequency, which still sounds pretty damn good. A feature of version 2.0 that versions 1.3 and 1.4 lack is support for Fraunhofer's Multimedia Protection File Format (MMP). MMP provides a way for copyright owners to keep control of digital music/video tracks. Winplay3 version 2.0 does not allow the use of the registration code that works for the freeware version. So you have a choice of ponying up DM 75,000 (about $50 !), continuing to use version 1.3 or Winplay3 version 1.4 (version 1.3's reg code works with 1.4), or abiding by the 20 second limitation. If you can't live with any of these options, I can tell you that you can find out or acquire almost anything you need on the Web/Usenet. Just don't email me asking for information that I can't give out in good faith to people I don't know.
A freeware program called "maplay" at Jeff Tsay's site now has MP3 realtime playback capability on Windows 95 or NT. It requires at least a Pentium-75 CPU for stereo streams. Mono downmixing capability has yet to be added. Also, it appears to blow up when you try to play MPEG-2 layer 3 files (used at lower sampling rates).
Telos has written enhanced versions of Fraunhofer's software for Windows 3.1 and Windows 95/NT called "Audioactive." These are freeware and will play any file length -- with the restriction, I believe, that they will only play certain MMP-encoded files or unencoded files/streams that reside on web sites that use the audioactive server. This is what I have observed about the Audioactive streams and client software:
museArc has released a realtime Win95 player, limited to 60 seconds. flipino has a nice table comparing Winplay3 with this program. It definitely uses more CPU than Winplay3, but has some nice features, like fast-forward and rewind, better playlist handling, and long filename support.
There is a playlist program called "MP3 Playlist Maker" for Win95 or NT 4.0 at Team Keso's site that works in conjunction with Winplay3. I have personally used it to make playlists of streaming sounds I want to listen to when I'm online. I recommend it. A freeware playlist program called "MP3 Info-Manager" for Win95 is available at Steve Padgett's page. A tagger/playlist utility called "MPEG 3 Studio" at Erik Kemp's MPEG3 Studio Home Page. This program will attach a small tag to a .mp3 file which contains info that you can add for databasing your files. It also has a playlist capability, although it lacks the ability to add URL's to the playlist. A shuffle/playlist program for Win95/NT is called MPEG Layer 3 Jukebox, and can be found at the Databorgen site . A program written in FoxPro, and specifically optimized around the ID3 tags is called MP3 Manager, and can be found at Petr Strnad's homepage. A playlist builder for Winplay3 or museArc can be found at Ylian Saint-Hilaire's site. Another shuffle/playlist program you might try is "flip Tech Shuffle Play" for Win95 at flipino's Digital Island. An MP3 management shell that combines all the encoding, mixing, playlist functions into one package is called "Mp3 Management", and can be found at Seeper's Home Page. A program called Mp3Spooler for Win95/NT allows users of Winplay3 to index into an mp3 file. A freeware l3enc shell for Win95 called Win Encode (download now) has been written by Dagoth. A playlist scheduler program for Win95 called Alarm Clock MP3 will play your favorite mp3's at predetermined days and times.
Someone has written a program for MS-DOS (devdsp.zip, download now) that takes a .wav that is named "DSP" and pipes it to a Sound Blaster card. The output of l3dec can be made to work with this program to play .mp3 files in the background if you have expanded memory available. I couldn't get it to work for me (I don't have a Sound Blaster), and don't know how powerful of a CPU is needed, but I have made it available for you to try. The program was originally posted to alt.binaries.sounds.music.
A shareware, beta-release MP3 realtime player (MacPlay3 version 0.99) that cuts off after the first 20 seconds is available Fraunhofer's site. You must have a PowerMac and System 7.5.2 to use Fraunhofer's realtime player. For best performance, SoundManager 3.1 is recommended. A new release is due out soon.
Telos has written an enhanced version of Fraunhofer's software for the PowerMac called "Audioactive." Reports from Rich Garceau (Mac MP2/MP3 enthusiast extraodinaire) are that Audioactive (version 1.1) "will play any length MP3 (even those made by l3enc.exe and stored on a local hard drive), and will do so with no dropouts on the slowest Power Mac ever made (6100/60)." However, "this isn't truly a stand-alone player. It's designed as a helper app to Netscape, so it tries to logon to the Internet each time you start it up. In fact, MacTCP has to be open, i.e. an Internet (TCP/IP) connection has to have been established since you last restarted your computer, for the player to stay running. The actual PPP connection doesn't have to be open, though." Unlike the Windows versions, which is crippled, this will play any l3encoded file, no matter where it resides. Latest news: from reports of users of version 1.2, it appears that Telos has "fixed" the Mac player to work (or should I say "not work") the same as the PC Windows version. See my explanation under the PC Windows section above.
A freeware program called Vamp written by Michael Pollet. It's based on Tomislav Uzelac's amp player for linux. Michael re-wrote most of the data processing part to optimize it for the Power Macintosh. Also based on amp is MacAmp, which appears to be trying hard to catch up.
A program called Mpecker, originally based on Tobias Bading's maplay, is a PPC MacOS program designed to either play audio MPEG files through the CPU's audio device, or to write the decoded information to a storage device in either PCM or AIFF form. It can decode MPEG Layer I, II and III files and recognizes both the MPEG-1 algorithm and the MPEG-2 LSF algorithm. A tracklist can be maintained and played sequentially or in a random order. Tracklists can also be loaded and saved. SoundApp is another PPC freeware player.
Sun Solaris (and some others)
Johan Hagman has written a decoder/player utility for Solaris called "mpeg3play." It is an MPEG layer 2 and layer 3 decoder/player based on public ISO/MPEG decoder source code. The original software was a slow but portable MPEG to AIFF decoder, impossible to use as a real-time player. Johan optimized the source code to the point where it became possible to use the decoder for real-time playback, and he modified it for output to the Solaris audio device. The source code can now be compiled to run also on Linux (since version 0.9.1), HPUX 9.05 (version 0.9.3), Amiga (version 0.9.4) and IBM AIX (version 0.9.5), and FreeBSD, Solaris/x86, SunOS 4.x (version 0.9.6).
mpg123, co-authored by Michael Hipp and Oliver Fromme, is a fast, free, and portable MPEG audio player for Unix. It supports MPEG 1.0 layers 1, 2, and 3, and has been tested on Linux, FreeBSD, NetBSD, SunOS, Solaris, IRIX, HP-UX and others. For full CD quality playback (44 kHz, 16 bit, stereo) a Pentium, SPARCstation10, DEC Alpha or similar CPU is required. Mono and/or reduced quality playback (22 kHz or 11 kHz) is even possible on 486 CPUs. TK3play is a front-end for the mpg123 program.
First, get yourself the
encoder software from Fraunhofer's site. The latest version of the encoder (version 2.61,
a bug fix) was released on 11/07/96. There are encoders/decoders
available for the DOS, UNIX, PC-Linux, and NeXTSTEP 3.3
platforms. The function of the encoder is to convert PCM files
into MP3 files, and the function of the decoder is to convert MP3
files back into PCM files (a common misconception is that the
decoder plays MP3 files).
For more information on combined decoders and players see the above section "How do I play the MP3 sounds archived here". . A freeware program which uses (and needs) l3enc and CDDA (CD audio ripper) to automatically encode multiple CD tracks is the very handy MP3 Factory (Win 95/3.1*) by Dagoth.
Mac Users: Time was when Mac users couldn't encode/decode files on their boxes, at least not natively for less than about $400. Now you can encode for free with MPeck, a PPC MacOS program designed to encode AIFF or PCM samples with a sampling frequency of 44100 Hz into stereo MPEG-1 layer 3 files with a bitrate of 128 kbps. If you want to pay, you can if you're a Shockwave devoloper -- you can use SoundEdit 16 or Director 5 to create streaming layer 3 SWA files using a Shockwave Xtra. A couple of notes on Shockwave layer 3 files, though. Dave Schmid has reported that MaPlay 1.81 won't play Macromedia files. Also, SoundApp seems to have problems playing these files. l3encoded files seem to work ok, though. Visit Macromedia's Shockwave Audio Streaming and Compression page for more information. Aaron Rosenblum keeps up a web site dedicated to MP3 on Macs; he offers a step-by-step procedure for using Shockwave to create .mp3 files. Another way to create .mp3 files using a Mac is possible if you have access to another OS, such as a shell account on an ISP.
Assuming you are using an unregistered version of the encoder, there are three encoding options you are allowed to use:
|bitrate||input sampling freq||down-sampled freq||mode||format|
|112 kbit/s||44.1 kHz||44.1 kHz||stereo||MPEG-1|
|56 kbit/s||44.1 kHz||22.05 kHz||intensity stereo||MPEG-2|
|16 kbit/s||44.1 kHz||11.025 kHz||mono||MPEG-2.5|
I usually opt for MPEG-2 at a bitrate of 56 or 64 kbit/s (registration code required) for several reasons: first, having an AMD 486DX4-120, I can't play MPEG-1 files in stereo at full frequency -- my CPU is just not powerful enough. Second, I suspect there are many others out there like me who are not yet Pentium-ready, so from the standpoint of trying to introduce as many people as possible to the merits of MP3, using a less CPU-intensive mode makes sense. Lastly, I find MPEG2 to be of sufficient quality for my purposes. The difference between sounds sampled at 44.1 kHz and those sampled at 22.05 kHz is usually small enough that I can live with it -- even with music containing lots of cymbals. I don't find the extra bit of high-frequency response worth twice the file size. In DOS, the command line I use is:
l3enc filename.wav filename.mp3 -crc -hq -br 56000
In the above command line (assuming a 44.1 kHz-sampled, stereo file is being encoded), a 56 kbit/s, 22 kHz down-sampled, MPEG-2 file will be produced. I've found it's a good idea to use the -crc option to verify data integrity, especially when trying to produce streaming files. The -hq (high quality) switch encourages the encoder to try to produce higher audio quality at the cost of greatly reducing encoding speed (as much as three times slower, according to one source).
Those of you with Pentiums who want CD quality will want to use MPEG-1 at 112 kbit/s or 128 kbit/s (registered users). The command line to produce a 112 kbit/s, MPEG-1 file (again assuming a 44.1 kHz-sampled stereo input file) would be:
l3enc filename.wav filename.mp3 -crc -hq
For Your Info
Does CPU affect sound quality of the realtime player?: The answer appears to be yes. I have done a comparison between a mp3 file played on my 486 and the decoded-to-wav version of the same file. Compression artifacts present when played by Winplay3 v 2.0 released are not audible on the decoded-to-wav version. Audio enthusiast Arnold Kreuger has done some testing using higher-powered machines, and has linked degradation of the realtime player's audio quality to the exhaustion of its look-ahead buffer. He recommends using Pentium 133 or greater CPU's for optimum sound quality.
What sounds better: stereo MPEG-1, 128kbit/s, played at half-frequency, or stereo MPEG-2, 64kbit/s, played at full frequency? My ears say that the former (128kbit/s) wins.
Bug fixed: encoding mono files: With version 2.61, Fraunhofer-IIS has fixed a bug that resulted in mono files that were half as loud as they were supposed to be. Previously, to properly encode in mono, you had to start with a stereo input file and use the -dm (downmix) option.
Other encoding options with the non-registered version: In general, the rules for the non-registered encoder seem to be:
Mono files at 56 kbit/s: Fraunhofer recommends using MPEG-1 for encoding mono files with bitrates >= 48 kbit/s because of that format's higher bandwidth capability. Actually, 48 kbit/s encoding is not supported with the latest encoder: it's a relic from an earlier age. However, that aside, I have noticed encoding artifacts when I encode mono files in MPEG-1, even at 56 kbit/s. My recommendation would be that if you don't need the extra bandwidth (which is typical of many mono sources), use MPEG-2(.5) instead: this is done by using sample rates of 24kHz or less.
Performance of MPEG-2.5: Fraunhofer-IIS introduced an extension to the MPEG-2 standard, dividing the low sample rates of MPEG-2 by 2, i.e. they introduced 8, 11.025, and 12 kHz - and named this extension "MPEG 2.5". According to Fraunhofer-IIS, "Layer-3" performs significantly better with 8 kbps @ 8 kHz or 16 kbps @ 11 kHz than with 8 or 16 kbps @ 16. I tested this assertion on orchestral music (Theme from Raiders of the Lost Ark), and preferred the 16 kHz sample rate to the 11.025 sample rate because of its better high-frequency response. However, orchestral music is relatively easy to encode without introducing annoying artifacts. MPEG 2.5 sounded better than MPEG-2 on an old Abbott and Costello (speech only) clip with severely limited frequency response.
How does RealAudio 3.0 compare? At 28.8 modem bitrates (16kbit/s), RealAudio 3.0 (codec based on Dolby-Net technology) sounds quite similar to MPEG-2(.5) layer 3, at least to my ears. For an interesting press release featuring the major players on either side (Telos for layer 3 and Progressive Networks for RealAudio) debating the relative merits of their products, visit Telos's Audioactive site, and read the news. Stefan Scheller, at his website, has made an interesting comparison of the RealAudio 3.0, MPEG layers 2 and 3, and Microsoft ADPCM formats. Layer 3 with the -hq option enabled is the clear winner among the codecs compared, according to Stefan.
How does Liquid Audio compare? Liquid Audio pretty much amazes me as a streaming audio format. Its codec is a modified version of Dolby AC-3. From the size of the file I tried, it appears to stream at a 20kbit/s. I experienced no dropouts at that rate, and the music (pop music style) sounded great - the best audio quality I've ever heard streaming over a 28.8kbs modem connection (yes, better than layer 3, -hq, streaming at 24kbit/s).
Problems with HTTP/1.1 server: Stefan Scheller has reported the following: Winplay3 1.x cannot connect to a HTTP/1.1 server (e.g. Apache 1.2). The problem lies in the file SOCKLAY3.DLL. The program seems to check for the protocol string HTTP/1.0. The new protocols rejected. Perhaps there is someone who can change this?
CPU loading with various Sound Cards: Hi-fi buff Arnold Kreuger has compared CPU usage with various sound cards. The following lists CPU use on a P5-133 machine while running Winplay3 v. 1.4.
Questions, Comments Msg me At firstname.lastname@example.org