### LameXP - Frequently Asked Questions (FAQ)

Table of contents:

- What is LameXP ???
- What platforms does LameXP run on?
- What output formats (encoders) does LameXP support?
- What input formats (decoders) does LameXP support?
- My anti-virus program raises an alarm when I try to download/install/launch LameXP. Why is that?
- Who created LameXP?
- What license is LameXP released under?
- Do I have to pay for LameXP? / How can I donate to the authors of LameXP?
- MP3, AAC or Vorbis - What is the best compressed audio format?
- What is the difference between the CBR, VBR and ABR rate control modes?
- How do I enable AAC/MP4/M4A output (encoding) in LameXP?
- Is there a way to output ".m4a" or ".aac" files with LameXP?
- How do I enable WMA input (decoding) in LameXP?
- How can I use LameXP as a "portable" application?
- Is there a way to use custom tools (binaries) with LameXP instead of the "built-in" ones?
- The LameXP startup (splash screen) takes very long on my system. What can I do?
- Why is there a time limit in my version of LameXP?
- Is there a way to hide/show the LameXP console ("DOS Box") window?
- Why does application 'xyz' not open the Wave files created by LameXP?
- Why does LameXP run (only) N instances/threads in parallel on my computer?
- Why does LameXP try to connect to the web-server at 'xyz.com' secretly?
- How can I force LameXP to create ID3 version 2 (ID3v2) tags?
- Why does LameXP use LAME v3.99 rather than v3.98?
- Can LameXP be used to convert/extract tracks from an Audio CD?
- Why is the maximum normalization level limited to -0.5 dB?
- What do the different 'Equalization' modes do?
- Why does my encoded file come out slightly longer than the original?
- Why is the Hibernation option disabled (greyed out) on my system?
- Why do I get the error 'Executable doesn't support Windows compatibility mode' on startup?
- Why do I get the error 'Executable requires Windows XP or later' on startup?
- Why do I get the error 'The procedure entry point De/EncodePointer could not be located' on startup?
- Why do I get the error 'LameXP.exe is not a valid Win32 application' on startup?
- Why do I get the error 'A device attached to the system is not functioning' on startup?
- Why do I get the error 'File ´tool_foobar.exe´ could not be locked!' on startup?
- How can I translate LameXP to my language or improve an existing translation?
- Where can I download the latest version of LameXP?
- Where can I submit bug reports or feature requests?
- What programming language is LameXP written in?
- Where can I find the LameXP source code?
- What are the prerequisites to build LameXP from the sources?

What is LameXP ???
LameXP is a graphical user-interface (front-end) for various of audio encoders: It allows you convert your
audio files from one audio format to another one in the most simple way. Despite its name, LameXP is NOT only
a front-end for the LAME encoder, but supports a wide range of output formats, including MP3, Ogg Vorbis,
AAC/MP4, FLAC, AC-3 and Wave Audio. The number of supported input formats is even bigger! Furthermore LameXP
does NOT only run on Windows XP, but also on Windows Vista, Windows 7 and many other operating systems.
As all the encoders and decoders used by LameXP are already "built-in" (with one exception), you do NOT need
to install any additional software, such as "Codecs", "Filters" or "Plug-ins", on your computer. Everything
works "out of the box"! You can even use LameXP as a "portable" application, e.g. run it from your USB stick.
Moreover LameXP was designed for batch processing. This means that you can convert a huge number of audio
files, e.g. a complete album or even your entire music collection, in a single step. And, as LameXP is able
to process several audio files in parallel, it takes full advantage of modern multi-core processors! However
LameXP is NOT only optimized for speed, it also provides excellent sound quality by using the most
sophisticated encoders available and by giving the user unrestricted control over all encoding parameters.
In addition to that, LameXP provides full support for metadata, including cover art. So when converting your
audio files, LameXP will retain existing meta tags. But there also is an easy-to-use editor for adding or
modifying metadata. LameXP supports Unicode for both, meta tags and filenames, so there won't be any problems
with "foreign" characters. And, thanks to our translators, the user-interface of LameXP is available in
multiple languages. Last but not least, LameXP supports a number of post-processing filters, including sample
rate conversion, normalization (gain), tone adjustment and downmixing of multi-channel sources.
What platforms does LameXP run on?
LameXP is currently being developed on the following platforms:

- Microsoft Windows 7 (32-Bit and 64-Bit editions) with Service Pack 1
- Microsoft Windows XP with Service Pack 3

The following platforms should work, but aren't tested extensively:

- Microsoft Windows Vista (32-Bit and 64-Bit editions) with Service Pack 2
- Microsoft Windows XP x64 Edition with Service Pack 2
- Microsoft Windows 2000 with Service Pack 4
- Microsoft Windows Server 2008 with Service Pack 2
- Microsoft Windows Server 2008 R2 with Service Pack 1
- GNU/Linux using Wine v1.2.2+ (native Linux version planned)

The following "legacy" platforms are NOT supported any longer:

- Microsoft Windows NT 4.0
- Microsoft Windows Millennium Edition (*)
- Microsoft Windows 98 (*)
- Microsoft Windows 95

(*) Some people claim that LameXP can run on Windows 98 SE or Millennium Edition with the help of KernelEx.
What output formats (encoders) does LameXP support?
Currently the following output formats are supported by LameXP:

- MPEG Audio-Layer III (MP3), using the LAME encoder [built-in]
- Ogg Vorbis, using the OggEnc2/libvorbis encoder with aoTuV [built-in]
- Advanced Audio Coding (AAC), using Nero AAC encoder [separate download!]
- ATSC A/52 (aka "AC-3"), using the Aften encoder [built-in]
- Free Lossless Audio Codec (FLAC) [built-in]
- Uncompressed PCM / Waveform Audio File (WAV/RIFF)

What input formats (decoders) does LameXP support?
Currently the following input formats are supported by LameXP:

