This is FAudio, an XAudio reimplementation that focuses solely on developing fully accurate DirectX Audio runtime libraries for the FNA project, including XAudio2, X3DAudio, XAPO, and XACT3. Project Website: https://fna-xna.github.io/ License ------- FAudio is released under the zlib license. See LICENSE for details. About FAudio ------------ FAudio was written to be used for FNA's Audio/Media namespaces. We access this library via FAudio#, which you can find in the 'csharp/' directory. Dependencies ------------ FAudio depends solely on SDL 2.0.9 or newer. FAudio never explicitly uses the C runtime. Building FAudio --------------- For *nix platforms, use cmake. $ mkdir build/ $ cd build/ $ cmake ../ $ make For Windows, see the 'visualc/' directory. For Xbox One, see the 'visualc-winrt/' directory. For iOS/tvOS, see the 'Xcode-iOS/' directory. Unit tests ---------- FAudio includes a set of unit tests which document the behavior of XAudio2 and are to be run against FAudio to verify it has the same behavior. The tests are NOT built by default; set BUILD_TESTS=1 to build and then run the output with: $ ./faudio_tests To build a Windows executable to run the tests against XAudio2, use the provided Makefile. This requires mingw-w64 to build. $ cd tests/ $ make faudio_tests.exe # run faudio_tests.exe on a Windows box Found an issue? --------------- Issues and patches can be reported via GitHub: https://github.com/FNA-XNA/FAudio/issues
FAudio - Accuracy-focused XAudio reimplementation for open platforms
Overview
Comments
-
[WIP] Improved gstreamer support
This isn't quite ready to merge, but it's close. With this branch, I get good audio from Skyrim with gst-libav's WMA decoder. Further testing with games you were trying before is appreciated.
First commit is the WMA test I used to verify behavior with xaudio2. I don't think it's important to merge it, but I put it here if you want to run some tests. The important points I discovered are:
-WMA does allow skipping some of the start of the buffer (i.e. PlayBegin is respected).
-WMA does not allow looping arbitrarily. It always loops back to the start and plays to the end, no matter what you set the Loop variables to.
-Having incorrect
pDecodedPacketCumulativeBytes
values does not break decoding. It does limit the total decoded length to the last value, which is how these types of codecs often work (encode whole blocks and truncate the final block to get the right length).The 2nd commit is your unchanged gstreamer commit. We can merge things down when it's ready to go.
The 3rd commit fixes the build system so it builds correctly in Proton. I was having issues with it finding the gstreamer installation. I'm not very good with CMake, so I probably did this wrong. In particular, the
PkgConfig::
I think requires a later version of CMake than the CMakeList currently requires. Help here is appreciated.The 4th commit implements the loop behavior I mentioned above.
The final commit rewrites much of the gstreamer algorithm. I won't recap the whole algorithm, but here are some important points:
-WMA is a stateful decoder, so we can't just hop around with random access. We must decode sequentially.
-But, because FAudio requires some amount of random access (mostly that 2 sample "fuck it" quirk), I store both the current and previous decoded chunks. I think this is sufficient.
-We now reset the decoder when looping. I'm not sure whether this is correct, but it makes sense to me.
-We're now using
decodebin
to let gstreamer select the codec for us.-We limit the full amount of decoded samples to the last
pDecodedPacketCumulativeBytes
value, which I think matches native.-Instead of using the
pDecodedPacketCumulativeBytes
values we get from the application, we depend on the decoder to give us the actual block sizes, and seek based on that.There is one ugly hack that I wonder if you have a solution for. I store the actual decoded-samples values mentioned above in the
blockSizes
array, and use that for finding the current buffer requested by FAudio. But, we need to clear and re-size this array when we get a new buffer in. Currently I'm just using the value of the pointer to see if we get a new buffer incoming, but that feels super ugly. Is there some better way to tell this gstreamer code that we have a new buffer and should forget what we know about the old buffer? -
cmake: add cpp wrapper
tested with x86_64-mingw-w64 on Arch linux
but the Tools subdir won't build for me on mingw. And I don't know how to build the wine cpp wrappers under linux
-
F3DAudio "beta"
All the matrix computation cases are handled, including multi-channel emitters, REDIRECT_TO_LFE / ZERO_CENTER, cones and custom curves. Done some manual testing and everything was giving good values (with differences due to the fact that I lerp everywhere) and out of the right speakers, so it's a good candidate for a field test. Non-implemented features (LPF / Reverb) have a minimal implementation that sets values, so an uninitialized input structure wouldn't come out with garbage. As such it can be tested with the COM wrapper as well and nothing should blow up.
-
Fallout 4 (Proton/Steamplay 3.16) with built FAudio & FFMPEG support crashes after some specific occurences.
I don't know how to debug this, but I thought I'd make an issue report. Not used to github, so please excuse me for the lack of information.
Using latest steam/steamplay on Arch (Fully updated). Used commit 879.
Built FAudio with FFMPEG support and installed using install_fake_dlls to proper directories in the fallout directory (pfx).
Sound works, music works, voices works. Everything works. There's a bit of audio clipping while entering terminal, but that's another issue. I'm not a proffessional, but I can't hear the difference using FAudio and XAudio, so good work!
Anyway, when using fast travel or entering a sanctuary (in my case, the Castle) the game will freeze. It's not reproducible with XAudio. This happens every time, no matter how I try to enter. It seems there's a specific line I cross from one region over to another (In this case, the castle), and the text should show up "Now entering The Castle". On the same spot, the same pixel evel, the game will crash.
Thunder, etc. works with FAudio though, did not with XAudio (sound would dissapear).
Shooting a missile at a group of raiders/mutants/etc will sometimes freeze the game using FAudio (when there's too many sounds on screen it seems. Same as XAudio, except that XAudio would just dissapear. Using FAudio and the game freezes). This happens frequently.
Fast traveling. Whenever I use fast travel, the loading screen comes up (I have just tested it on a few locations...sanctuaries. Might just be sanctuary related) and it completes the loading. Just when it's about to change from loading screen to game screen, the game freezes. This happens every time.
No output in terminal. Just game executable removed.
-
F3DAUDIO_CALCULATE_REDIRECT_TO_LFE issue
https://github.com/FNA-XNA/FAudio/blob/f7a0ce7e84933ea4913ca130d74cd39e5c080259/src/F3DAudio.c#L1127
The ComputeEmitterChannelCoefficients function does not take into acount LFEDistanceCurve. Maybe this line should look like:
pMatrixCoefficients[ curConfig->LFSpeakerIdx * numSrcChannels + currentChannel ] += LFEattenuation;
The comment in CalculateMatrix function seems to be true
/* TODO: this could be skipped if the destination has no LFE */
:+1: It really skipped for none multi-channel emitters.. -
libav does not decode correct sample block size
I finally figured out what's causing all that racket with WMA/XMA streams. This one's for @aeikum (wrote the original FFmpeg work), @0x0ade (XMA), @GloriousEggroll (Warframe), and @JohanSmet (wrote the most recent FAudio FFmpeg work).
A quick overview of how the decoding system works: When a buffer is submitted we receive not just the data itself, but the amount of data we can get (measured in samples). So when we decode, we ask for exactly the number of samples we need based on the quantum size until the end, where the number will be a little bit smaller. In either case, the decoder always provides the exact number of samples we request because we always know how many samples are available without the decoder's assistance.
FFmpeg isn't playing by the rules. In particular, we're hitting this line which should never ever happen:
https://github.com/FNA-XNA/FAudio/blob/master/src/FAudio_ffmpeg.c#L382
Here's the quick version:
- Mixer asks for, say, 512 samples
- We read in from FFmpeg, filling the convert cache as needed
- FFmpeg gives us less than the total sample block size, but also claims we're out of samples
available
is 0, breakstodo
is less thansamples
, resulting in uninitialized memory at the end- R̫̘̜̕E̼͈̭̬̥A҉͔͙̪̞̘͈L̰ ̕G̜̳̱̯̱͈̰O̼̯͓̻͓͚O̢̼̥̮͍̝D̶ ͔̰̜͚͔S̭̗͚͈͞O͇̺̻̹̲͍U̝̦͕̺̳͍̺Ṋ̼̹̼̤D̫͈͉̹S̗̳̭͔̝̭̕
Eggroll has it in Warframe, I have it in Skyrim SE. We need to figure out how to make FFmpeg cooperate and actually give us all the samples. We can't leave without the full size, because then you just get skipping, which is more pleasant-sounding but still very wrong.
Anyone have any ideas? I'm not terribly familiar with FFmpeg so I don't know if there's a trick to making decoding consistent. Sadly it's not 100% consistent, but it's very easy to reproduce with those two games.
Not our bug - WMA -
Replace Makefile with CMake
I think enough cases have come up to consider replacing the Makefile... Typically I just write a handwritten Makefile because there's not much you're meant to do with the library, but FAudio has run into WAY more use cases than anything I've ever built before, so CMake is starting to make a little more sense now. There are many reasons for this, including easy Debug/Release configuration, a clear options list (FFmpeg, XNA_Song, etc), improving the utils/ builds, and if we can, integrating the cpp/ folder's builds.
Note that this is replacing ONLY the Makefiles. The VS/Xcode projects will stay as-is. (Maik, I'll still take the Android.mk if that's still useful)
I wrote up a basic file that covers the core sources, with a bunch of TODOs to fill in:
https://github.com/FNA-XNA/FAudio/tree/cmake
A bunch of people are involved, so here's a list so everyone has an idea of what's going on:
- Myself and @aeikum need this to work not just with Proton's build system, but with the needs of the various Linux distributions. If we're going to integrate FAudio into Wine, we need to make it easy for distros to package FAudio first. @GloriousEggroll has been working on the Proton build with FAudio's Makefile and has been hacking my build files to death, so we have a decent idea of what we need to fix to make that happen.
- @JohanSmet wrote the build system for the COM wrapper and Wine DLL; thankfully the two aren't wildly different but they do have some specific needs that have to be introduced just for those files somehow. @GloriousEggroll was playing with this a lot for Warframe, before we started looking at the Proton build.
- @cybik and @NeroBurner actually wrote their own CMake projects already, we just need to write a new CMakeLists.txt that covers the whole repo, not just the core FAudio sources.
As far as mandatory requirements go, we're stuck supporting Debian's criminally old CMake version, 3.7. Yes, it really is that old. Aside from this limitation, there aren't really any hard rules I can think of.
I'm currently stuck on the code side of things, but I know a lot of people were getting frustrated with my crappy old build system so I thought I'd open this up for anyone who's ready to throw it in the dumpster.
Checklist:
- [x] libFAudio
- [x] utils
- [x] tests
- [x] cpp (MinGW only)
- [x] FFmpeg
-
Bloodstained no longer starts with 19.09
OS:
Slackware64-current
FAudio: https://github.com/FNA-XNA/FAudio/commit/705f2cd5b399f1ed5e8cba310c999381705f3640 wine:4.15
alsa-lib:1.1.9
SDL:2.0.10
game:Bloodstained-1.05 (GOG version)
After I upgraded FAudio to
19.09
from19.08
I found that the gameBloodstained
no longer starts. I next confirmed that its still broken in the current master (https://github.com/FNA-XNA/FAudio/commit/705f2cd5b399f1ed5e8cba310c999381705f3640) and then bisected the issue.464050b54b977bfbc5b4004257c4d547de50e4bd is the first bad commit commit 464050b54b977bfbc5b4004257c4d547de50e4bd Author: Ethan Lee <[email protected]> Date: Fri Aug 2 01:24:28 2019 -0400 Refactor PlatformInit/Quit to not use FAudio internals, add 1024_QUANTUM csharp/FAudio.cs | 20 ++++++++++---------- include/FAudio.h | 18 +++++++++--------- src/FAudio.c | 24 ++++++++++++++++++++++-- src/FAudio_internal.h | 14 ++++++++++++-- src/FAudio_platform_sdl2.c | 42 +++++++++++++++++++++++++++--------------- 5 files changed, 80 insertions(+), 38 deletions(-)
464050b54b977bfbc5b4004257c4d547de50e4bd
The game fails with this output, please let me know if there are any more info I can provide or patches I can try.
001b:err:plugplay:load_function_driver AddDevice failed for driver L"winebus", status 0xc0000002. 0038:fixme:ver:GetCurrentPackageId (0x5d5fda0 (nil)): stub 003c:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution. 003c:fixme:sync:SetWaitableTimerEx (00000000000001B4, 000000000671F160, 0, 0000000000000000, 0000000000000000, 0000000000000000, 32) semi-stub 002d:fixme:gameux:GameExplorerImpl_VerifyAccess (00000000000E3710, L"C:\\GOG Games\\Bloodstained Ritual of the Night\\BloodstainedRotN\\Binaries\\Win64\\BloodstainedRotN-Win64-Shipping.exe", 00000000005FEB58) 002d:fixme:win:DisableProcessWindowsGhosting : stub 002d:fixme:msctf:InputProcessorProfileMgr_GetActiveProfile (00000000000F9A70)->({34745c63-b2f0-4784-8b67-5e12c8701a31} 00000000005FF200) 002d:fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS) 002d:fixme:system:SystemParametersInfoW Unimplemented action: 53 (SPI_SETTOGGLEKEYS) 002d:fixme:system:SystemParametersInfoW Unimplemented action: 51 (SPI_SETFILTERKEYS) 002d:fixme:dxgi:DXGID3D10CreateDevice Ignoring flags 0x1. 002d:fixme:d3d11:d3d11_device_CheckFeatureSupport Returning fake threading support data. 002d:fixme:win:RegisterTouchWindow (0x4006c 00000000): stub 002d:fixme:vcruntime:__telemetry_main_invoke_trigger (0000000011C40000) 002d:fixme:vcruntime:__telemetry_main_invoke_trigger (000000001CB80000) 002d:fixme:vcruntime:__telemetry_main_invoke_trigger (0000000012830000) INFO: OpenAudioDevice failed: ALSA: Couldn't open audio device: Device or resource busy 0065:fixme:win:DisableProcessWindowsGhosting : stub 0065:fixme:msctf:InputProcessorProfileMgr_GetActiveProfile (00000000000711D0)->({34745c63-b2f0-4784-8b67-5e12c8701a31} 00000000005FF2B0) 0065:fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS) 0065:fixme:system:SystemParametersInfoW Unimplemented action: 53 (SPI_SETTOGGLEKEYS) 0065:fixme:system:SystemParametersInfoW Unimplemented action: 51 (SPI_SETFILTERKEYS) 0065:fixme:dxgi:DXGID3D10CreateDevice Ignoring flags 0x1. 0065:err:d3dcompiler:compile_shader HLSL shader parsing failed. 0065:err:d3dcompiler:compile_shader HLSL shader parsing failed. 0065:fixme:dwmapi:DwmIsCompositionEnabled 00000000005FF078 0065:fixme:win:RegisterTouchWindow (0x2009e 00000000): stub 0065:fixme:dwmapi:DwmSetWindowAttribute (000000000002009E, 2, 00000000005FF0DC, 4) stub 0009:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFFFFFFFFFA, 000000000060FCF0
-
Misaligned addresses for `pDSPSettings` in armhf/mono.
This causes a SIGSEGV in Bleed 2 (armhf, mono git e1002857) trying to deref the aliased pointers to the
ListenerVelocityComponent
andEmitterVelocityComponent
members ofpDSPSettings
inCalculateDoppler
.at <unknown> <0xffffffff> at FAudio:FACT3DCalculate <0x00043> at Microsoft.Xna.Framework.Audio.Cue:Apply3D <0x000db> at LoopingCue:set_LeftToRightPan <0x0021f> at LoopingCue:.ctor <0x0015f> at Bleed_II.IJCAudioEngine:CreateLoopingCue <0x001cb> <...>
I am unsure what mechanism causes this to happen, but a few things have successfuly worked around this crash:
- Setting
Pack = 4
on related classes. (ABI breakage :/) - Casting
listenerVelocityComponent
,emitterVelocityComponent
andDopplerFactor
tofloat __attribute__((aligned(1)))
. (Absolutely evil...) - Adding
[StructLayout(LayoutKind.Sequential, Pack = 4)]
toSoundBank
.
p.s.: The game still presents a ringing sound artifact during the first level - the same artifact is also reproduced on an unaltered build on AArch64 where the crash doesn't happen. Couldn't reproduce the artifact on amd64 tho, but also didn't investigate it yet.
- Setting
-
Multiple 32-bit games have stuttering issue
@JohanSmet Duplicating report from Wine Bugzilla
diff --git a/src/FAudioFX_reverb.c b/src/FAudioFX_reverb.c index bd58a06..b125b5f 100644 --- a/src/FAudioFX_reverb.c +++ b/src/FAudioFX_reverb.c @@ -101,7 +101,7 @@ static inline void DspDelay_Change(DspDelay *filter, float delay_ms) /* Length */ filter->delay = MsToSamples(delay_ms, filter->sampleRate); - filter->read_idx = (filter->write_idx - filter->delay + filter->capacity) % filter->capacity; + filter->read_idx = (filter->write_idx + filter->delay + filter->capacity) % filter->capacity; } static inline float DspDelay_Read(DspDelay *filter)
Patch tested with Sniper Elite 3, Resident Evil 0 HD Remaster, Homesick. Behaviour with non-affected games needs to be checked but it shouldn't be worse.
-
[F3DAudio] Bulletstorm: Full Clip Edition
Hi,
first of all thank you very much for bringing in a replacement for xact. I wanted to give it a try with Bulletstomr Full Clip Edition, as this game is having bad sound issue with the current wine builtin dll's and also using the native ones with wine does not work.
Using the mingw compiled Faudio dlls, i can get into the menu of the game and the sound is fine, i can lower/raise the different sound levels (music, environement and voices) in the sound menu of the game.
Trying to get into a mission i get the following error message:
Assertion failure at F3DAudioCheckCalculateParams (src/F3DAudio.c:342), triggered 1 time: 'pDSPSettings->DstChannelCount == ChannelCount && "Invalid channel count, DSP settings and speaker configuration must agree"'
After being able to klick on ignore, the following error message shows up:
Assertion failure at F3DAudioCalculate (src/F3DAudio.c:1502), triggered 1 time: '0 && "REVERB not implemented!"'
I can also press ignore here, but the game finally crashes after ignoring both issues 2 times
Many thanks ! Christian
-
Add GitHub Actions
Required:
- [x] Windows (MSVC)
- [x] Windows (MinGW)
- [x] Wine (MinGW with Win32 backend)
- [x] Linux (can just be ubuntu-latest)
- [x] macOS CMake (TODO: macOS Xcode)
- [ ] iOS/tvOS
Optional:
- [x] FreeBSD (take from SDL)
-
Assertion failed, no output channels
Assertion failed: voice->outputChannels > 0 && voice->outputChannels < 9, file FAudio\src\FAudio.c, line 1227
Running on Windows (v10.0.19044.0) X64 NetCore 6.0.5
FAudio built with the win32 (windows media feature pack) backend. User reports that disabling https://www.voicemod.net/ fixed the crashes. User experiences issue after random amount of playtime, not at startup.
I'm assuming that
outputChannels == 0
, will attempt to confirm.FAudio should run silently if there are no output channels rather than crash, looking for some pointers where to start on this.
On a related note, FAudio currently doesn't recover from
Bug WineAUDCLNT_E_DEVICE_INVALIDATED
which can be returned from mostIAudioClient
methods. Unfortunately the audio device is baked into the audio thread, so I'm not sure on a good place to implement the recovery process mentioned in https://docs.microsoft.com/en-us/windows/win32/coreaudio/recovering-from-an-invalid-device-error -
Update stb_vorbis
New version dropped yesterday:
https://github.com/nothings/stb
This update's kind of messy, we have a couple changes properly marked as FAudio-unique changes, but there were also a handful of bugfixes that still haven't made it upstream, so it may require a bit of care to update to the latest version while also retaining the bugfixes yet to be mainlined. It's still a pretty small update though, so it'll just take slightly longer than a typical manual merge.
-
Implement FAudioDebugConfiguration
From MSDN: https://docs.microsoft.com/en-us/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_debug_configuration
In addition to filling in one more XAudio2 feature, this is a legitimately useful for general FAudio debugging without having to step through a whole lot. It can be extremely verbose, however, so this should only be enabled for non-release builds (i.e.
!_DEBUG && !DEBUG && (GCC && !OPTIMIZED)
). Additionally, I would like to add the ability to enable features with environment variables, not just SetDebugConfiguration. This is useful for projects like Wine that won't have access to these entry points without added hackery. Each flag/bool should get a variable in some way.As for the implementation, this can be mapped to something like SDL_Log, though I don't know how complicated we'll need to get. I'm hoping we can make all these log types macros that are blanked in release builds, but that's totally speculation without having actually tried to write this at all.
It's a big ol checklist:
- [ ] TraceMask XAUDIO2_LOG_*
- [x] ERRORS
- [x] WARNINGS
- [x] INFO
- [x] DETAIL
- [x] API_CALLS
- [x] FUNC_CALLS
- [ ] TIMING
- [x] LOCKS
- [ ] MEMORY
- [ ] STREAMING
- [ ] BreakMask XAUDIO2_LOG_*
- [ ] ERRORS
- [ ] WARNINGS
- [x] LogThreadID
- [x] LogFileline
- [x] LogFunctionName
- [x] LogTiming
- [ ] TraceMask XAUDIO2_LOG_*
-
Implement CALCULATE_DELAY flag
For the first release of FAudio we focused on what FNA and XACT needed, but now that this is looking to go into a whole lot more games we should look at the rest of the X3DAudio features.
The stubs are here:
https://github.com/FNA-XNA/FAudio/blob/master/src/F3DAudio.c#L1538
Don't expect a whole lot of information out there - the MSDN docs are completely useless and many months of looking for existing research on this turned up completely and entirely empty. If you're working on this, it's because you REALLY know what you're doing (I certainly don't).
Checklist:
- [ ] F3DAUDIO_CALCULATE_DELAY
- [x] F3DAUDIO_CALCULATE_LPF_DIRECT
- [x] F3DAUDIO_CALCULATE_LPF_REVERB
- [x] F3DAUDIO_CALCULATE_REVERB
Releases(23.01)
-
23.01(Jan 1, 2023)
Fixes:
- Remove PlatformToolset lines from visualc-gdk project
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @hakusaro
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @Conan-Kudo
- @Eldirans
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @tgpholly
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
- Viridian Software
Source code(zip)
-
22.12(Dec 1, 2022)
Added GitHub Actions workflows for Linux, macOS, Windows, and FreeBSD. 22.12 is functionally identical to 22.11.
DEPLOYING SURPRISE IN 31 DAYS
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @hakusaro
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @Conan-Kudo
- @Eldirans
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @tgpholly
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.11(Nov 1, 2022)
New Features:
- Added a Visual Studio solution for GDK support
Fixes:
- Minor cleanup in the utils/ folder
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @hakusaro
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.10(Oct 1, 2022)
Added a quick comment to the SDL backend. Yup, that's it this month!
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.09.01(Sep 2, 2022)
Fix a regression where requesting a specific mastering voice format would return a format overwritten by device defaults
Source code(tar.gz)
Source code(zip)
-
22.09(Sep 1, 2022)
New Features:
- Update to SDL 2.24. This has been made a hard requirement, as it fixes/adds way too much to ignore:
- 2.1 and 4.1 audio is now supported
- On Windows, we now prioritize DirectSound over WASAPI
- The PulseAudio samples hack has been removed
- The non-power-of-two samples hack for Emscripten/OSS has also been removed
- GetDeviceDetails(0) now uses SDL_GetDefaultAudioInfo, obsoleting our hack
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
- Update to SDL 2.24. This has been made a hard requirement, as it fixes/adds way too much to ignore:
-
22.08(Aug 1, 2022)
New Features:
- FACT: Add support for WAVEBANKPREPARED notifications
Fixes:
- Included the matrix coefficient test program in matrix_defaults.inl, for developers that need to replicate it
- FXReverb: Fix a spec violation in Process() that could corrupt reverb output when enabled/disabled with precise timing
- FACT: Fill all fields for WAVESTOP notifications, avoiding uninitialized memory issues
- Win32:
- Set fallback dwChannelMask in device details for non-extensible formats
- Fix a possible crash when exiting certain threads
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.07(Jul 1, 2022)
Fixes:
- Fix 8-bit PCM conversion for AArch64 systems
- FAudioFX Reverb:
- For stereo-to-stereo processing, fix wet/dry mix on the left channel
- The effect is now properly initialized with default settings, SetParameters is no longer required
- SDL2:
- Work around certain device channel counts for an SDL bug
- Prepare to remove the PulseAudio buffer size workaround for SDL 2.24
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.06(Jun 1, 2022)
Fixes:
- Fixed a crash caused by MSADPCM streams with really large block sizes
- FACT: Stopping Cues now properly triggers
CUESTOP
notifications
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @lthrhx
- @mikesart
- @TerryCavanagh
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @desktopgoose
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @Pintea
- @rfht
- @sunwanxin213
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.05(May 1, 2022)
Updated the copyright year. Better late than never! There is no functional change compared to 22.04.
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @mikesart
- @TerryCavanagh
Sponsors:
- @bartwe
- @BrandonSchaefer
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @NoelFB
- @Pintea
- @rfht
- @xxxbxxx
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.04(Apr 1, 2022)
Fixes:
- CMake: Remove some uicommon files that no longer exist
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BombJovi
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @MikeSart
- @NoelFB
- @Pintea
- @rfht
- @Woflox
- @xxxbxxx
- Knockout Games
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.03(Mar 1, 2022)
Fixes:
- FACT: Clamp SoundBank Q factor to ignore the 0.67 case, for now
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @Pintea
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BombJovi
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @MikeSart
- @minirop
- @NoelFB
- @rfht
- @Woflox
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
22.02(Feb 1, 2022)
New Features:
- The Wine/Win32 backend is now considered stable.
- All Wine users should upgrade to 7.0 or newer
- All non-Wine users will (and should) continue to use the SDL backend
Removed Features:
- GStreamer support has been removed
- Wine/Win32 will continue to use MediaFoundation
- All other users should already be on patent/royalty-free codecs
Fixes:
- utils: Minor cleanup of uicommon
- csharp: Expose an IntPtr overload for stb_vorbis_get_samples_float_interleaved
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BombJovi
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @MikeSart
- @minirop
- @NoelFB
- @rfht
- @Woflox
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
- The Wine/Win32 backend is now considered stable.
-
22.01(Jan 1, 2022)
Continued work on the experimental Wine/Win32 platform backend
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @MikeSart
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @BombJovi
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @marpe
- @minirop
- @mushroomeo
- @NoelFB
- @rfht
- @Woflox
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
21.12(Dec 1, 2021)
Fixed a build error when WMA support is enabled
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @MikeSart
- @TerryCavanagh
- Thomas Happ Games
- Misfits Attic
Sponsors:
- @bartwe
- @bhewes
- @clementgallet
- @Conan-Kudo
- @dtaddis
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @marpe
- @minirop
- @mushroomeo
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
21.11(Nov 1, 2021)
Deprecated Features:
- GStreamer support is now deprecated.
- Wine users should migrate to 6.20 and newer, and everyone else should move to codecs that are not patent-encumbered.
- GStreamer support will be fully removed in the first release after Wine 7.0.
Removed Features:
- Removed the C++ wrapper. Use the headers/PE binaries found in Wine 6.20 and newer.
Fixes:
- Minor fixes and cleanups found by Coverity
- Dont assert on WMA buffer and FAUDIO_FORMAT_EXTENSIBLE type
- FACT: Send FACTNOTIFICATIONTYPE_CUESTOP Notification on Cue Stop
- Continued work on the experimental Wine/Win32 platform backend
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
- Thomas Happ Games
- Misfits Attic
Sponsors:
- @bartwe
- @bhewes
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
- GStreamer support is now deprecated.
-
21.10(Oct 1, 2021)
Fixes:
- Minor WinRT project update for latest SDL Git revision
- Continued work on the experimental Wine/Win32 platform backend
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @bhewes
- @clementgallet
- @Conan-Kudo
- @Eldirans
- @FrozenChameleon
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
21.09(Sep 1, 2021)
Fixes:
- FACT: Fix a crash from an uninitialized pointer when a WaveBank does not have a name table
- platform_sdl2: When querying the default device, ignore audio devices with way too many channels
- platform_win32: Minor Win32 buildfixes
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
- Thomas Happ Games
Sponsors:
- @bartwe
- @clementgallet
- @Eldirans
- @FrozenChameleon
- @GloriousEggroll
- @isaboll1
- @kiates
- @larsiusprime
- @lithiumtoast
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
- Lunar Ray Games
Source code(zip)
-
21.08(Aug 1, 2021)
New Features:
- FACT:
- Add support for WaveBank entry names
- When no XGS is provided, AudioEngine now assumes default settings when initialized
- FAudioFX Reverb now supports 5.1->5.1 processing
Fixes:
- Fix CMake config name to match standard conventions
- Minor code cleanup
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @GloriousEggroll
- @kiates
- @larsiusprime
- @lithiumtoast
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
- FACT:
-
21.07(Jul 1, 2021)
Added an experimental Win32 configuration and platform backend. This backend uses the Windows API and C runtime directly instead of using SDL, and is meant to be used exclusively with Wine's upcoming PE binary support for XAudio2. The expectation is that this will be the successor to using FAudio's native binaries with Wine and GStreamer, and it will also be replacing our cpp folder as the new binary-compatible Windows XAudio2 libraries. As a result, our timeline for this feature is as follows:
- Wine releases XAudio2 PE support
- Remove cpp folder, compile Wine's (far superior) XAudio2 wrappers instead
- Deprecate GStreamer support, only to be used with Wine 6.0.x
- Wine 7.0 release
- Remove GStreamer support, all users should upgrade to Wine 7
Aside from this new feature, 21.07 is identical to 21.06.
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @GloriousEggroll
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
- Wine releases XAudio2 PE support
-
21.06(Jun 1, 2021)
Fixes:
- FACT: RPC filter frequency should be calculated using the track sample rate, not 20KHz (as implied by the XACT tool)
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @GloriousEggroll
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @Thijxx
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
21.05(May 1, 2021)
Fixes:
- CMake: Add 'Requires' for GStreamer to the pkgconfig file
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @GloriousEggroll
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- @xxxbxxx
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
21.04(Apr 1, 2021)
New Features:
- Added support for SDL_GetAudioDeviceSpec, coming in a future SDL release
- FACT: Implemented accurate Fast/Slow/SinCos RPC curve types
- Added support for XMA2 audio, for Xbox 360 data
Fixes:
- Voice filters/effects should be processed even when SendCount is 0
- FACT:
- Fix parsing/calculation of filter Q factors
- Enforce
STOPPING
flag for fade-outs or RPC releases - Various fixes for parsing big-endian SoundBanks
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
21.03.05(Mar 6, 2021)
Fixes a regression that caused SoundBanks to no longer parse correctly
Source code(tar.gz)
Source code(zip)
-
21.03(Mar 1, 2021)
New Features:
- XACT:
- Implemented FACT_FLAG_MANAGEDATA
- Implemented the CUEPLAY and CUESTOP notification types
- Added support for XACT 3.0 content
- Added support for WaveBanks with endian-swapped PCM data
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
- XACT:
-
21.02(Feb 1, 2021)
New Features:
- XACT: All notification types with the
PERSIST
flag are now recorded
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @clementgallet
- @FrozenChameleon
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
- XACT: All notification types with the
-
21.01(Jan 1, 2021)
Fixes:
- Enforce SDL 2.0.9 or newer as a build requirement
- Micro-optimize byte swapping for XACT file parsing
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
20.12(Dec 1, 2020)
New Features:
- Added an x64 configuration to visualc
- CMake project now generates a pkgconfig file
Fixes:
- CMake:
- Fix compatibility with CMake 2.8.12
- GStreamer builds now explicitly check for >=1.9.2
- Initialize the subformat for GetDeviceFormat, fixes a ton of Ubisoft games
- Don't assert when FAudio_Initialize Flags includes FAUDIO_DEBUG_ENGINE
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
20.11(Nov 1, 2020)
Added a comment for an issue still in development. 20.11 is functionally identical to 20.10.
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
-
20.10(Oct 1, 2020)
New Features:
- XACT:
- Add support for WAVESTOP notifications
- Add support for engines without settings files (or empty settings files)
Fixes:
- Add power-of-two quantum fallback paths for *BSD and Emscripten
- Return a unique error code for audio engines with a bad platform ID
- Fix a deadlock in Wolfenstein: The Old Blood related to callbacks
- Fix a crash for streaming WaveBanks when calling Destroy
- stb_vorbis: Handle malloc(0) calls
Thanks to our GitHub Sponsors, including...
Super Sponsors:
- @danielcrenna
- @kg
- @TerryCavanagh
Sponsors:
- @acdimalev
- @bartwe
- @girasquid
- @kiates
- @larsiusprime
- @mikesart
- @minirop
- @NoelFB
- @rfht
- MagicalTimeBean
- Bit Kid Games
Source code(zip)
- XACT:
Owner
FNA Development Team
Mumble is an Open Source, low-latency, high quality voice chat software
Mumble is an Open Source, low-latency and high-quality voice-chat program written on top of Qt and Opus.
Free and open-source (GPL3+) VCVrack modules made by Allieway Audio
AlliewayAudio_Freebies Free and open source VCVrack modules made by Allieway Audio with love <3 Disclaimer: All direct clones or recreations were made
eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems
eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
projectM - cross-platform music visualization. Open-source and Milkdrop-compatible
projectM - cross-platform music visualization. Open-source and Milkdrop-compatible
Open source digital sound effects based on JACK audio connection kit.
Noiseworks Digital Audio Effects Repository Open source digital sound effects based on JACK audio connection kit. This repository is intended to provi
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.
PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music
AudMonkey - Free and open source audio editor
AudMonkey is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. AudMonkey is open source software licensed under GPL, version 2 or later.
Open-source audio fingerprint by MusicIP
README for the Open Fingerprint Architecture library "LIBOFA" Copyright (C) 2006, MusicIP Corporation 605 E. Huntington Dr. Suite 201, Monrovia CA 910
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
JUCE is an open-source cross-platform C++ application framework for creating high quality desktop and mobile applications, including VST, VST3, AU, AU
The open source framework for sample based instruments
HISE Build Status macOS: Build Status Windows: The open source framework for sample based instruments. HISE is a cross-platform open source audio appl
Deploy SCRFD, an efficient high accuracy face detection approach, in your web browser with ncnn and webassembly
ncnn-webassembly-scrfd open https://nihui.github.io/ncnn-webassembly-scrfd and enjoy build and deploy Install emscripten
Parsec Soda is a custom open-source game streaming app that integrates with Parsec API and is focused in Host experience.
Parsec Soda is a custom open-source game streaming app that integrates with Parsec API and is focused in Host experience.
An open source standard C library that includes useful functions && (Reimplementation of libc functions + own functions).
?? LIBFT-42 : Artistic view of LIBC: ?? HOW DOES IT FEEL HAVING YOUR OWN LIB: SUBJECT : ENGLISH PDF ℹ️ What is LIBFT : This project aims to code a C l
Open-source flog (Nintendo Switch's Golf NES easter egg) reimplementation
This repository is dedicated to flog, an easter egg present on Nintendo Switch consoles, containing various tools and information, which are the result of progressive reverse-engineering of the easter egg.
Benchmark framework of compute-in-memory based accelerators for deep neural network (inference engine focused)
DNN+NeuroSim V1.3 The DNN+NeuroSim framework was developed by Prof. Shimeng Yu's group (Georgia Institute of Technology). The model is made publicly a
An SQLite binding for node.js with built-in encryption, focused on simplicity and (async) performance
Description An SQLite (more accurately SQLite3MultipleCiphers) binding for node.js focused on simplicity and (async) performance. When dealing with en
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).
Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar
bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Growtopia internal cheat focused around enhancements and framework, that is loaded automatically. By: ama6nen
CREDITS TO AMA6NEN ORIGINAL REPO: https://github.com/ama6nen/INZERNAL INZERNAL INZERNAL has been discontinued for public usage and a private version t
An HTTPS beaconing Windows implant and multi-layered proxy C2 network designed for covert APT emulation focused offensive operations
WARFOX is a software-based HTTPS beaconing Windows implant that uses a multi-layered proxy network for C2 communications. This kit was designed to emulate covert APT offensive operations. This kit includes WARFOX (Windows implant), HIGHTOWER (Listening Post), and other tools to build configs and set up a proxy network.