THIS PROJECT WAS THE WORK OF 2 PEOPLE BUT I COULDN'T FORK THE ORIGINAL REPO DUE TO MY SCHOOL'S ORGANIZATION
- [REAPERtmm] (https://github.com/REAPERtmm)
AudioEngine is a C++ project developed using SFML for rendering and XAudio2 for sound playback.
The goal of this project was to create a parser for .wav files and a UI to modify the audio signal.
All the UI and rendering are done using SFML, and the audio processing only uses the standard C++ library.
XAudio2 was used to play all the sounds during this project.
Technologies used:
- C++20
- SFML 3.0.2
- XAudio2
- CMake for build management
- Visual Studio 2022 (or compatible)
- CMake >= 3.23
- Git
- Clone the repository:
git clone https://github.com/tiagzoc/AudioEngine
- Create a build directory named
solution:
mkdir solution
- Run
BUILD.batto configure the project:
.\BUILD.bat
Note: If you get the error "AudioEditor.sln not found", simply open the
.sln(or.slnx) file located in thesolutionfolder.
- If the project does not launch automatically, open the solution manually:
cd solution && .\AudioEditor.sln
- Set TestProject as
Set as Startup projectand run the script.
- There are 7 different projects in this AudioEngine. All projects named
TMM_ProjectNameare personal utility projects made by REAPERtmm. - The Application project is the main window displayed when launching the program and contains all the core classes.
- The AudioManip project is the core of the audio editing system and contains all audio processing functions, including the Fast Fourier Transform.
- The Render project contains all low-level classes used by the application, such as
Canvas,InfiniteCanvas, andTextbox. - AudioEngine allows you to edit multiple
.wavfiles and export the result as a.wavfile. - Audio edits can be applied either to the entire audio signal or to a selected portion, and can target one specific channel or all channels.
- The main window contains an infinite canvas to manage audio files, an information box for the selected audio, a list of available edits, and a master volume slider.
- How to set up a modular C++ project with multiple libraries and executables.
- How a
.wavfile is structured and how to parse it. - How to edit an audio file without corrupting it.
- How audio files are built with different channels and sample rates, and why they matter.
- What a Fast Fourier Transform is and how to apply it to an audio signal.
- How to create a robust UI using SFML.
- Implement multi-selection to apply edits to multiple files at once.
- Add a function to merge two different audio files.
- Allow users to name the exported file.
- Add keyboard shortcuts for editing functions.
- Create a node-based system to link different audio files in the infinite canvas.