Plugin Documentation

AudioForge
Runtime audio import, capture and export

Load MP3, WAV, FLAC, OGG Vorbis, OGG Opus, BINK and raw PCM at runtime, record from input devices, stream, transcode and export — all from Blueprints or C++.

v1.0.0
UE 4.27 & 5.8
Win64 (verified)
Category Audio
Alpha XP

Overview

AudioForge loads audio at runtime — from disk, from a byte buffer, from a downloaded file or from raw PCM — and hands you a USoundWave you can play immediately. No cooking step, no reimport, no editor round-trip.

It also records from input devices, streams audio in as it arrives, exports back out to file or buffer, transcodes between formats, and detects speech with a voice-activity detector.

  • Import MP3, WAV, FLAC, OGG Vorbis, OGG Opus, BINK and RAW PCM
  • Stream audio in progressively while it plays
  • Capture from any available audio input device
  • Export to file or buffer in any supported format
  • Transcode between formats without going through a sound wave
  • Analyse speech boundaries with the built-in VAD
  • Everything is exposed to Blueprints and C++, and every long operation is async

Requirements

RequirementDetails
Unreal Engine4.27 and 5.8 (verified clean on both)
ModulesAudioForge (Runtime), AudioForgeEditor (Editor)
DependenciesNone — self-contained
LanguageBlueprints and/or C++
PlatformsWin64 — built and verified. The code carries no Win64-only restriction, but other targets have not been verified by us.

Installation

  1. Copy the AudioForge folder into your project's Plugins/ directory (create it if it does not exist).
  2. C++ projects: right-click the .uprojectGenerate Visual Studio project files, then build. Blueprint-only projects: just launch the editor — you will be prompted to build the plugin once.
  3. Open Edit → Plugins, search for AudioForge, and confirm it is enabled. Restart the editor if prompted.
  4. To use it from C++, add "AudioForge" to PublicDependencyModuleNames in your module's .Build.cs.
Verifying the install Drop an Import Audio From File node into any Blueprint. If it resolves, the plugin is loaded and ready.

Quick start

Import a file and play it (Blueprint)

  1. Call Create AudioForge to get an importer object.
  2. Bind On Progress and On Result.
  3. Call Import Audio From File with a path and a format (leave it on Determine format automatically if unsure).
  4. In On Result, take the returned sound wave and feed it to a normal Play Sound 2D / audio component.

The same thing in C++

UAudioForgeLibrary* Importer = UAudioForgeLibrary::CreateAudioForge();

Importer->OnResultNative.AddWeakLambda(this,
    [](UAudioForgeLibrary*, UImportedSoundWave* Wave, ERuntimeImportStatus Status)
{
    if (Status == ERuntimeImportStatus::SuccessfulImport)
    {
        UGameplayStatics::PlaySound2D(GWorld, Wave);
    }
});

Importer->ImportAudioFromFile(TEXT("C:/Audio/track.mp3"), ERuntimeAudioFormat::Auto);
Keep a reference The importer and the resulting sound wave are UObjects. Store them in a UPROPERTY() (or a Blueprint variable) or the garbage collector may reclaim them mid-playback.

Supported formats

FormatImportExportNotes
MP3YesYesLAME tag aware, so seeking and duration are accurate
WAVYesYesPCM plus the common integer and float encodings
FLACYesYesLossless
OGG VorbisYesYesUses the engine's Vorbis codec
OGG OpusYesYesLow-latency speech and music
BINKYesYesUE 5.0 and newer only
RAW PCMYesYesint8, uint8, int16, uint16, int32, uint32, float32

Importing

NodeTypeDescription
Create AudioForgeCallableCreate an importer instance.
Import Audio From FileCallableImport from a path on disk.
Import Audio From BufferCallableImport from an in-memory byte array (downloads, pak data).
Import Audio From RAW File / BufferCallableImport raw PCM with an explicit layout.
Import Audio From Pre Imported SoundCallableImport from a PreImportedSoundAsset.
On ProgressEventPercentage callback during a long import.
On ResultEventFires with the sound wave and an import status.
Get Audio Header Info From File / BufferCallableRead duration, channels and sample rate without decoding.
Scan Directory For Audio FilesCallableEnumerate importable audio in a folder.
Get Audio Format / Get Audio FormatsPureDetect a format, or list everything supported.

Playback and sound waves

