This next post diverges a bit off the main topic of Adobe Au directly, but I believe it essential for audio engineers to have the best AAC/m4a Encode/Decode option available. Thankfully it’s available for XP!
I'm going to discuss using AAC For Windows XP but the links are applicable to any Windows system.
I also add that I do not use lossy audio compression except when engineering for a particular project, which requires it. IOW, for my own listening I use WavPack, which is Lossless compression. Other Lossless encode/decode apps are e.g. FLAC, TAK, Monkey’s, WMAL…
https://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison
************************************************
Nerd Stuff (Apologies to the original author(s) of the following; I can’t find where I got this.):
Advanced Audio Coding (AAC) is the successor format to MP3, and is defined in MPEG-4 part 3 (ISO/IEC 14496-3). It is often used within an MP4 container format;
for music the .m4a extension is customarily used.
Definitions
LC: Low Complexity
AAC-HE: High-Efficiency AAC Version 1
AAC-HEv2: High-Efficiency AAC Version 2
ALAC: Apple Lossless Audio Codec
LPCM: Lossy PCM
What is the difference between *.MP4 and *.M4A?
Besides the extension, absolutely nothing, Apple came up with extension to distinguish between files with Video and Audio (the MP4 extension) and files with Audio only (the M4A extension). As far as the internal structure of the file, nothing is different.
************************************************
I did a "Shootout" Between 5 AAC./m4a encoders Using media Player Classic as my Decoder:
ENCODERS
(†):
1-QAAC AAC
2-FHG AAC
3-FFMPEG libfdk AAC
4-NERO AAC
5-FFMPEG NATIVE AAC
The .wav files I used were 16bit-48kHz, 37 seconds long. Guitar Bass Drums Keyboards and Vocals. I used VBR (Variable Bit Rate) as opposed to CBR (Constant Bit Rate)
After doing A/B comparisons of the files I concluded IMHO that the Apple AAC (.m4a) codec using QAAC, is the best sounding. (Check other listening shootouts on the web. Many others have drawn the same conclusion).
So I'll show you the easiest and lightest install of QAAC that I know of. And show you the command lines I use. QAAC is A Command Line Program.
Keep in mind there is no GUI Front End (That I know of) at this time with the exception of Foobar 2000. If command line operations are not your thing, Foobar2000 is a GUI for QAAC (Though I have not tried it.) You will also need the foobar2000 Free Encoder Pack.
However even with Foobar2000 and (QAAC in the foobar2000 Free Encoder Pack), you'll be instructed to install apple i-Tunes or at the very least AppleApplicationSupport. Both are rather big installs for needing only 10 files. If you do choose to go with foobar2000/Free Encoder Pack you'll still want to download {2} below.
XP Users: Foobar2000 website: "Final for Windows XP & no-SSE CPU: v1.5.12"
I have gotten foobar2000_v1.6.11 to work on XP.
QAAC
As with MP3, the codec has mostly remained unchanged for a long time.
Quote from: nu774 (Author of QAAC) on 2024-12-22 04:03:38
“The AAC codec is supposed to have changed a couple of times in the sense that they produce non-identical bitstreams, but I doubt that there was any meaningful quality improvement since 2012.”
1} Get QAAC From Here:
https://github.com/nu774/qaac/releases
2} Get the needed Apple Application Support files here:
https://github.com/AnimMouse/QTFiles/releases
(Note: v12.9.2.6 is last to support XP)
QTfiles.7z
3} Create a directory (e.g. E:\Audio_Tools\QAAC)
Extract qaac_2.xx.zip files directly into Folder
qaac_2.85\x86\qaac.exe
qaac_2.85\x86\refalac.exe
qaac_2.85\x86\libsoxr.dll
qaac_2.85\x86\libsoxconvolver.dll
(Libsox is a sample rate converter held in high regard that can be used inside QAAC
I’ll be presenting an in-depth post about sample rate conversion (SRC/Dither) using two different programs, which I prefer, and have “Tweaked”, after this post.)
4} Extract QTfiles.7z files directly into same Folder
objc.dll
msvcr100.dll
msvcp100.dll
libicuuc.dll
libicuin.dll
libdispatch.dll
icudt55.dll
CoreFoundation.dll
CoreAudioToolbox.dll (
this is CoreAudioToolbox v7.10.9.0!)
ASL.dll
5} Create a command line shortcut:
->C:\Windows\Systm32\cmd.exe -> Right click, create shortcut
-> Cut/Paste shortcut in (e.g. E:\Audio_Tools\QAAC)
I customize this shortcut: (Right click -> properties)
Target: %SystemRoot%\system32\cmd.exe /k
(/k takes away (c) Microsoft etc.
Start in: "E:\Audio_Tools\qaac" (Your path may be different)
Colors Tab/Screen text, Yellow
I then create a blank text file to write my commands in. Then it’s just a copy/paste execution.
************************************************
Keeping in mind that I am using non-GUI Command Line:
Here are my default settings for (My opinion) the best quality AAC/m4a I can make in my studio:
When the QAAC prompt comes up it should look something like this:
E: \Audio_Tools\QAAC> or C:\Program Files\Audio_Tools\QAAC> etc.
I paste:
qaac --tvbr 127 -i "Song.wav" -o "Song_TVBR127_.m4a"
So my prompt looks like this:
E: \Audio_Tools\QAAC> qaac --tvbr 127 -i "Song.wav" -o "Song_TVBR127.m4a"
Definitions:
--tvbr = AAC True VBR mode
127 = Quality (Can be set 0-127)
-i = Assume WAV input and ignore the data chunk length.
-o = Specify output filename
So that is what I generally use for best quality. There are many other options as well. But I do all editing on the wave before encoding and do not use options like gain adjustment, limiter or lowpass (††) in QAAC.
I also do not use SRC (Sample Rate Conversion) or Dither in QAAC (Sox). If you encode anything besides 16bit/44.1kHz or 16bit/48kHz, Sox will take over and apply SRC and/or Dither as needed.
This (QAAC) is the program that made me dive into command line; being that it did not have too many command line options, and much of it was audio related, I took the plunge.
A good start is to read the “manual”
https://github.com/nu774/qaac/wiki
https://github-wiki-see.page/m/nu774/qaac/wiki_index
Command Line Options
https://github.com/nu774/qaac/wiki/Command-Line-Options
************************************************
Last but not least there must be a mention about an issue with the Apple library CoreAudioToolbox.dll. To quote the author nu774:
“It turned out that CoreAudioToolbox 7.9.8.x or greater (up to 7.10.9.0, the latest version at the moment) can produce glitches on the encoded result.
The issue is only found on AAC
CBR mode.
CoreAudioToolbox 7.9.7.x is OK, but you need very old iTunes installer for that version (it's released on 2012).”
https://github.com/nu774/qaac?tab=readme-ov-file#readme
The details are found here:
https://hydrogenaud.io/index.php/topic,85135.msg1056191.html#msg1056191
I keep a separate CoreAudioToolbox.dll v7.9.7.9 handy in case I want to use a CBR option in QAAC. Just swap CoreAudioToolbox v7.10.9.0 with CoreAudioToolbox v7.9.7.9
Last CoreAudioToolbox v7.9.x version is 7.9.7.9
To get your own copy of v7.9.7.9:
1} Download (Clean) iTunes 10.6.3.exe from archive (dot) Org
https://archive.org/download/Complete_iTunes_Archive/iTunes%20for%20Windows/32%20Bit/iTunes%2010/iTunes%2010.6.3.exe
2) Using 7-Zip (Recommended) or WinRAR, open iTunes 10.6.3.exe and extract AppleApplicationSupport.msi
3) Using 7-Zip or WinRAR, open AppleApplicationSupport.msi and extract CoreAudioToolbox.dll
CBR Bitrates (According to the AAC Spec)
8–529 kbit/s (stereo, 44.1 kHz)
8–576 kbit/s (stereo, 48 kHz)
For CBR I could do this
(After swapping CoreAudioToolbox v7.10.9.0 with v7.9.7.9!):
qaac --cbr 320 -q 2 -i "TEST.wav" -o "Song_CBR320_.m4a"
Definitions:
--cbr 320 = Constant bitrate of 320
-q 2 Quality level 2 (Highest)
-i = Assume WAV input and ignore the data chunk length.
-o = Specify output filename
************************************************
Again, if command line is not your thing, try the foobar2000 option. But I have not tried this. The following is what I would try:
1) Install Foobar2000
2) Download and install "foobar2000 Free Encoder Pack"
https://www.foobar2000.org/encoderpack
3) Place the 10 needed Apple Application Support files in the same directory as Foobar2000 QAAC.exe
Does QAAC work in Foobar2000 now? YES-> Done!
No:
Delete them
Create a directory here:
C:\Program Files\Common Files\Apple\Apple Application Support\
Add the 10 files here:
C:\Program Files\Common Files\Apple\Apple Application Support\ASL.dll
C:\Program Files\Common Files\Apple\Apple Application Support\CoreAudioToolbox.dll
C:\Program Files\Common Files\Apple\Apple Application Support\CoreFoundation.dll
C:\Program Files\Common Files\Apple\Apple Application Support\icudt55.dll
C:\Program Files\Common Files\Apple\Apple Application Support\libdispatch.dll
C:\Program Files\Common Files\Apple\Apple Application Support\libicuin.dll
C:\Program Files\Common Files\Apple\Apple Application Support\libicuuc.dll
C:\Program Files\Common Files\Apple\Apple Application Support\objc.dll
C:\Program Files\Common Files\Apple\Apple Application Support\msvcp100.dll
C:\Program Files\Common Files\Apple\Apple Application Support\msvcr100.dll
Does QAAC work in Foobar2000 now? YES-> Done!
No:
Create 2 more directories and put copies of the 10 files in them:
C:\Program Files\Common Files\Apple\Apple Application Support\CoreFoundation.resources\
C:\Program Files\Common Files\Apple\Apple Application Support\CoreMedia.resources\
Does QAAC work in Foobar2000 now? YES-> Done!
No:
I don't know… Sorry.
You'll have to research (Hydrogenaudio.com is the best place to start), or just install
AppleApplicationSupport.msi extracted from an itunes xx.xx.exe package with
7-Zip (Recommended)
https://ia600305.us.archive.org/6/items/Complete_iTunes_Archive/iTunes for Windows/
Last XP Version: iTunes 12.1.2.27
https://discussions.apple.com/thread/7113255?sortBy=rank
(Then overwrite the 10 files from
https://github.com/AnimMouse/QTFiles/releases that I already mentioned. (Extracted from the version 12.9.2.6 of iTunes)
And get that copy of CoreAudioToolbox v7.9.7.9 for CBR encoding that I mentioned.
************************************************
I’d also recommend using the QAAC decoder for studio listening [--play]
(Unless you have an Apple I-Tunes or Quicktime install) I do not know the default Foobar2000 AAC/m4a decoder though I’d hazard to guess it is QAAC.
************************************************
For Tagging, I use Tagscan 6.1.7 (Last XP version).
https://www.videohelp.com/download/tagscan-6.1.17.zip
I have also used kid3-3.8.7 (Last XP) for tagging.
************************************************
(†) Apologies to the original author(s) of the following; I can’t find where I got this.
Encoders
Apple's AAC Encoder (QAAC): Apple's proprietary AAC implementation, formerly part of QuickTime, is known to be one of the highest quality medium-bitrate CBR LC AAC encoders.
libfdk_aac: The Fraunhofer FDK AAC codec library
*Beware; it defaults to a low-pass filter of around 14kHz. If you want to preserve higher frequencies, use -cutoff 18000. Adjust the number to the upper frequency limit you prefer.
Nero AAC: A commercial implementation of both LC AAC and HE AAC. When it was new, it was generally perceived to have the highest quality VBR LC AAC implementation (QuickTime AAC outperformed it in CBR mode at 128kbps). The codec can also create HEv1/v2 AAC streams for extremely low bitrates and supports multi-channel surround sound encoding. Nero AAC is available for free. The Nero AAC encoder was based on the earlier PsyTEL AAC encoder by Ivan Dimkovic.
Native FFmpeg AAC encoder: The native FFmpeg AAC encoder
*Does not require an external library like the other AAC encoders
*Results are usually as good or better than libfdk_aac at 128kbps but will occasionally sound worse below 96kbps.
*Drawback is that this encoder does not support the AAC-HE profile
libfaac: Freeware Advanced Audio Coder.
*Notget as good results as with libfdk_aac.
Streaming and AAC Player Compatibility
*By default when encoding AAC files using libfdk_aac the metadata ('moov' atom) is written after the audio stream ('mdat' atom) at the end of the file. In order to enable streaming of the encoded file the 'moov' atom has to be moved before the 'mdat' atom. In addition some AAC player implementations have issues decoding such files.
*FFmpeg offers the option '-movflags +faststart' covering that functionality which can be used during encoding:
ffmpeg -i input.wav -c:a libfdk_aac -movflags +faststart output.m4a
Existing m4a files can be modified with the "qt-faststart' program which is distributed with FFmpeg in the 'tools' directory.
FAQs:
What is the difference between *.MP4 and *.M4A?
Besides the extension, absolutely nothing. Apple came up with extension to distiguish between files with Video and Audio (the MP4 extension) and files with Audio only (the M4A extension). As far as the internal structure of the file, nothing is different.
************************************************
(††) Regarding CoreAudioToolbox.dll, lowpass Cutoff (The cutoff frequency above which high frequency content rolls off, in hertz) the default value is
15000 Hz
https://developer.apple.com/documentation/avfaudio/avaudiounitdelay/lowpasscutoff
nu774 (QAAC Author) on Sep 26, 2020
“—lowpass (QAAC option) has nothing to do with the Apple encoder's bandwidth.
If you want to know encoder's bandwidth, just try encoding and inspect the output yourself.
There's no way to control the bandwidth of Apple's encoder.
--lowpass(QAAC option) will just filter signal
before passing it to the encoder. So, it is an
additional layer provided by qaac, and you can just make bandwidth narrower than the encoder's default.”
https://github.com/nu774/qaac/issues/70
Unfortunately, unlike some other encoders, I cannot find a lowpass option in the Apple encoder itself. That said I still prefer QAAC/Apple AAC. If you MUST have that lowpass option on the encoder, Fraunhofer libfdk-aac can extend the cutoff to 20k.
************************************************
Okay, you’re using XP (or any Windows) and you want Fraunhofer libfdk-aac …
I don’t often use it, but here it goes (You must use it inside ffmpeg):
1) Download FFMPEG 7.1 For XP (XP Mod, otherwise use the current ffmpeg & libfdk-aac builds for you O/S)
https://rwijnsma.home.xs4all.nl/files/ffmpeg/ffmpeg-7.1-2362-6aafe61-win32-static-xpmod-sse.7z
2) Download libfdk-aac-2.0.3 (XP Mod, otherwise use the current ffmpeg & libfdk-aac builds for you O/S)
https://rwijnsma.home.xs4all.nl/files/ffmpeg/libfdk-aac/libfdk-aac-2.0.3-win32-xpmod-sse.7z
(Note: The developer has stopped updating ffmpeg for XP)
Apologies to the original author(s) of the following; I can’t find where I got this.
-afterburner
“Afterburner is "a type of analysis by synthesis algorithm which increases the audio quality but also the required processing power." Fraunhofer recommends to always activate this feature.
Enable Afterburner. 0=Disabled, 1=Enabled” (recommended).
–cutoff
I (TMTGTR) have tested –cutoff, allowable cutoffs are between 173Hz and 20000Hz. Otherwise there’s an error message.
CBR Bitrates (According to the AAC Spec)
8–529 kbit/s (stereo, 44.1 kHz)
8–576 kbit/s (stereo, 48 kHz)
CBR
So a typical command I could use for a CBR 192kbps is:
ffmpeg -hide_banner -i audio.wav -c:a libfdk_aac -vbr 0 -cutoff 18000 -afterburner 1 -b:a 192k audio.m4a
Some bitrates encode exactly; while other bitrates (on 96 I get 101, on 128, I get 132) are decided by the program…
I think.
VBR
Target a
quality, rather than a specific bit rate. 1 is lowest quality and 5 is highest quality.
-vbr 0 - Setting VBR (variable bitrate) to 0 means libfdk_aac sets the maximum available CBR
(Available VBR Modes) Stereo
1 VBR 20 kbps LC, HE, HEv2
2 VBR 32 kbps LC, HE, HEv2
3 VBR 48 kbps LC, HE, HEv2
4 VBR 64 kbps LC
5 VBR 96 kbps LC
E.g.
ffmpeg -hide_banner -i audio.wav -c:a libfdk_aac -vbr 3 -cutoff 18000 -afterburner 1 output.m4a
ffmpeg -hide_banner -i audio.wav -c:a libfdk_aac -vbr 5 -cutoff 20000 -afterburner 1 output.m4a
All that said, I am very sketchy on AAC/m4a encoding. I know what works for me. I recommend you look at these pages to get a more complete understanding:
https://wiki.hydrogenaudio.org/index.php?title=Fraunhofer_FDK_AAC
https://trac.ffmpeg.org/wiki/Encode/AAC
https://en.wikipedia.org/wiki/Fraunhofer_FDK_AAC
A note on fhgaacenc.exe, which can be used in Foobar2000 with the Free Encoder pack:
As far as I can find, the two switches: -cutoff & -afterburner cannot be applied.
From Hydrogenaudio:
“The licensed Fraunhofer AAC codec included in Winamp (often called FhG AAC) is not the same as the FDK AAC codec. While they use the same approach, they are developed by different teams, and target different platforms. The FDK library is built around fixed-point math and originally targeted low-delay communication on mobile devices.”
That was a lot of work…

Next up will be a Sample Rate Conversion (SRC) and Dither Post that will be worth it to try IMHO.