- AC-3 (ATSC A/52), using Valib decoder [built-in]
- Advanced Audio Coding (AAC), using FAAD decoder [built-in]
- Apple Lossless (ALAC)
- Apple/SGI AIFF
- Avisynth, audio only [requires Avisynth 2.5.x to be installed]
- Digital Theater System, using Valib decoder [built-in]
- Free Lossless Audio Codec (FLAC)
- Microsoft ADPCM
- Monkey's Audio (APE)
- MPEG Audio-Layer I (MP1), using mpg123 decoder [built-in]
- MPEG Audio-Layer II (MP2), using mpg123 decoder [built-in]
- MPEG Audio-Layer III (MP3), using mpg123 decoder [built-in]
- Musepack
- Shorten
- Speex
- Sun/NeXT Au
- The True Audio (TTA)
- Uncompressed PCM / Waveform Audio File (WAV/RIFF)
- WavPack Hybrid Lossless Audio
- Windows Media Audio (WMA), using wma2wav [built-in]

My anti-virus program raises an alarm when I try to download/install/launch LameXP. Why is that?
Occasionally your anti-virus program may mistakenly(!) detect "malware" (e.g. virus, trojan horse or worm) in
LameXP. This is called a "false positive" and the file is actually innocent/clean. It's an error in your
specific anti-virus software. So in case you encounter such problems, please use http://www.virustotal.com/,
http://www.virscan.org/ or a similar online-service to check the file in question with multiple(!) anti-virus
engines. Especially take care with scan results like "suspicious", "generic" or "packed", as such results are
NOT confirmed malware detections and in almost any case they can be ignored/discarded safely!
Apparently anti-virus programs tend to suspect installers or uninstallers created with NSIS. Furthermore some
anti-virus programs blindly suspect all "packed" executables of being malware. Obviously that is a stupid
generalization, so please ignore these nasty warnings! Last but not least: Always keep in mind that LameXP is
OpenSource software. If you don't trust the provided pre-compiled binaries, simply download the source codes,
search the code for "malicious" functions (you won't find any!) and then compile your own binary.
Conclusion:

- IN CASE YOU HAVE A CONFIRMED INFECTION, RE-DOWNLOAD THE FILE FROM ONE OF THE *OFFICIAL* MIRRORS!
- DO NOT SEND US VIRUS REPORTS, UNLESS YOU HAVE VERIFIED THE INFECTION WITH MULTIPLE ANTI-VIRUS ENGINES!
- PLEASE REPORT "FALSE POSITIVES" TO THE DEVELOPER OF YOUR ANTI-VIRUS SOFTWARE. WE CANNOT FIX THEM!

Who created LameXP?
LameXP was written from the scratch by LoRd_MuldeR <MuldeR2@GMX.de>. However it has to be noted that LameXP
uses a number of third-party tools, which have been created by the individual authors. Moreover various
people have contributed LameXP translations. Please see the "About" dialog for details! Also please do NOT
send e-mail to LoRd_MuldeR directly, if the problem or suggestion can be discussed in the support forums!
More OpenSource projects by LoRd_MuldeR available at http://mulder.at.gg/ or http://mulder.googlecode.com/.
What license is LameXP released under?
LameXP is free software. You can redistribute it and/or modify it under the terms of the GNU General Public
License (GPL) as published by the Free Software Foundation; either version 2 of the License, or (at your
option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The licenses for most software and other practical works are designed to take away your freedom to share and
change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share
and change all versions of a program - to make sure it remains free software for all its users.
Please see the GNU General Public License for more details!
Do I have to pay for LameXP? / How can I donate to the authors of LameXP?
LameXP is free software, so you may use it for free and for any purpose. Moreover the authors of LameXP
currently do NOT accept any donations. Therefore you should NOT pay or donate any money in order to obtain
LameXP! However it was brought to our attention that some dubious third-party web-sites offer "payed"
downloads of LameXP and/or include Adware into the LameXP download. We do NOT cooperate with any of these
sites. So if you pay for the LameXP download, the authors of LameXP will not get a single cent! Instead you
should save your money and download LameXP from the official mirrors (see below), which is 100% free.
If you want to support the development of LameXP, you can do so by contributing translations or code :-)
MP3, AAC or Vorbis - What is the best compressed audio format?
This question can NOT be answered in general. The best audio format is the format that works best for you!
Having said that, there are a few things to consider. First of all: All output formats supported by LameXP,
except for FLAC and PCM/Wave, use a lossy(!) kind of compression. That applies to MP3 and AAC as well as
Vorbis. Consequently with these formats a certain quality loss is unavoidable when re-encoding/converting, no
matter what. This is called "generation loss". Nonetheless all three formats (MP3, AAC and Vorbis) are able
to retain an EXCELLENT audio quality, given that the chosen bitrate (quality level) is sufficient/reasonable.
Secondly, the audio quality does not depend on the audio format and the chosen bitrate only. It also depends
greatly on the encoder software that is being used. LameXP uses the LAME MP3 encoder, probably the most
sophisticated MP3 encoder out there, the Nero AAC encoder, one of the best AAC encoders available, and the
aoTuV Vorbis encoder, an improved/tuned version of the reference Vorbis encoder. Consequently LameXP provides
you with state-of-the-art encoders, which ensures maximum encoding quality for ALL supported output formats.
Another thing to consider is hardware support, i.e. support on stand-alone and portable players. The MP3
format still has the best support on hardware players, but support for AAC/MP4 has become widespread too -
especially on portable devices. Hardware support for Vorbis is more limited, but growing. So if portability
is a priority, then MP3 is a good choice. However the MP3 format does NOT support multi-channel audio, which
means that you will have to use AAC or Vorbis for multi-channel files. Last but not least, if you prefer a
truly "open" and patent-free audio format, then Vorbis will be the format of your choice!
Another resource you might find interesting are Sebastian's Public Listening Tests:

- MP3 listening test @ 128 kbps, includes MP3 encoders (like LAME) only
- Multiformat listening test @ 128 kbps, includes LAME MP3, Vorbis AoTuV and others
- Multiformat listening test @ 64 kbps, includes Vorbis AoTuV, Nero AAC and others

(However be aware that some of the results from these listening tests are not up-to-date anymore)
What is the difference between the CBR, VBR and ABR rate control modes?
CBR means "constant bitrate" and, as the name implies, CBR mode allocates the bits at a constant rate. This
means that each part of the audio will get the same amount of bits, regardless of its content. Obviously this
will waste bits in parts of the audio that are easy to compress. At the same time the quality of parts of the
audio that are hard to compress will be degraded. Consequently using CBR mode is NOT a very good idea, unless
you really have to for some reason. However CBR mode has the advantage that the final size of the compressed
file is perfectly predictable. The resulting file size is defined simply as "duration × fixed bitrate".
VBR means "variable bitrate" and, in contrast to CBR mode, VBR mode allows the bitrate to vary/fluctuate.
Thus the VBR mode enables the encoder to adapt the bitrate with respect to the content of the audio. Parts of
the audio that are easy to compress will get a lower bitrate in order to safe bits. Parts of the audio that
are hard to compress will get a higher bitrate in order to avoid quality degradation. Or in other words: VBR
mode "moves" the bits to the locations where they are actually needed. Therefore the VBR mode achieves a much
better compression efficiency than the CBR mode, i.e. with VBR mode you can get a better quality at the same
file size, or the same quality at a smaller file size (compared to CBR mode). One disadvantage of the VBR
mode is, however, that the final size of the compressed file can NOT be predicted. The resulting file size is
defined as "duration × average bitrate", but the average bitrate can NOT be known beforehand. That's
because the average bitrate for a specific VBR quality level can vary greatly, depending solely on the
complexity of the individual audio. Nonetheless VBR mode generally should be the preferred encoding mode.
ABR means "average bitrate". You can think of ABR mode as a compromise between the CBR and VBR mode. With ABR
mode the bitrate is allowed to vary/fluctuate, similar to VBR mode. However the ABR mode doesn't work with a
predefined/fixed quality level, as VBR mode does. Instead in ABR mode the encoder will continuously re-adjust
the quality level in order to hit the target average(!) bitrate. You can also think of ABR mode as a mode
that pre-allocates the bits in a CBR-like fashion and then redistributes the bits within a local neighborhood
as needed. Thus the ABR mode combines advantages of CBR mode (predictability) and VBR mode (good quality).
The final size of the encoded file is still defined as "duration × average bitrate", but with ABR mode the
average bitrate *is* known beforehand. So if you need to hit a specific file size, ABR mode is the solution.
Hint: The Nero AAC encoder supports a variant of the ABR mode, the so-called "2-Pass" mode. That mode scans
through the entire file once (first pass) before the actual encoding is performed (second pass). This way the
encoder is able to distribute the bits over the entire file and still hit the desired target average bitrate.
It should be obvious that the advantages of the "2-Pass" mode come at the cost of increased encoding time.
Hint: A common mistake done by people comparing rate control modes is choosing a bitrate that is too high. Of
course only files of an identical (average) bitrate can be compared by quality. But if that bitrate is chosen
too high, you won't be able to draw any conclusions from the test. That's because at a certain bitrate even
the CBR mode will retain excellent quality. In that situation VBR mode or ABR mode can't give an even better
quality for obvious reasons. But drawing the conclusion that there is no difference between CBR mode and the
VBR/ABR modes would be very wrong! The differences will become significant when using a reasonable bitrate.
Another mistake is starting with a low-quality source file and concluding that all modes perform equally bad.
Summary of rate control modes:

- Need to hit a specific fixed file size and still want to retain decent quality? ⇒ ABR mode
- Want to retain a certain level of quality and the file size doesn't matter that much? ⇒ VBR mode
- Avoid CBR mode by all means, unless there are crude restrictions that force you to use it!

How do I enable AAC/MP4/M4A output (encoding) in LameXP?
LameXP uses the Nero AAC Encoder for creating AAC/MP4/M4A files. The Nero AAC Encoder is available as a free
download. However the license doesn't allow redistribution! Therefore we can NOT ship the Nero encoder along
with LameXP. Instead you will have to obtain the Nero encoder as a separate download from the official "Nero
Digital" web-site. Currently you'll find the latest Nero AAC Encoder version at this location:

- http://www.nero.com/deu/downloads-nerodigital-nero-aac-codec.php
- http://ftp6.nero.com/tools/

After you have downloaded the Nero AAC Encoder as a ZIP file, you must "install" the encoder binaries, so
LameXP can use them. Simply unzip the files 'neroAacEnc.exe', 'neroAacDec.exe' as well as 'neroAacTag.exe' to
the same directory where your LameXP executable ('LameXP.exe') is located. For unzipping the ZIP file you can
use any suitable archiver, such as WinRAR or 7-Zip. Once the required Nero encoder binaries are located in
the LameXP directory, the AAC encoding option should be "enabled" on the next startup of LameXP.
Optionally LameXP also supports the FHG AAC Encoder now. Just like the Nero encoder, the FHG encoder can NOT
be redistributed along with LameXP. However the FHG AAC Encoder is included with Winamp v5.62, which is
available as a free download (you don't need to buy the "Pro" version!) from the official Winamp web-site at:

- http://www.winamp.com/media-player/
- http://download.nullsoft.com/winamp/client/winamp5621_full_emusic-7plus_all.exe

In order to enable the FHG AAC Encoder support you will also need the 'FHG AAC Encoder Add-in' for LameXP:

- http://www.megaupload.com/?d=GKY3RGPS
- http://www.rapidshare.com/files/1807225271/LameXP.fhgaacenc-addin.2011-08-22.zip
- http://www.mediafire.com/?pir8my4belb5krl
- http://www.zshare.net/download/93978586842938e6/
- http://www.gamefront.com/files/20703766/LameXP.fhgaacenc-addin.2011-08-22.zip
- http://www.easy-share.com/1917653443/LameXP.fhgaacenc-addin.2011-08-22.zip
- http://uploaded.to/file/0h0c7qf6

Please follow the install instructions that are included with the 'FHG AAC Encoder Add-in' download package!
Note that you do NOT need to install the Add-in, if you only want to use the Nero AAC Encoder.
As a third option, LameXP supports the QAAC encoder, i.e. the AAC encoder of QuickTime/iTunes. Just like the
other two AAC encoders, the QAAC encoder can NOT be redistributed along with LameXP. Thus if you want to use
the QAAC encoder, then you have to install QuickTime v7.7.1 (or newer). Alternatively iTunes v10.5 (or newer)
can be installed. Both, QuickTime and iTunes, can be downloaded for free from the official Apple web-site.
In addition to installing QuickTime/iTunes, you must download the QAAC encoder from this web-site. Then put
'qaac.exe' and 'libsoxrate.dll' as well as 'msvcr100.dll' and 'msvcp100.dll' into the same directory where
your LameXP executable ('LameXP.exe') is located. QAAC will then be "enabled" on the next startup of LameXP.
Is there a way to output ".m4a" or ".aac" files with LameXP?
LameXP uses the Nero AAC Encoder for AAC encoding. And the Nero encoder always puts the AAC streams into an
MP4 (MPEG-4 Part 14) container - in almost any case that is exactly what you want/need! The one and only
"correct" file extension for MP4 files is '.mp4'. However sometimes the "incorrect" file extension '.m4a' is
used to indicate "audio-only" MP4 files. Even worse: There are some buggy (hardware) players that will
recognize MP4 audio file only with the "incorrect" .m4a extension, but NOT with the "correct" .mp4 extension.
Of course LameXP will save your MP4 files with the "correct" .mp4 extension. But if you need your MP4 files
with an .m4a extension for some reason, you can simply rename(!) these files. Renaming isn't more or less
"incorrect" than saving the files as .m4a directly. After all, an MP4 file remains an MP4 file.
Warning: While renaming .mp4 files to .m4a (or vice versa) is safe, because both file extensions refer to MP4
files, you must NOT rename any .mp4/.m4a files to .aac (or the other way around). That's because the '.aac'
extension is used with "raw" AAC streams (ADTS format), i.e. AAC streams that are explicitly NOT stored in an
MP4 container! Unfortunately the Nero AAC encoder has NO option to output "raw" AAC streams. And usually you
don't need such streams. Still, if you really need to extract the "raw" AAC stream (.aac) from an MP4 file,
you can simply use MP4Box for that purpose. Please note that YAMB is a great MP4Box GUI created by Kurtnoise.
How do I enable WMA input (decoding) in LameXP?
LameXP now uses its "built-in" WMA decoder, thanks to 'wma2wav'. However it has to be noted that the WMA
decoder relies on the Windows Media Format Runtime. All supported versions of Microsoft Windows should have
the Windows Media Format Runtime installed as part of the Windows Media Player. But Wine does not! In case
you encounter problems with the WMA decoder, try installing the Windows Media Format Runtime manually. This
should also work under Wine. The 'N' or 'KN' editions of Windows 7 need the Windows Media Feature Pack.
How can I use LameXP as a "portable" application?
LameXP always is "portable", in the sense that the application works out of the box: LameXP does NOT require
any additional software, such as codecs, encoders, decoders or runtime libraries, and it will NOT install
anything of that kind on your local computer! All the third-party tools used by LameXP are already built-in.
There currently are two notable exceptions: The Nero AAC encoder and the WMA decoder cannot be redistributed
along with LameXP for legal reasons. Therefore these tools have to be obtained as separate downloads.
Having said that, LameXP stores its configuration file in the %LOCALAPPDATA% folder on the local computer.
That's because on a modern multi-user operating this is the only "correct" folder to store user-specific
configuration files. Also it's one of the few folders where an application is guaranteed to get write-access,
even when the application was launched by a "normal" (non-admin) user and did not request elevated rights.
Storing the configuration file in the "install" folder is antiquated and highly error-prone.
Still some users may want to store the configuration file in the same folder as the LameXP executable file,
e.g. when launching LameXP directly from their USB stick on different computers. For this purpose LameXP now
offers a "true" portable mode. You can enable that mode simply by renaming the LameXP executable file to
"LameXP-Portable.exe". But be aware: When running LameXP in the "portable" mode, the user(!) must ensure that
write-access is granted to the directory where the LameXP executable is located.
Is there a way to use custom tools (binaries) with LameXP instead of the "built-in" ones?
LameXP uses a number third-party tools. All of these tools are already "built-in" (with a few exceptions) and
thus it is NOT required to provide separate binaries. Usually it will NOT be necessary to replace any of
the "built-in" tools with a custom (user-provided) binary. If, however, you need to replace/update/downgrade
one of the binaries for a good reason, the recommended method is re-building LameXP from the sources. If you
don't know how to build LameXP from the sources, then you probably shouldn't be trying to replace the binary.
Having said that, there now is a more convenient method for using a custom tool version (binary) instead of
the "built-in" one. This method works WITHOUT re-building LameXP. However note that the following is intended
for testing and debugging purposes only! Also note that LameXP was specifically designed to work with the
"built-in" versions of the tools. It may not work properly or may not work at all with custom tool versions!
In order to replace a "built-in" binary, simply put the user-provided binary to the following location:

> <install_folder>\tools\<build_number>\<tool_name>.exe

If, for example, you want to replace 'lame.exe' in Build #666 of LameXP, you would put it to the this path:

> C:\Path to your LameXP install folder\tools\666\lame.exe

(It is intended that the '<build_number>' part of the path has to be adjusted with every update of LameXP)
The LameXP startup (splash screen) takes very long on my system. What can I do?
Starting up LameXP shouldn't take longer than approximately 10 seconds. However it was brought to our
attention that badly optimized anti-virus software can slow down the startup procedure a lot! On our test
system (Windows 7 running on an Intel Core2 Q6600 with 4 GB of RAM) starting up LameXP takes about 3 seconds
without an anti-virus software and about 6 seconds with the "real-time protection" of Microsoft Security
Essentials enabled. With other anti-virus software the startup was delayed up to 20 seconds and more!
So if you think that LameXP is starting up too slow on your system, you should temporarily(!) disable or
uninstall your current anti-virus program and try again. Usually it should be sufficient to disable only the
"real-time protection", "file system protection" or "guard" feature of your anti-virus software. If it turns
out that the startup is significantly(!) faster WITHOUT the anti-virus software, please report the problem to
the developer of the anti-virus software. And, if they don't fix the problem, switch to a better product!
Why is there a time limit in my version of LameXP?
LameXP is free software, released under the GPL. This means that you may use LameXP for free and without any
restrictions. More specifically, there is NO time limit in "Release" versions of LameXP! Nonetheless, "Beta"
(pre-release) versions of LameXP are limited to 30 days, starting at the build date. That's because these
"Beta" versions are intended for testing and evaluation only - they are NOT intended for productive use. Also
there will be frequent updates for "Beta" versions. Usually a new build will be available even before the
previous build has expired. So if you are not willing to update regularly, stick with the "Release" version.
Note: We are well aware that the expiration mechanism implemented in LameXP can be circumvented quite easily,
if you really want to. But implementing a "better" mechanism is pointless for an OpenSource software ;-)
Is there a way to hide/show the LameXP console ("DOS Box") window?
It is common for many people to run an alleged "DOS" program inside Windows, using a so-called "DOS Box".
Everything works fine. But when you try to run such a program in DOS, you get an ugly message "This program
cannot be run in DOS mode". What's wrong? Well, the affected program is NOT a "DOS" one. It is a Windows
Console program. "DOS" is NOT a synonym of Console. And "Windows" is NOT a synonym of GUI (Graphical User
Interface). Both, DOS and Windows programs, can be either Console or GUI. Actually Windows programs can be
Console *and* GUI at the same time, i.e. a Windows GUI program can have a Console attached.
LameXP is a GUI program for Windows. However it can have a "Debug" console attached. The purpose of this
console is providing users an insight into what's happening behind the scenes. While the console is mainly
intended for developers, it may be helpful for "regular" users too. Nonetheless you usually will NOT need the
console, unless something is going wrong. Therefore the LameXP console is disabled by default in all
"release" builds. You can enable the console by passing the "--console" command-line parameter, if required.
At the same time the console is enabled by default in all "beta" (pre-release) builds of LameXP. You can
still disable the console by passing the "--no-console" command-line parameter, if you don't like it.
WARNING: Any attempt to close the LameXP console window will kill the application immediately !!!
Why does application 'xyz' not open the Wave files created by LameXP?
Some of the decoders used in LameXP will insert an additional 'JUNK' chunk into the Wave/RIFF file, right
before the 'fmt' chunk ("Wave header"). There are technical reasons why this 'JUNK' chunk (placeholder) might
be needed at the beginning of the file. The 'JUNK' type is a standard RIFF type and, by definition of the
RIFF file format specification, any reading application must ignore/skip all 'JUNK' chunks it may encounter!
Evidently most reading applications do so and thus will correctly open the Wave file. Unfortunately it was
brought to our attention that there are a few broken(!) applications, which reject Wave/RIFF files with an
additional 'JUNK' chunk in front of the 'fmt' chunk. It seems that these applications make false assumptions
and expect the 'fmt' chunk to be located at a fixed position, rather than parsing the RIFF structure.
While it is evident that applications, which reject the Wave/RIFF file because of the extra 'JUNK' chunk, are
broken with respect to the RIFF specification and should be fixed by the respective author, there is an easy
workaround: Re-saving the Wave/RIFF file with SoX creates a file that even the broken applications seem to
accept, as SoX apparently doesn't insert any 'JUNK' chunks (although it would be free to do so!) Re-saving
your Wave file with SoX does NOT change the actual content at all, as long as no additional filters are used.
You can use a command-line like this:

> sox.exe "c:\some path\input.wav" "c:\some path\output.wav"

Why does LameXP run (only) N instances/threads in parallel on my computer?
LameXP is able to run multiple instances of the encoder or decoder in parallel. This is done in order to
maximize the CPU utilization on modern "multi-core" processors, which will significantly speed up the overall
encoding process. However be aware that LameXP uses file-based parallelization. This means that the maximum
number of instances that can run in parallel is limited by the number of files that are processed. If, for
example, you convert only a single file, then NO parallelization will be possible. If, instead, you convert
multiple files at once, then LameXP can run as many instances in parallel as files are being converted.
Within the aforementioned limitations, LameXP will selected the number of parallel instances based on the
number of available processors (CPU cores) on the individual system. However LameXP will NOT use a one-to-one
mapping! Instead a custom-made 'cubic spline' function is used to map the number of CPU cores to the maximum
number of instances. This function has the following properties: On systems with at most four CPU cores, the
maximum number of parallel instances will be identical to the number of CPU cores. On systems with eight CPU
cores, the maximum number of parallel instances is six. On systems with 16 cores, the maximum number of
parallel instances is eight. On systems with 32 cores, the maximum number of parallel instances is eleven.
And on systems with 64 cores, the maximum number of parallel instances is 16. 16 is the upper limit.
You may wonder why LameXP doesn't always create one instance for each CPU core. In theory, the more instances
we run in parallel, the more CPU cores can be utilized - until all CPU cores are busy and the overall CPU
usage approaches 100%. In reality, however, there are some "shared" resources on each computer. And, the more
instances we run in parallel, the more processes will be competing for these shared resources! Specifically,
the amount of main memory (RAM) is limited. Creating a huge number of instances in parallel can easily use up
all RAM, which will then cause the operating system to make heavy use of the page file. This can result in
HDD thrashing and hence may significantly hurt the overall performance! But even in case there is enough RAM
available on the system, each encoder or decoder instance needs to access the HDD quite frequently, e.g. for
reading from the input file and for writing to the output file. Thus running too many instances will generate
more I/O operations than the HDD can handle, which will result in an I/O bottleneck. In this situation the
processes will spend more and more time waiting for I/O operations to finish - rather then doing useful work.
In other words: There will always be some point at which creating even more instances will actually slow down
the overall process! On systems with many CPU cores, this point might be reached BEFORE all cores are busy.
Even on the Quadcore computer, which is used to develop/test LameXP and which runs "only" four instances in
parallel, we sporadically notice significant drops of the CPU usage, obviously caused by HDD overstressing.
If, however, you think that LameXP's choice of the number of parallel instances is too conservative, you may
overwrite the number of parallel instances on the "Advanced Options" tab - the upper limit is 16 for now.
Finally, note that LameXP only controls the number of instances that will run in parallel, but it does NOT
control how many threads an individual instance will create! Some encoders use "built-in" multi-threading and
thus a single encoder instance may create several threads - LameXP has no control over that.
Why does LameXP try to connect to the web-server at 'xyz.com' secretly?
LameXP does NOT connect to any web-server secretly! Of course the 'Auto Update' feature of LameXP unavoidably
has to connect to one of our update servers. However in no event LameXP will search for updates without your
agreement. Also LameXP will NOT send any personal information to the update server. It won't even send your
program version to the server. Instead the latest version number will be downloaded from the server first and
will then be compared to your current version number on the local computer. Moreover all information obtained
from the update server are protected with a digital signature (GnuPG) in order to prevent spoofing attacks.
Note: As LameXP is a non-profit project, we cannot afford a huge server infrastructure. Therefore the update
server may be overstrained or unavailable once in a while. As we need to be able to distinguish the case in
which our server is failing from the case in which your local internet connection has a problem, LameXP will
run a short connectivity test on your local system first. For this purpose LameXP contains a list of 64 known
hosts, taken (mostly) from the well-known Alexa 'top 500 sites on the web' listing. LameXP will assume that
your internet connection is working properly if a certain minimum number (currently four) of the known hosts
is reachable. That's also the reason why you may notice LameXP is trying to connect to a "random" web-site.
How can I force LameXP to create ID3 version 2 (ID3v2) tags?
The LAME encoder automatically chooses the proper ID3 tag version. By default it will create a version 1 tag,
if possible. Only if the information cannot be embedded into a version 1 tag (ID3v1), e.g. because the string
is too long or the string contains Unicode characters, a version 2 tag (ID3v2) will be added. This behavior
is advisable, because devices that support ID3v2 tags should also be able to read ID3v1 tags - but this
doesn't apply the other way around! Moreover embedding an ID3v1 and an ID3v2 tag at the same time, although
the information would have fit into a single ID3v1 tag, means an unnecessary redundancy!
If, however, you need to enforce the creation of an ID3v2 tag for some reason, you can use the "--add-id3v2"
parameter for that purpose. Simply add the parameter to the "Custom Encoder Parameters" for LAME.
That's what the LAME help says about ID3 tags:

> A version 2 tag will NOT be added unless one of the input fields
> won't fit in a version 1 tag (e.g. the title string is longer than 30
> characters), or the '--add-id3v2' or '--id3v2-only' options are used,
> or output is redirected to stdout.

