🔊✂️AGSoft Audio Split Plus
Audio Split, but with fades, loudness matching, reverse, and looping
- audio
- audio_path
- audio
- duration_seconds
- duration_timecode
- file_size_mb
- sample_rate
- channels
🔊✂️AGSoft Audio Split Plus is what you grab when a plain cut isn't enough. It does everything the regular Audio Split does - cut a fragment by start_time / end_time, with fast (stream copy) or precise (re-encode) modes - and then layers on the stuff that turns a raw cut into something usable: fade in/out that kill the click at the cut points, loudness normalization, reverse, and loop.
The practical use case that sells it: cutting a tight loop out of a music track or a TTS phrase, de-clicking the edges so the loop doesn't pop, and repeating it N times. That's three nodes' worth of work in most packs, and here it's one node.
What's new over the plain split
fade_in/fade_out(0–60s) - ramps at the start and end of the fragment. The tooltip's honest about why: they remove the clicks you'd otherwise hear at hard cut points. 0 = off.loudnorm- normalizes the fragment to EBU R128 (integrated −16 LUFS). Useful when you're slicing samples out of different sources and want them to sit at the same level.reverse- plays the fragment backwards. One flag, instant psychedelia.loop(1–100) - repeats the fragment N times. 1 = no looping.
One mechanism detail worth knowing: when any effect is on, re-encoding is unavoidable - you can't stream-copy a reversed fragment. If format is source in that situation, the node re-encodes with the codec that matches the source extension, so you keep the same file type rather than defaulting to something random. Loop is also done as a two-pass operation: cut to a lossless temp file first, then loop and encode - which avoids the quality spiral you'd get looping a lossy encode repeatedly.
The same source gotcha, still true
Everything from the plain version carries over: if audio comes in through the audio AUDIO socket (rather than audio_path), it's already decoded PCM, so format=source yields a WAV - not your original MP3. And stream copy only really happens when the file is connected via audio_path and no effects are used. Any effect flips you into a re-encode, so don't expect the fast mode to stay lossless once you touch the fades.
Outputs
Same generous set as the plain split: audio_path (STRING, where it landed), audio (AUDIO, for chaining), plus duration_seconds, duration_timecode, file_size_mb, sample_rate, and channels.
Install
Part of the comfyui-AGSoft pack. ComfyUI Manager → search "comfyui-AGSoft" → Install → restart, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft
Restart and go. No models to download; it drives the bundled FFmpeg binary (or a system ffmpeg on PATH).
If you only ever need a clean, lossless, instant cut - no effects - the plain Audio Split is the lighter choice. The moment you want edges that don't pop, reversed audio, or a seamless loop, Plus earns its name.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| output_name | STRING | audio_split_plus.mp3 | Output filename. The extension is set by the effective output format. --- Имя итогового файла. Расширение задаётся итоговым форматом. |
| output_path | STRING | Output directory. If empty, ComfyUI/output is used. --- Папка сохранения. Если пусто, используется ComfyUI/output. | |
| audio_path | STRING | Path to the source audio file. Used only if audio input is not connected. TIP: for a true lossless stream copy (fast mode, format=source, no effects), connect the file here via audio_path rather than the AUDIO socket - the socket always delivers already-decoded PCM (WAV). --- Путь к исходному аудиофайлу. Используется, только если вход audio не подключен. СОВЕТ: для настоящего stream copy без потерь (режим fast, format=source, без эффектов) подключайте файл сюда через audio_path, а не через сокет AUDIO - сокет всегда передаёт уже декодированный PCM (WAV). | |
| start_time | FLOAT | 0.00–86400 | Fragment start (seconds). 0 = from the beginning. --- Начало фрагмента (в секундах). 0 = с начала. |
| end_time | FLOAT | 0.00–86400 | Fragment end (seconds). 0 = to the end of the audio. --- Конец фрагмента (в секундах). 0 = до конца аудио. |
| cut_mode | COMBO | fast | fast = stream copy (no re-encode, quick) when no effects and format=source. precise = re-encode (sample-accurate cut). Effects always force re-encode. --- fast = stream copy (без перекодировки, быстро), если нет эффектов и format=source. precise = перекодирование (точность до сэмпла). Эффекты всегда требуют перекодирования. |
| format | COMBO | source | Output format. source = keep the source format. mp3/wav/flac/ogg/m4a = convert. If effects are used, source format is re-encoded with the matching codec. NOTE: if the source is connected via the AUDIO socket (not audio_path), the audio is already decoded to PCM, so the 'source' format is WAV. To get MP3 etc., choose it explicitly or connect the file via audio_path for a true stream copy. --- Формат выхода. source = сохранить формат источника. mp3/wav/flac/ogg/m4a = конвертировать. При использовании эффектов формат источника перекодируется соответствующим кодеком. ВАЖНО: если источник подключён через сокет AUDIO (а не audio_path), аудио уже декодировано в PCM, поэтому форматом 'source' будет WAV. Чтобы получить MP3 и т.д., выберите его явно либо подключите файл через audio_path для настоящего stream copy. |
| bitrate | COMBO | 192k | Bitrate for lossy formats (mp3/ogg/m4a). Ignored for wav/flac. --- Битрейт для lossy-форматов (mp3/ogg/m4a). Игнорируется для wav/flac. |
| fade_in | FLOAT | 0.000–60 | Fade-in duration (seconds) at the fragment start. Removes clicks. 0 = off. --- Длительность нарастания (в секундах) в начале фрагмента. Убирает щелчки. 0 = выкл. |
| fade_out | FLOAT | 0.000–60 | Fade-out duration (seconds) at the fragment end. Removes clicks. 0 = off. --- Длительность затухания (в секундах) в конце фрагмента. Убирает щелчки. 0 = выкл. |
| reverse | COMBO | off | Reverse the fragment (play backwards). --- Реверс фрагмента (воспроизведение задом наперёд). |
| loudnorm | COMBO | off | Normalize loudness to EBU R128 standard (I=-16 LUFS). --- Нормализация громкости по стандарту EBU R128 (I=-16 LUFS). |
| loop | INT | 11–100 | Repeat the fragment N times. 1 = no loop. Uses a two-pass approach. --- Повторить фрагмент N раз. 1 = без loop. Использует двухпроходный подход. |
| audioopt | AUDIO | Optional source audio from ComfyUI. Has priority over audio_path. NOTE: audio via this socket is already decoded to PCM (WAV), so format=source will produce WAV. For a true lossless stream copy use audio_path instead. --- Опциональный исходный звук из ComfyUI. Имеет приоритет над audio_path. ВАЖНО: аудио через этот сокет уже декодировано в PCM (WAV), поэтому format=source даст WAV. Для настоящего stream copy без потерь используйте audio_path. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| audio_path | STRING | — |
| audio | AUDIO | — |
| duration_seconds | FLOAT | — |
| duration_timecode | STRING | — |
| file_size_mb | FLOAT | — |
| sample_rate | INT | — |
| channels | INT | — |