NodeTypeDescription
UImportedSoundWaveClassThe sound wave produced by an import; plays like any other.
UStreamingSoundWaveClassAppend audio while it is already playing.
UCapturableSoundWaveClassRecords from an audio input device.
USynthBasedSoundWaveClassProcedurally generated audio.
Set Looping / Set Volume / Set PitchCallableStandard playback controls.
Rewind Playback Time / Stop PlaybackCallableSeek or stop.
Get Playback Time / Get Playback PercentagePureCurrent position, in seconds or percent.
Get Duration Const / Get Sample Rate / Get Num Of ChannelsPureWave properties.
Is Playing / Is Playback FinishedPurePlayback state.
On Audio Playback FinishedEventFires when the wave reaches the end.
Set SubtitlesCallableAttach subtitle cues to the wave.
Release MemoryCallableFree the decoded PCM data early.

Recording and streaming

NodeTypeDescription
Create Capturable Sound WaveCallableMake a wave backed by an input device.
Get Available Audio Input DevicesCallableEnumerate microphones and line inputs.
Start Capture / Stop CaptureCallableBegin or end recording.
Is CapturingPureRecording state.
Create Streaming Sound WaveCallableMake a wave you can append to.
Append Audio Data From EncodedCallablePush encoded bytes as they arrive.
Append Audio Data From RAWCallablePush raw PCM as it arrives.
Pre Allocate Audio DataCallableReserve buffer space up front to avoid reallocation.

Exporting and transcoding

NodeTypeDescription
Export Sound Wave To File / BufferCallableWrite a wave out in any supported format.
Export Sound Wave To RAW File / BufferCallableWrite raw PCM.
Transcode Encoded Data From File / BufferCallableConvert format to format directly.
Transcode RAW Data From File / BufferCallableConvert between raw PCM layouts.
Resample Sound WaveCallableChange sample rate.
Mix Sound Wave ChannelsCallableChange channel count.
Reverse Audio BufferCallableReverse PCM data in place.
Duplicate Sound WaveCallableDeep-copy a wave.
Get PCM Buffer CopyCallableTake a copy of the decoded samples.

Voice activity detection

The VAD reports when speech starts and stops in a stream, so you can gate recording, drive push-to-talk, or trigger transcription only when someone is actually talking.

NodeTypeDescription
Toggle VADCallableEnable or disable detection on a wave.
Set VAD ModeCallableAggressiveness: QualityVeryAggressive.
Set Minimum Speech DurationCallableIgnore bursts shorter than this.
Set Silence DurationCallableSilence needed before speech is considered over.
Process VAD / Reset VADCallableRun detection manually, or clear its state.
On Speech Started / On Speech EndedEventFire at the boundaries of detected speech.

Configuration

Build-time switches live at the top of Source/AudioForge/AudioForge.Build.cs. Flip one and rebuild.

SwitchDefaultEffect
bEnableCaptureInputSupporttrueRecording from input devices. Windows and Mac.
bEnableVADSupporttrueVoice activity detection.
bEnableFileOperationSupporttrueImport/export that touches the filesystem.
bEnableMetaSoundSupportfalseMetaSounds nodes. Requires UE 5.3 or newer.
bEnableBinkSupportUE 5+BINK audio. Automatically off on 4.27.
bUseDrMp3falseUse dr_mp3 instead of minimp3 for MP3 decoding.
Runtime settings Project-level defaults live in Config/DefaultAudioForge.ini and appear under Project Settings.

Troubleshooting

SymptomCause and fix
Import returns a failure statusCheck the status value in On Result. FailedToReadAudioDataArray means the path or buffer was unreadable; InvalidAudioFormat means the data did not match the format you specified — try Determine format automatically.
Sound plays once then goes silentThe sound wave was garbage collected. Hold it in a UPROPERTY() or Blueprint variable.
No input devices listedCapture support is Windows/Mac only, and the OS must grant microphone permission to the editor or packaged app.
MetaSounds nodes missingbEnableMetaSoundSupport is false by default and requires UE 5.3+. Enable it and rebuild.
Long import hitches the game threadImport is already async — make sure you are reacting to On Result rather than blocking on the call.

Credits

© 2026 Alpha XPalphaxp.net. Built and verified for Unreal Engine 4.27 and 5.8.

All licence notices, including third-party components, ship at Source/ThirdParty/LICENSE-ThirdParty.txt.