Why does LameXP use LAME v3.99 rather than v3.98?
LAME v3.99 contains the latest improvements and bugfixes of the LAME mp3 encoder, but it's less tested than
the older 3.98 release series. The most important reason why LAME v3.99 is used in LameXP v4.xx is because
LameXP v4.xx focuses on proper Unicode support, but LAME v3.98 did NOT support Unicode filenames or Unicode
meta tags (through the CLI front-end, on the Windows platform). However LAME v3.99 finally does!
So far we have not encountered any noteworthy problems with LAME v3.99. If, however, you encounter a problem
with LAME v3.99, please report your finding to the LAME development team. Do NOT submit any LAME-specific bug
reports to the LameXP developers, as we generally cannot analyze/fix problems specific to the LAME encoder.
[UPDATE] LAME v3.99 Final was release on 2011-10-15, so that is the official "stable" version now! [/UPDATE]
Can LameXP be used to convert/extract tracks from an Audio CD?
LameXP can be used to convert audio files that have been extracted from an Audio CD, but it can NOT extract
or read the audio tracks from the Audio CD directly (yet). Consequently you will have to extract ("rip") the
audio tracks first, before you can convert them with LameXP. We recommend using the Exact Audio Copy software
for that purpose. When ripping tracks from an Audio CD you should always save the tracks as uncompressed Wave
files or as lossless FLAC files! This will avoid a quality loss during the extraction/ripping process.
Warning: The Windows operating system will show CDA files (such as "Track01.cda") on an Audio CD. These are
dummy/fake files! Actually an Audio CD does NOT contain a file system and thus there are NO files. There only
are audio tracks on an Audio CD. These audio tracks can be extracted as files (e.g. Wave Audio files) using a
ripping software and then the extracted files can be converted. At the same time any attempt to copy/convert
the '.cda' files directly is destined to fail (as the '.cda' files do NOT actually contain any audio data).
Why is the maximum normalization level limited to -0.5 dB?
When an analogue [audio] signal is converted to the digital domain, the signal is sampled at a fixed rate
(e.g. 44100 samples per second) and each "sample" value is stored with a fixed number of bits (e.g. 16 or 24
bits per sample). Consequently [uncompressed] digital audio is represented as a sequence of binary sample
values. The range of possible sample values is determined by the word size ("bits per sample"). For example
with a word size of 16 bit, the minimum value is −32768 and the maximum value is 32767 - assuming the values
are signed. The range of the sample values corresponds to the voltage range of the electrical input signal.
The maximum digital sample value (i.e. 32767 at 16-Bit) often is referred to as 0dBFS (0dB "full scale").
Performing a Normalization in the digital domain seems straightforward: We simply multiply all sample values
with the same factor. And we choose this factor in such a way that the highest sample value(s) in the track
will become exactly 0dBFS after the normalization has been performed. However one needs to be aware that when
playing back the digital audio track, it needs to be converted back to an analogue signal. The D/A converter
will convert each sample from its binary representation to the corresponding voltage. Then a "reconstruction"
filter will be applied in order to recover a continuous signal from these individual voltages. And for the
reconstructed analogue signal it is possible to have voltages that are higher than the highest digital sample
in the audio track! This is illustrated in the following image (samples are represented as tiny squares):
Consequently normalizing the sample values to 0dBFS is NOT a very good idea, as this may very well result in
a reconstructed analogue signal which exceeds(!) 0dBFS. And, as the analogue parts of the playback equipment
generally are NOT prepared for +0dBFS voltages, this may cause problems, such as annoying distortions!
The help document of a well-known audio editing software contains the following advice:

> If you're planning to put normalized audio on CD, you might want to normalize the waveforms to
> no more than 96% [-0.36 dB] as some audio compact disc players have problems accurately reproducing
> bits that have been processed to 100% (maximum) amplitude [0dBFS].

For details please refer to the following article:

- http://www.audioholics.com/...issues-with-0dbfs-levels-on-digital-audio-playback-systems

What do the different 'Equalization' modes do?
The "equalization" modes control how the normalization filter will deal with multi-channel input files, i.e.
everything that is not Mono. The "Peak Level" mode will normalize each channel according to its highest peak
(maximum sample value). This means that channels with a lower maximum sample value will be amplified stronger
than channels with a higher maximum sample value. Still all samples in a channel will be amplified by the
same factor, so dynamic range compression is NOT done. The "RMS Level" mode works similar to the previous
mode, but the channels are amplified according to their peak RMS level (maximum energy), instead of their
maximum sample value. This may be used to correct stereo imbalance caused by an imperfect record turntable
cartridge. Last but not least, the "None" mode will not euqalize the channels at all, i.e. all channles will
by amplified by the same factor. In the last mode, the highest peak of all(!) channels is used as threshold.
WARNING: The "None" mode appears to be broken with more than two channels! This is a bug in SoX.
Why does my encoded file come out slightly longer than the original?
Because of the way most (lossy) audio compressors work, a number of "silent" samples have to be prepended to
the first input sample. Also a number of silent samples may be appended to the last input sample. Obviously
these additional "padding" samples will make the encoded file longer than the original input. If the decoder
does not compensate for the padding samples that have been added by the encoder, the padding samples at the
beginning of the encoded file will cause a certain delay/shift, compared to the (uncompressed) original file.
Another effect is that there will be a "gap" between the files, when playing multiple files in sequence.
It has to be noted that the padding is an inherent property of the audio compressor that can not be avoided.
But, as mentioned before, the padding samples can be removed by the decoder. In that case, the decoded output
will have the exactly same length (in samples) as the original file. However this can only be done, if the
decoder is able to determine the exact number of padding samples that had been added. While the Vorbis audio
format stores the number of padding samples in the stream and thus any compliant decoder will remove them,
the MP3 and AAC audio formats do NOT define an "official" way to store the the number of padding samples!
Nonetheless, the LAME MP3 encoder, which is used by LameXP, uses its own "non-standard" way to indicate the
exact number of padding samples. This is done by adding a so-called "LAME header" to the MP3 file. Hence MP3
decoders, which recognize the LAME header, will be able to remove the padding samples. This feature often is
referred to as "gapless" decoding/playback. The 'mpg123' decoder, which is used by LameXP, does support the
gapless decoding. This means that if you encode MP3 files with LameXP/LAME, then gapless decoding will be
possible. And if you decode these files with LameXP/mpg123 again, they will come out at the original length.
Still you have to be aware that NOT all MP3 decoders support the LAME header. So if you encode MP3 files with
LameXP and then decode them with an arbitrary MP3 decoder, they may come out at a "wrong" length. And there
is absoloutely nothing that LameXP could do about that! Furthermore, if you decode a MP3 file in LameXP that
has been created with some MP3 decoder which did not add a LAME header, then it is impossible to remove the
padding samples. That's because in this situation there is NO way to know the number of padding samples!
Some more info on this topic can be found here:

- http://en.wikipedia.org/wiki/Gapless_playback
- http://lame.sourceforge.net/tech-FAQ.txt
- Understanding FFT Overlap Processing Fundamental

Why is the Hibernation option disabled (greyed out) on my system?
In order to use "Hibernation", your system must support the S4 power saving mode (aka "Suspend-to-Disk") and
the hibernation file ("hiberfil.sys") must be enabled. If these conditions are not met, then the Hibernation
option will be disabled in LameXP, for obvious reasons. Note that on older versions of Windows you can enable
or disable the hibernation file in the "Power Options" dialog of the Control Panel (see here). On Windows 7
and probably also on Vista, you have to do this from the Windows command interpreter. First open an elevated
command prompt by typing "cmd" in the Startmenu (not "Run" dialog!) and when "cmd.exe" appears as suggestion,
then right-click on "cmd.exe" and choose "Run as administartor". After that you should see an "Administrator"
command prompt window. Here you can type "powercfg -h on" (without the quotation marks!) and press Enter to
enable the hibernation file. You can disable the hibernation file again by typing "powercfg -h off".
Note: The size of "hiberfil.sys" is equal to your RAM size and it always is located on the system partition!
Why do I get the error 'Executable doesn't support Windows compatibility mode' on startup?
LameXP was designed to run on all supported platforms natively (except for Linux/Wine). If you see this error
message, that's probably because your system is configured to run LameXP in 'compatibility mode', i.e. your
system will pretend an older OS version than is actually running. In Windows Explorer you can disable(!) the
compatibility mode by right-clicking on the 'LameXP.exe' file, choosing 'Properties' from the context menu,
switching to the 'Compatibility' tab and un-checking the 'Run this program in compatibility mode' option.
Why do I get the error 'Executable requires Windows 2000 or later' on startup?
Why do I get the error 'The procedure entry point <Something> could not be located' on startup?
Why do I get the error 'LameXP.exe is not a valid Win32 application' on startup?
You are trying to run LameXP on a platform that is NOT supported, such as Windows 95, Windows 98, Windows
Millennium Edition, Windows NT 4.0. There is nothing you can do about that, except for updating to a less
antiquated OS. Running an outdated and unsupported OS is a severe security risk anyway!
Note: This error can also occur, if your system has been configured to run LameXP in compatibility mode.
Why do I get the error 'A device attached to the system is not functioning' on startup?
This error message from the Windows operating system is somewhat misleading. It often appears together with
a second error message and it means that Windows was unable to load/execute the program file. There are
various reasons why this error might occur, but usually it indicates that you are trying to run LameXP or the
LameXP setup/update program on a platform that is NOT supported, such as Windows 95, Windows 98, Windows
Millennium Edition, Windows NT 4.0. There is nothing you can do about that, except for updating to a less
antiquated OS. Running an outdated and unsupported OS is a severe security risk anyway!
Why do I get the error 'File ´tool_foobar.exe´ could not be locked!' on startup?
This error indicates that LameXP was unable to open/read a required file - one that it just has extracted
itself. Generally this should never happen, but we have reports that some bogus "anti-vrius" software might
trigger this kind of errors. Of course there is nothing we can do on our side, if the error is induced by
proprietary third-party software (such as faulty "anti-virus" software). So please try to temporarily(!)
uninstall/disable your anti-virus software. If the problem goes away, you can be sure it was caused by the
anti-virus software. In that case report the bug to the support team of your anti-virus software as soon as
possible. Or, if they don't fix the bug (in due time), switch to a better anti-virus product!
See also:
My anti-virus program raises an alarm when I try to download/install/launch LameXP. Why is that?
How can I translate LameXP to my language or improve an existing translation?
Please see the guide for translators at:

- http://mulder.brhack.net/public/doc/lamexp_translate.html

Where can I download the latest version of LameXP?
The latest "official" release of LameXP can be found on the following mirrors:

- https://github.com/lordmulder/LameXP/downloads
- http://sourceforge.net/projects/lamexp/files/
- http://code.google.com/p/mulder/downloads/list

Where can I submit bug reports or feature requests?
The preferred place to report bugs or request new features is the LameXP thread at Doom9's Forum:

- http://forum.doom9.org/showthread.php?t=157726 (English)
- http://forum.gleitz.info/showthread.php?t=37956 (German)

Please do NOT send me E-Mail unless you really have to! I receive a LOT of E-Mail and your mail can get lost!
What programming language is LameXP written in?
While LameXP v3.xx and all earlier versions were written in Delphi/Pascal, starting with version 4.xx the
software has been re-written in the C++ programming language. LameXP v4.xx is based on the Qt cross-platform
application framework and offers full Unicode support. For the time being LameXP is Windows-only.
Where can I find the LameXP source code?
LameXP is developed using the Git revision control system. The LameXP Git repository is mirrored at:

- git://github.com/lordmulder/LameXP.git (Log)
- git://lamexp.git.sourceforge.net/gitroot/lamexp/lamexp (Log)
- git://gitorious.org/lamexp/lamexp.git (Log)

What are the prerequisites to build LameXP from the sources?
LameXP is currently being developed using the following build environment:

- Visual Studio 2010 with Service Pack 1, running on Windows 7 with Service Pack 1
- Desktop Qt v4.7.3 (MSVC 2008), included in Qt SDK v1.1
- Windows Platform SDK v7.1 (Windows SDK for Windows 7 and .NET Framework 4)
- The minimum supported Windows version is Windows XP with Service Pack 2

Also note the following hints:

- Run "qtenv2.bat" before launching Visual Studio in order to set up the Qt environment
- Visual Studio 2008 solution/project files are still provided for people targeting Windows 2000
- In order to make a "fully static" build of LameXP, you need to compile Qt as 'static' libraries
- The Windows Platform SDK v6.0A should work as well, but there may be a few limitations
- Support for the GNU Toolchain (GCC/MinGW + Make) is planned for a future version

In order to use the LameXP deployment scripts you need the following tools:

- 7-Zip - file archiver with a high compression ratio
- NSIS - Nullsoft Scriptable Install System (Unicode Version)
  - StdUtils plug-in
  - LockedList plug-in
  - Inetc plug-in
  - Aero plug-in
- UPX - the Ultimate Packer for eXecutables
- MPRESS - high-performance executable packer for PE32/PE32+
- GnuPG - the GNU Privacy Guard v1.4.x
- Copy 'buildenv.template.txt' to 'buildenv.txt' and edit the paths as needed!

Instructions to build Qt as 'static' libraries:

- Make sure Visual Studio 2010 and Strawberry Perl for Windows are installed
- Install the Qt SDK v1.1 and choose to install the Qt 4.7.3 Sources
- Open a new command window (cmd.exe)
- Add Strawberry Perl to your PATH (e.g. 'set PATH=C:\strawberry\perl\bin;%PATH%')
- Now run 'vcvarsall.bat' form your Visual C++ install directory - within the same console!
- Change the current directory to the Qt Sources path (e.g. 'C:\QtSDK\QtSources\4.7.3')
- Finally run 'configure.exe -release -static -ltcg <more options>' and wait for completion
- You can now open and build the solution files (e.g. 'src\corelib\QtCore.sln' in Visual Studio
- Make sure you select the "Release" configuration for your builds!
- It is also required to change "Code Generation ⇒ Runtime Library" to "/MT" for all projects!
- Libraries you need to build for LameXP include the following:
  - lib\qtmain.lib
  - lib\QtCore.lib
  - lib\QtGui.lib
  - lib\QtSvg.lib
  - lib\QtXml.lib
  - plugins\imageformats\qgif.lib
  - plugins\imageformats\qico.lib
  - plugins\imageformats\qsvg.lib
- Put the static *.lib files into the 'LameXP\etc\Prerequisites\qt4_static\lib' directory
- ImageFormat plugins go to 'LameXP\etc\Prerequisites\qt4_static\plugins\imageformats'

eof