An open API service indexing awesome lists of open source software.

https://github.com/livetrack-x/directpipe

Real-time VST2/VST3 host for Windows Plugin chain processing, external control (hotkeys, MIDI, Stream Deck, WebSocket, HTTP API), fast preset switching
https://github.com/livetrack-x/directpipe

audio juce midi real-time-audio stream-deck streaming vst vst-host vst2 vst3 websocket windows

Last synced: 3 months ago
JSON representation

Real-time VST2/VST3 host for Windows Plugin chain processing, external control (hotkeys, MIDI, Stream Deck, WebSocket, HTTP API), fast preset switching

Awesome Lists containing this project

README

          


DirectPipe


Platform
Latest
C++17
License
VST



Stream Deck Marketplace


Buy Me a Coffee

๐Ÿ“– Quick Start ยท User Guide ยท FAQ ยท ๐Ÿ’ฌ Contact

## ๋‹ค์šด๋กœ๋“œ / Download

- **Latest (์ตœ์‹ )**: [v4.0.4 ๋‹ค์šด๋กœ๋“œ](https://github.com/LiveTrack-X/DirectPipe/releases/latest) โ€” ํฌ๋กœ์Šค ํ”Œ๋žซํผ / Cross-platform (Windows stable, macOS beta, Linux experimental)

> **์ฐธ๊ณ **: Windows๋Š” ์•ˆ์ •(Stable), macOS๋Š” ๋ฒ ํƒ€, Linux๋Š” ์‹คํ—˜์ ์ž…๋‹ˆ๋‹ค. macOS/Linux ๋นŒ๋“œ๋Š” ์‹ค๊ธฐ๊ธฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
> **Note**: Windows is stable, macOS is beta, Linux is experimental. macOS/Linux builds have limited real-hardware testing.


DirectPipe is a modern lightweight VST host for applying studio-quality effects to your microphone.

**์ŠคํŠธ๋ฆฌ๋จธ, ํŒŸ์บ์Šคํ„ฐ, ๊ฒŒ์ด๋จธ, ๋ณด์ด์Šค์ฑ— ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ** ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์‹ค์‹œ๊ฐ„ ๋งˆ์ดํฌ ํ”„๋กœ์„ธ์„œ.

USB ๋งˆ์ดํฌ์— ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, EQ, ์ปดํ”„๋ ˆ์„œ ๋“ฑ VST ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฑธ์–ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , Discord ยท Zoom ยท OBS ๋“ฑ์— ๊นจ๋—ํ•œ ์Œ์„ฑ์„ ๋ฐ”๋กœ ์ „๋‹ฌํ•œ๋‹ค. **VST ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ชจ๋ฅด์…”๋„ [Auto] ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ AI ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ + ์ž๋™ ๋ณผ๋ฅจ ์กฐ์ ˆ + ์ €์ฃผํŒŒ ํ•„ํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.** ๋ฐฉ์†ก ์ค‘์—๋„ Stream Deck ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์ดํŽ™ํŠธ ์ „ํ™˜, ๋ณผ๋ฅจ ์กฐ์ ˆ, ๋ฎคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฒŒ์ž„ ์ค‘์—๋Š” ๋‹จ์ถ•ํ‚ค๋กœ, MIDI ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. DAW ์—†์ด๋„ ์ „๋ฌธ์ ์ธ ๋งˆ์ดํฌ ์„ธํŒ…์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ , ์ƒํ™ฉ๋ณ„ ํ”„๋ฆฌ์…‹(A~E)์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

**Cross-platform real-time microphone processor for streamers, podcasters, gamers, and voice chat users.**

Apply VST plugins (noise removal, EQ, compressor, etc.) to your USB mic and deliver clean audio directly to Discord, Zoom, or OBS. **Don't know VST plugins? Just click the [Auto] button โ€” AI noise removal + auto volume leveling + low-cut filter can be added in one step.** Switch effects, adjust volume, and mute with a single Stream Deck button while live โ€” or use hotkeys during gameplay, MIDI controllers for hands-on mixing. Set up a professional mic chain without a DAW, and switch quickly between situation presets (A-E).

> **Platform support**: Windows (WASAPI/ASIO), macOS (CoreAudio), Linux (ALSA/JACK). Windows๋Š” ์•ˆ์ • ๋นŒ๋“œ, macOS๋Š” ๋ฒ ํƒ€, Linux๋Š” ์‹คํ—˜์  ์ง€์›.
> Windows is the stable release. macOS is in beta. Linux support is experimental.


DirectPipe Main UI

**DirectPipe๋Š” ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ฑด๊ฐ€์š”? / Who is DirectPipe for?**

> VST ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ชฐ๋ผ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. **[Auto] ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ๊ธฐ๋ณธ์ ์ธ ๋งˆ์ดํฌ ๋ณด์ •์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.** ๋” ์„ธ๋ฐ€ํ•œ ์กฐ์ •์€ VST ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ. ([Auto ์„ค๊ณ„ ์›์น™](docs/AUTO_DESIGN.md))
> Don't know what VST plugins are? No problem. **One click on [Auto] handles the essential mic correction.** Fine-tune further with VST plugins. ([Auto design principles](docs/AUTO_DESIGN.md))

๐ŸŽ™ **์ŠคํŠธ๋ฆฌ๋จธ / Streamers**
OBS๋กœ ๋ฐฉ์†กํ•˜๋ฉด์„œ Stream Deck์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์ดํŽ™ํŠธ ์ œ์–ด. **[Auto] ํ•œ ๋ฒˆ์ด๋ฉด ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ + ๋ณผ๋ฅจ ์•ˆ์ •ํ™” ์™„๋ฃŒ.** Receiver VST2๋กœ ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์—†์ด OBS ์ง์ ‘ ์—ฐ๊ฒฐ.
Control effects live with Stream Deck while streaming to OBS. **One click on [Auto] = noise removal + volume leveling done.** Direct OBS connection via Receiver VST2, no virtual cable needed.

๐ŸŽง **ํŒŸ์บ์Šคํ„ฐ / Podcasters**
**[Auto]๋กœ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ + ๋ณผ๋ฅจ ์•ˆ์ •ํ™”๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์ •**, EQ/์ปดํ”„๋ ˆ์„œ๋Š” VST๋กœ ์ถ”๊ฐ€. ๋…น์Œ ๊ธฐ๋Šฅ ๋‚ด์žฅ.
**[Auto] sets up noise removal + volume leveling in one click**, add EQ/compressor as VST plugins. Built-in recording.

๐ŸŽฎ **๊ฒŒ์ด๋จธ / Gamers**
๋‹จ์ถ•ํ‚ค(Ctrl+Shift)๋กœ ๊ฒŒ์ž„ ์ค‘ ๋ฎคํŠธ/ํ”„๋ฆฌ์…‹ ์ „ํ™˜. **[Auto] ์ผœ๋‘๋ฉด ํ‚ค๋ณด๋“œยทํŒฌ ์†Œ๋ฆฌ ์ž๋™ ์ œ๊ฑฐ.** ์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด ์ƒ์ฃผ, ๋ฆฌ์†Œ์Šค ์ตœ์†Œ ์‚ฌ์šฉ.
Mute/preset switch with hotkeys (Ctrl+Shift) during gameplay. **Leave [Auto] on and keyboard/fan noise is removed automatically.** Runs in system tray, minimal resource usage.

๐Ÿ’ฌ **๋ณด์ด์Šค์ฑ— / Voice Chat (Discord, Zoom, Google Meet)**
**[Auto] ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ๊นจ๋—ํ•œ ์Œ์„ฑ ์™„์„ฑ.** ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”๋กœ Discord/Zoom์— ์ „๋‹ฌ. Windows: [VB-Cable](https://vb-audio.com/Cable/), macOS: [BlackHole](https://existential.audio/blackhole/)/[Loopback](https://rogueamoeba.com/loopback/), Linux: PipeWire/JACK.
**One click on [Auto] = clean voice ready.** Route to Discord/Zoom via virtual audio cable. Windows: VB-Cable, macOS: BlackHole/Loopback, Linux: PipeWire/JACK.

### 30์ดˆ ๋งŒ์— ์‹œ์ž‘ํ•˜๊ธฐ / Get Started in 30 Seconds

> ์•„๋ž˜ 3๋‹จ๊ณ„๋งŒ ๋”ฐ๋ผํ•˜๋ฉด ๋ฐ”๋กœ ๊นจ๋—ํ•œ ๋งˆ์ดํฌ ์Œ์งˆ์„ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
> Follow these 3 steps to hear cleaner audio from your mic right away.

1. **๋‹ค์šด๋กœ๋“œ & ์‹คํ–‰** โ€” [์ตœ์‹  ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ](https://github.com/LiveTrack-X/DirectPipe/releases/latest) โ†’ ์••์ถ• ํ•ด์ œ โ†’ ์‹คํ–‰ / [Download latest](https://github.com/LiveTrack-X/DirectPipe/releases/latest) โ†’ Extract โ†’ Run
2. **๋งˆ์ดํฌ ์„ ํƒ** โ€” Audio ํƒญ โ†’ Input์—์„œ USB ๋งˆ์ดํฌ ์„ ํƒ / Audio tab โ†’ Select your USB mic as Input
3. **[Auto] ํด๋ฆญ** โ€” ๊ธฐ๋ณธ์ ์ธ ๋งˆ์ดํฌ ๋ณด์ •(๋…ธ์ด์ฆˆ ์ œ๊ฑฐ + ์ž๋™ ๋ณผ๋ฅจ + ์ €์ฃผํŒŒ ํ•„ํ„ฐ)์„ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ / Click [Auto] โ€” Add essential mic correction (noise removal + auto volume + low-cut filter) in one step
4. **๋!** ๋” ์ž์„ธํ•œ ์„ค์ •์€ [Quick Start ๊ฐ€์ด๋“œ](docs/QUICKSTART.md) ์ฐธ์กฐ / **Done!** For detailed setup, see the [Quick Start guide](docs/QUICKSTART.md)

---

### DirectPipe๋ฅผ ์จ์•ผ ํ•˜๋Š” ์ด์œ  / Why DirectPipe?

> DAW ์—†์ด, ์„ค์น˜ ์—†์ด, ๋งˆ์ดํฌ์— VST๋ฅผ ๊ฑฐ๋Š” ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ๋ฐฉ๋ฒ•
> โ€” The lightest way to apply VST effects to your mic, without a DAW or installer.

> DirectPipe๋Š” ๋‹จ์ˆœํ•œ VST ํ˜ธ์ŠคํŠธ๋ฅผ ๋„˜์–ด, **๋ผ์ด๋ธŒ ๋งˆ์ดํฌ ๋ผ์šฐํŒ… + ์™ธ๋ถ€ ์ œ์–ด ํ”Œ๋žซํผ**์œผ๋กœ ์„ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ซํ‚ค, MIDI, Stream Deck, HTTP, WebSocket 5๊ฐ€์ง€ ์™ธ๋ถ€ ์ œ์–ด๋ฅผ ํ†ตํ•ฉ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
> DirectPipe has grown beyond a simple VST host into a **live microphone routing + external control platform**. It integrates 5 control methods: hotkeys, MIDI, Stream Deck, HTTP, and WebSocket.

- **์„ค์น˜ ๋ถˆํ•„์š”** โ€” Windows: ๋‹จ์ผ .exe, macOS: .app ๋ฒˆ๋“ค, Linux: ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ. ์ธ์Šคํ†จ๋Ÿฌ ์—†์Œ โ€” Windows: single .exe, macOS: .app bundle, Linux: single binary. No installer needed
- **5์ข… ์™ธ๋ถ€ ์ œ์–ด** โ€” ํ•ซํ‚ค ยท MIDI ยท Stream Deck ยท HTTP ยท WebSocket์„ ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ โ€” All 5 control methods in one app
- **๋น ๋ฅธ ํ”„๋ฆฌ์…‹ ์ „ํ™˜** โ€” A-E ์Šฌ๋กฏ, ์ด๋ฆ„ ์ง€์ •, ๊ฐ™์€ ์ฒด์ธ์€ ์ฆ‰์‹œ, ๋‹ค๋ฅธ ์ฒด์ธ์€ ๋น„๋™๊ธฐ ๋กœ๋”ฉ์œผ๋กœ ์งง์€ ๊ฐญ ์ตœ์†Œํ™” โ€” Named preset slots (A-E) with fast switching: instant for same-chain changes, async loading for different chains
- **VST ์ถœ๋ ฅ (DirectPipe Receiver, VST2/VST3/AU)** โ€” ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์—†์ด OBS/DAW ์ง์ ‘ ์—ฐ๊ฒฐ โ€” Direct OBS/DAW connection without virtual cables
- **์˜คํ”ˆ์†Œ์Šค** โ€” GPL v3, ๋ˆ„๊ตฌ๋‚˜ ๊ธฐ์—ฌ ๊ฐ€๋Šฅ โ€” Open source, community-driven

### For Setup Helpers / ์„ธํŒ… ๋„์šฐ๋ฏธ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ

> ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋งˆ์ดํฌ ์„ธํŒ…์„ ๋Œ€์‹  ํ•ด์ฃผ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ
> โ€” Workflow for people who set up microphones for others

1. **ํฌํ„ฐ๋ธ” ์‹คํ–‰** โ€” USB์— DirectPipe๋ฅผ ๋„ฃ๊ณ  ์ƒ๋Œ€๋ฐฉ ์ปดํ“จํ„ฐ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ ([`portable.flag`๋กœ ์„ค์ •๋„ USB์— ์ €์žฅ](docs/USER_GUIDE.md#ํฌํ„ฐ๋ธ”-๋ชจ๋“œ--portable-mode))
2. **ํ”„๋ฆฌ์…‹ ๋‚ด๋ณด๋‚ด๊ธฐ** โ€” ์ตœ์ ํ™”๋œ VST ์ฒด์ธ์„ `.dppreset` ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด์„œ ์ „๋‹ฌ
3. **ํ”„๋ฆฌ์…‹ ๊ฐ€์ ธ์˜ค๊ธฐ** โ€” ์ƒ๋Œ€๋ฐฉ์ด ์Šฌ๋กฏ ์šฐํด๋ฆญ โ†’ Import๋กœ ์ฆ‰์‹œ ์ ์šฉ
4. **Full Backup** โ€” Settings > Maintenance์—์„œ ์„ค์ • + ๋ชจ๋“  ์Šฌ๋กฏ์„ `.dpfullbackup` ํ•˜๋‚˜๋กœ ๋ฐฑ์—…/๋ณต์›. ๊ฐ™์€ OS๋ผ๋ฆฌ๋งŒ ๋ณต์› ๊ฐ€๋Šฅ (๋ฐฑ์—… ํŒŒ์ผ์— ํ”Œ๋žซํผ ์ •๋ณด ํฌํ•จ, ๋‹ค๋ฅธ OS์—์„œ ๋ณต์› ์‹œ ์ฐจ๋‹จ) / Same-OS restore only (backup includes platform info, cross-OS restore is blocked)

```
์„ธํŒ… ๋„์šฐ๋ฏธ PC ์ŠคํŠธ๋ฆฌ๋จธ PC
DirectPipe โ†’ ์Šฌ๋กฏ A ์„ธํŒ… ์™„๋ฃŒ DirectPipe ์„ค์น˜
โ†’ ์šฐํด๋ฆญ "Export A" โ†’ game.dppreset โ†’ ์šฐํด๋ฆญ "Import to A" โ†’ game.dppreset
โ†’ ํŒŒ์ผ ์ „๋‹ฌ (๋ฉ”์‹ ์ €, USB ๋“ฑ) โ†’ ์ฆ‰์‹œ ์ ์šฉ!
```

---



๐ŸŽ› Stream Deck Plugin โ€” Elgato Marketplace์—์„œ ๋ฌด๋ฃŒ ์„ค์น˜

Bypass ยท Volume (SD+ ๋‹ค์ด์–ผ) ยท Preset ยท Monitor ยท Panic Mute ยท Recording ยท VST Output ยท Performance Monitor ยท Plugin Parameter (SD+) ยท Preset Bar (SD+) โ€” 10๊ฐ€์ง€ ์•ก์…˜์œผ๋กœ Stream Deck์—์„œ DirectPipe๋ฅผ ์™„์ „ ์ œ์–ด

Free on Elgato Marketplace โ€” 10 actions to fully control DirectPipe from your Stream Deck

---

## ๋™์ž‘ ์›๋ฆฌ / How It Works

```
Mic โ”€โ†’ WASAPI / ASIO / CoreAudio / ALSA โ”€โ†’ Input Gain โ”€โ†’ VST2/VST3 Plugin Chain โ”€โ†’ Global Safety Guard โ”€โ”
โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ”‚ โ”‚
Main Output Monitor Output VST Output
(Audio tab Output device) (Output tab, separate (DirectPipe Receiver)
์˜ˆ: Virtual Cable โ†’ Discord/Zoom ๋ณ„๋„ ์žฅ์น˜ โ†’ Headphones) โ†’ Shared Memory
โ”‚ โ”‚
AudioRecorder OBS / DAW [DirectPipe Receiver]
โ†’ WAV File (Output tab)

External Control:
Hotkeys / MIDI CC / Stream Deck / HTTP (:8766) / WebSocket (:8765)
โ†’ ActionDispatcher โ†’ Bypass, Volume, Preset, Mute, Recording, VST Output ...
```

## ์ฃผ์š” ๊ธฐ๋Šฅ / Features

### VST ํ˜ธ์ŠคํŒ… / VST Hosting

- **VST2 + VST3** ํ”Œ๋Ÿฌ๊ทธ์ธ ๋กœ๋“œ ๋ฐ ์ธ๋ผ์ธ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ โ€” Load and process plugins inline in real time
- **๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ** ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฒด์ธ ํŽธ์ง‘ โ€” Drag & drop to reorder plugins, toggle bypass, open native plugin GUIs
- **Out-of-process ์Šค์บ๋„ˆ** โ€” ๋ณ„๋„ ํ”„๋กœ์„ธ์Šค์—์„œ ์•ˆ์ „ ์Šค์บ”. ํฌ๋ž˜์‹œ ์‹œ ์ž๋™ ์žฌ์‹œ๋„ (10ํšŒ), ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ์ž๋™ ๋“ฑ๋ก โ€” Scans in a separate process; auto-retry up to 10 times, blacklists crashed plugins
- **ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฒ€์ƒ‰/์ •๋ ฌ** โ€” ์Šค์บ๋„ˆ์—์„œ ์ด๋ฆ„/๋ฒค๋”/ํฌ๋งท์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ๋ฐ ์ปฌ๋Ÿผ ์ •๋ ฌ โ€” Real-time search and column sort by name, vendor, or format
- **Quick Preset Slots (A-E)** โ€” 5๊ฐœ ์ฒด์ธ ์ „์šฉ ํ”„๋ฆฌ์…‹. ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ (A|๊ฒŒ์ž„, B|ํ† ํฌ ๋“ฑ). ๊ฐ™์€ ์ฒด์ธ์ด๋ฉด ์ฆ‰์‹œ ์ „ํ™˜, ๋‹ค๋ฅธ ์ฒด์ธ์ด๋ฉด ๋น„๋™๊ธฐ ๋กœ๋”ฉ (Keep-Old-Until-Ready: ๋กœ๋”ฉ ์ค‘์—๋„ ์ด์ „ ์ฒด์ธ์ด ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ๋Š๊น€ ์—†์ด ์ „ํ™˜). ์Šฌ๋กฏ ๋‚ด๋ณด๋‚ด๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ, ์šฐํด๋ฆญ์œผ๋กœ ๋ณต์‚ฌ/์‚ญ์ œ/์ด๋ฆ„๋ณ€๊ฒฝ โ€” 5 chain-only presets with custom naming (A|Game, B|Talk). Instant or async switching (Keep-Old-Until-Ready). Right-click to rename, copy, export/import, or delete slots

### ์˜ค๋””์˜ค / Audio

- **WASAPI Shared + ASIO** (Windows), **CoreAudio** (macOS), **ALSA/JACK** (Linux) โ€” ๋Ÿฐํƒ€์ž„ ์ „ํ™˜ ๊ฐ€๋Šฅ โ€” Runtime driver switching
- ๋น„๋…์  ๋งˆ์ดํฌ ์ ‘๊ทผ โ€” Non-exclusive mic access, other apps can use the mic simultaneously
- **์žฅ์น˜ ์ž๋™ ์žฌ์—ฐ๊ฒฐ** โ€” USB ์žฅ์น˜ ๋ถ„๋ฆฌ ์‹œ ์•Œ๋ฆผ, ์›ํ•˜๋Š” ์žฅ์น˜๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋ฌด๊ธฐํ•œ ๋Œ€๊ธฐ ํ›„ ์ž๋™ ๋ณต๊ตฌ (SR/BS/์ฑ„๋„ ์„ค์ • ๋ณด์กด, ๋‹ค๋ฅธ ์žฅ์น˜๋กœ ํด๋ฐฑํ•˜์ง€ ์•Š์Œ). ๋ชจ๋‹ˆํ„ฐ ์žฅ์น˜๋„ ๋…๋ฆฝ์ ์œผ๋กœ ์žฌ์—ฐ๊ฒฐ โ€” Auto-reconnection on USB disconnect: waits indefinitely for desired device (no fallback), auto-recovers preserving SR/BS/channel settings. Monitor device reconnects independently
- **3๊ฐ€์ง€ ์ถœ๋ ฅ ๊ฒฝ๋กœ** โ€” Main Output (Audio ํƒญ ์žฅ์น˜) + Monitor Output (Output ํƒญ, ๋ณ„๋„ ์˜ค๋””์˜ค ์žฅ์น˜๋กœ ํ—ค๋“œํฐ ๋ชจ๋‹ˆํ„ฐ๋ง) + VST Output (DirectPipe Receiver โ†’ OBS/DAW) โ€” Three output paths: main, monitor headphones (via separate audio device), VST output to OBS/DAW
- **Mono / Stereo** ์ฑ„๋„ ๋ชจ๋“œ โ€” ๋ชจ๋…ธ ๋ชจ๋“œ: ์ž…๋ ฅ๋‹จ์—์„œ ์ „์ฒด ์ฑ„๋„์„ ํ•ฉ์‚ฐ ํ›„ ์–‘์ชฝ ์Šคํ…Œ๋ ˆ์˜ค๋กœ ์ถœ๋ ฅ. ๋‹จ์ผ ๋งˆ์ดํฌ ์‚ฌ์šฉ ์‹œ ๋ณผ๋ฅจ ์†์‹ค ์—†์Œ โ€” Mono mode: sums all input channels at the input stage and outputs to both L/R. No volume loss for single-mic use
- **์ž…๋ ฅ ๊ฒŒ์ธ** โ€” 0.0x~2.0x ๋ฒ”์œ„, ๊ธฐ๋ณธ๊ฐ’ 1.0x (unity gain) โ€” Input gain 0.0x-2.0x, default 1.0x
- **์‹ค์‹œ๊ฐ„ ๋ ˆ๋ฒจ ๋ฏธํ„ฐ** โ€” ์ž…๋ ฅ(์ขŒ) / ์ถœ๋ ฅ(์šฐ) RMS ๋ฏธํ„ฐ, dB ๋กœ๊ทธ ์Šค์ผ€์ผ โ€” Input/output RMS meters with dB log scale
- **Safety Guard** โ€” VST ์ฒด์ธ ์ดํ›„ ์ „์—ญ ์ƒ˜ํ”Œ-ํ”ผํฌ ๊ฐ€๋“œ(legacy API/action name: SafetyLimiter). zero-latency runtime, instant attack + smooth release + hard clamp, ๊ธฐ๋ณธ ceiling -0.3 dBFS โ€” Global sample-peak guard after VST chain (legacy API/action name: SafetyLimiter). Zero-latency runtime with instant attack + smooth release + hard clamp, default ceiling -0.3 dBFS
- **Built-in Processors** โ€” Filter (HPF+LPF), Noise Removal (RNNoise AI), Auto Gain (LUFS AGC + fixed post limiter) โ€” VST ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์ฒด์ธ์— ์‚ฝ์ž… ๊ฐ€๋Šฅ. [Auto] ๋ฒ„ํŠผ(์ž…๋ ฅ ๊ฒŒ์ธ ์˜† ํŠน์ˆ˜ ํ”„๋ฆฌ์…‹ ์Šฌ๋กฏ)์œผ๋กœ 3๊ฐœ ๋ชจ๋‘ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ โ€” Filter, Noise Removal (RNNoise AI), Auto Gain (LUFS AGC + fixed post limiter) insertable alongside VST plugins. [Auto] button (special preset slot next to input gain) adds all 3 at once
- **Clock Drift Compensation** โ€” Bidirectional IPC drift handling with hysteresis dead-band to improve long-duration streaming stability (auto buffer management helps reduce clicks/pops) / ํžˆ์Šคํ…Œ๋ฆฌ์‹œ์Šค ๋ฐ๋“œ ๋ฐด๋“œ๋ฅผ ํฌํ•จํ•œ ์–‘๋ฐฉํ–ฅ IPC ํด๋ก ๋“œ๋ฆฌํ”„ํŠธ ๋ณด์ƒ์œผ๋กœ ์žฅ์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์•ˆ์ •์„ฑ์„ ๋†’์ด๋„๋ก ์„ค๊ณ„๋จ (์ž๋™ ๋ฒ„ํผ ๊ด€๋ฆฌ๋กœ ๋Š๊น€/ํŒ ์™„ํ™”)

### ์™ธ๋ถ€ ์ œ์–ด / External Control

- **ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค** (๋ชจ๋‘ Controls > Hotkeys ํƒญ์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ, ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์ˆœ์„œ ๋ณ€๊ฒฝ) โ€” All customizable in Controls > Hotkeys tab, drag-and-drop reorder. macOS์—์„œ๋Š” ์ ‘๊ทผ์„ฑ ๊ถŒํ•œ ํ•„์š” (CGEventTap). macOS requires Accessibility permission.

| ๋‹จ์ถ•ํ‚ค / Shortcut | ๋™์ž‘ / Action |
|---|---|
| Ctrl+Shift+M | ํŒจ๋‹‰ ๋ฎคํŠธ / Panic mute |
| Ctrl+Shift+0 | ๋งˆ์Šคํ„ฐ Bypass (์ „์ฒด ์ฒด์ธ) / Master bypass |
| Ctrl+Shift+1โ€“3 | ํ”Œ๋Ÿฌ๊ทธ์ธ 1-3 Bypass ํ† ๊ธ€ / Plugin 1-3 bypass |
| Ctrl+Shift+F6 | ์ž…๋ ฅ๋งŒ ๋ฎคํŠธ (์ฒด์ธ/์ถœ๋ ฅ ์œ ์ง€) / Input-only mute (chain/output kept running) |
| Ctrl+Shift+H | ๋ชจ๋‹ˆํ„ฐ ํ† ๊ธ€ / Monitor toggle |
| Ctrl+Shift+F1โ€“F5 | ํ”„๋ฆฌ์…‹ ์Šฌ๋กฏ A-E / Preset slot A-E |

> ๋ชจ๋“  ๋‹จ์ถ•ํ‚ค๋Š” Controls > Hotkeys ํƒญ์—์„œ ๋ณ€๊ฒฝ/์ถ”๊ฐ€ ๊ฐ€๋Šฅ / All shortcuts are customizable in Controls > Hotkeys tab

- **MIDI CC** โ€” Learn ๋ชจ๋“œ๋กœ CC/๋…ธํŠธ ๋งคํ•‘ (Cancel ๋ฒ„ํŠผ์œผ๋กœ ์ทจ์†Œ ๊ฐ€๋Šฅ). ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง์ ‘ ๋งคํ•‘๋„ ์ง€์› โ€” CC/note mapping with Learn mode (Cancel button to abort). Direct plugin parameter mapping supported
- **WebSocket** (RFC 6455, port 8765) โ€” ์–‘๋ฐฉํ–ฅ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ , ์ƒํƒœ ์ž๋™ ํ‘ธ์‹œ โ€” Bidirectional real-time communication with auto state push
- **HTTP REST API** (port 8766) โ€” curl์ด๋‚˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›์ƒท GET ์ปค๋งจ๋“œ โ€” One-shot GET commands from curl or browser
- **UDP Discovery** (port 8767) โ€” Stream Deck ์ž๋™ ์—ฐ๊ฒฐ์šฉ ๋””์Šค์ปค๋ฒ„๋ฆฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ โ€” Auto-discovery broadcast for instant Stream Deck connection
- **[Stream Deck ํ”Œ๋Ÿฌ๊ทธ์ธ](https://marketplace.elgato.com/product/directpipe-29f7cbb8-cb90-425d-9dbc-b2158e7ea8b3)** โ€” 10๊ฐ€์ง€ ์•ก์…˜: Bypass, Volume (SD+ ๋‹ค์ด์–ผ), Preset, Monitor, Panic Mute, Recording, IPC Toggle, Performance Monitor, Plugin Parameter (SD+ ๋‹ค์ด์–ผ), Preset Bar (SD+) โ€” [Elgato Marketplace์—์„œ ๋ฌด๋ฃŒ ์„ค์น˜](https://marketplace.elgato.com/product/directpipe-29f7cbb8-cb90-425d-9dbc-b2158e7ea8b3)

### VST ์ถœ๋ ฅ (DirectPipe Receiver) / VST Output (DirectPipe Receiver)

- **DirectPipe Receiver (VST2/VST3/AU)** โ€” OBS, DAW ๋“ฑ์—์„œ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ง์ ‘ ์ˆ˜์‹ . **๊ฐ€์ƒ ์ผ€์ด๋ธ” ๋ถˆํ•„์š”**. ์ž…๋ ฅ ๋ฒ„์Šค ์—†๋Š” ์ถœ๋ ฅ ์ „์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ (๋ชจ๋…ธ/์Šคํ…Œ๋ ˆ์˜ค ์ถœ๋ ฅ ์ง€์›) โ€” OBS ํ•„ํ„ฐ ์ฒด์ธ์˜ ์•ž๋‹จ ์˜ค๋””์˜ค๋Š” ๋ฌด์‹œ๋˜๊ณ  DirectPipe์—์„œ ์ „์†ก๋œ ์˜ค๋””์˜ค๋งŒ ์ถœ๋ ฅ. ํ˜ธ์ŠคํŠธ์— ๋ฒ„ํผ๋ง ๋ ˆ์ดํ„ด์‹œ ๋ณด๊ณ  โ€” Receive audio via shared memory in OBS, DAWs, and other hosts. **No virtual cable needed**. Output-only plugin (no input bus, mono/stereo output) โ€” ignores upstream audio in the host's filter chain, only outputs audio sent from DirectPipe. Reports buffering latency to host
- **VST ์ถœ๋ ฅ ํ† ๊ธ€** โ€” ๊ธฐ๋ณธ๊ฐ’ OFF. VST ๋ฒ„ํŠผ / Output ํƒญ ์ฒดํฌ๋ฐ•์Šค / MIDI / Stream Deck / HTTP API / ์‚ฌ์šฉ์ž ์ •์˜ ๋‹จ์ถ•ํ‚ค๋กœ ์ผœ๊ธฐ/๋„๊ธฐ โ€” Off by default. Toggle via VST button, Output tab, MIDI, Stream Deck, HTTP API, or user-defined hotkey
- **๋ฒ„ํผ ํฌ๊ธฐ ์„ค์ •** โ€” Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ GUI์—์„œ 5๋‹จ๊ณ„ ํ”„๋ฆฌ์…‹ ์„ ํƒ. ์‹ค์ œ ์ง€์—ฐ(ms)์€ ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ โ€” 5 buffer presets in Receiver plugin GUI. Actual latency (ms) depends on sample rate

| ํ”„๋ฆฌ์…‹ / Preset | ์ƒ˜ํ”Œ / Samples | @48kHz | @44.1kHz | ์šฉ๋„ / Best for |
|---|---|---|---|---|
| Ultra Low | 256 | ~5ms | ~6ms | ์ตœ์†Œ ์ง€์—ฐ / Minimum latency |
| Low (๊ธฐ๋ณธ) | 512 | ~10ms | ~12ms | ์ผ๋ฐ˜ ์‚ฌ์šฉ / General use (default) |
| Medium | 1024 | ~21ms | ~23ms | ์•ˆ์ •์  / Stable |
| High | 2048 | ~42ms | ~46ms | CPU ์—ฌ์œ  ์ ์„ ๋•Œ / Low CPU headroom |
| Safe | 4096 | ~85ms | ~93ms | ์ตœ๋Œ€ ์•ˆ์ •์„ฑ / Maximum stability |
- **์ƒ˜ํ”Œ๋ ˆ์ดํŠธ ๋ถˆ์ผ์น˜ ๊ฒฝ๊ณ ** โ€” DirectPipe ์†ก์‹  ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ์™€ OBS(ํ˜ธ์ŠคํŠธ) ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋‹ค๋ฅด๋ฉด Receiver GUI์— ๊ฒฝ๊ณ  ํ‘œ์‹œ. ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋‹ค๋ฅด๋ฉด ํ”ผ์น˜/์†๋„ ๋ณ€๋™ ๋ฐœ์ƒ โ€” Sample rate mismatch warning shown in Receiver GUI when source and host sample rates differ

### ๋…น์Œ / Recording

- **์˜ค๋””์˜ค ๋…น์Œ** โ€” Output ํƒญ์—์„œ VST ์ฒด์ธ ์ดํ›„ ์ฒ˜๋ฆฌ๋œ ์˜ค๋””์˜ค๋ฅผ WAV๋กœ ๋…น์Œ (lock-free ์‹ค์‹œ๊ฐ„ ์•ˆ์ „) โ€” Record post-chain audio to WAV in Output tab (lock-free, RT-safe)
- **๊ธฐ๋ณธ ํด๋”**: `Documents/DirectPipe Recordings` (์‚ฌ์šฉ์ž ๋ฌธ์„œ ํด๋”), ํŒŒ์ผ๋ช…: `DirectPipe_YYYYMMDD_HHMMSS.wav` โ€” Default folder (user Documents), naming format
- **๋…น์Œ ์ œ์–ด** โ€” REC/STOP ๋ฒ„ํŠผ, ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ํ‘œ์‹œ, Play (๋งˆ์ง€๋ง‰ ๋…น์Œ ์žฌ์ƒ), Open Folder, ํด๋” ๋ณ€๊ฒฝ โ€” REC/STOP, elapsed time, Play last, Open Folder, change folder
- **์™ธ๋ถ€ ์ œ์–ด** โ€” Stream Deck (๊ฒฝ๊ณผ ์‹œ๊ฐ„ ํ‘œ์‹œ), HTTP API, WebSocket์œผ๋กœ๋„ ๋…น์Œ ํ† ๊ธ€ ๊ฐ€๋Šฅ โ€” Also controllable via Stream Deck (shows elapsed time), HTTP, WebSocket

### UI / ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

- **2์ปฌ๋Ÿผ ๋ ˆ์ด์•„์›ƒ** โ€” ์ขŒ: ์ž…๋ ฅ ๋ฏธํ„ฐ + ๊ฒŒ์ธ([Auto] ํฌํ•จ) + ํ”„๋ฆฌ์…‹ ์Šฌ๋กฏ(A~E) + VST ์ฒด์ธ + ๋ฎคํŠธ ๋ฒ„ํŠผ(OUT/MON/VST) + PANIC MUTE, ์šฐ: ์„ค์ • ํƒญ ํŒจ๋„ + ์ถœ๋ ฅ ๋ฏธํ„ฐ โ€” Left: input meter + gain (with [Auto]) + preset slots (A-E) + chain + mute buttons (OUT/MON/VST) + PANIC MUTE, Right: tabbed settings + output meter
- **4๊ฐœ ํƒญ** โ€” Tab layout:
- **Audio**: ๋“œ๋ผ์ด๋ฒ„ ์„ ํƒ (Windows: WASAPI/ASIO, macOS: CoreAudio, Linux: ALSA/JACK), ์ž…์ถœ๋ ฅ ์žฅ์น˜, ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ, ๋ฒ„ํผ ํฌ๊ธฐ, ์ฑ„๋„ ๋ชจ๋“œ. **Audio ํƒญ์˜ ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ VST ์ฒด์ธยท๋ชจ๋‹ˆํ„ฐ ์ถœ๋ ฅยทIPC ์ „์ฒด์— ์ ์šฉ๋จ** โ€” Driver (Windows: WASAPI/ASIO, macOS: CoreAudio, Linux: ALSA/JACK), devices, SR, buffer, channel mode. **Audio tab SR applies to VST chain, monitor output, and IPC**
- **Output**: ๋ชจ๋‹ˆํ„ฐ ์ถœ๋ ฅ(์žฅ์น˜/๋ณผ๋ฅจ/์ƒํƒœ), VST ์ถœ๋ ฅ ํ† ๊ธ€, ๋…น์Œ(REC/Play/ํด๋”) โ€” Monitor output, VST output toggle, recording
- **Controls**: 3๊ฐœ ์„œ๋ธŒํƒญ โ€” Hotkeys / MIDI / Stream Deck โ€” 3 sub-tabs
- **Settings**: ์ž๋™ ์‹œ์ž‘ (Windows/Linux: "Start with System", macOS: "Open at Login"), ์„ค์ • ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ(.dpbackup, ์„ค์ •๋งŒ), ๋กœ๊ทธ ๋ทฐ์–ด, ์œ ์ง€๋ณด์ˆ˜(Full Backup/Restore โ€” ๊ฐ™์€ OS๋ผ๋ฆฌ๋งŒ, Clear Cache/Presets, Factory Reset(A-E + Auto ์Šฌ๋กฏ ํฌํ•จ)) โ€” Auto-start (platform-adaptive label), settings save/load (.dpbackup, settings only), log viewer, maintenance (Full Backup/Restore โ€” same OS only, Clear Cache/Presets, Factory Reset (includes A-E + Auto slots))
- **์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด** โ€” X ๋ฒ„ํŠผ = ํŠธ๋ ˆ์ด ์ตœ์†Œํ™”. ๋”๋ธ”ํด๋ฆญ ๋ณต์›, ์šฐํด๋ฆญ ๋ฉ”๋‰ด(Show/Start with System or Open at Login/Quit). ํˆดํŒ์— ํ˜„์žฌ ์ƒํƒœ ํ‘œ์‹œ โ€” Tray resident, tooltip shows current state
- **Panic Mute** โ€” ์ „์ฒด ์ถœ๋ ฅ ์ฆ‰์‹œ ์ฐจ๋‹จ + ๋…น์Œ ์ž๋™ ์ค‘์ง€, ํ•ด์ œ ์‹œ ์ด์ „ ์ƒํƒœ ๋ณต์› (๋…น์Œ์€ ์ž๋™ ์žฌ์‹œ์ž‘ ์•ˆ ํ•จ). ํŒจ๋‹‰ ์ค‘ OUT/MON/VST ์ œ์–ด๋Š” ์ž ๊ธฐ๊ณ  ๋Œ€๋ถ€๋ถ„ ์•ก์…˜์ด ์ฐจ๋‹จ๋˜์ง€๋งŒ, Input Mute/XRun Reset/Safety Guard(legacy SafetyLimiter actions)/Auto Processors Add๋Š” ์œ ์ง€๋ณด์ˆ˜ยท์ค€๋น„ ์šฉ๋„๋กœ ํ—ˆ์šฉ โ€” Instant kill all output paths + auto-stop recording, restores previous states on unmute (recording does not auto-restart). OUT/MON/VST controls are locked and most actions are blocked, while Input Mute/XRun Reset/Safety Guard (legacy SafetyLimiter actions)/Auto Processors Add remain available for maintenance/prep flows
- **์ƒํƒœ ๋ฐ”** โ€” ๋ ˆ์ดํ„ด์‹œ, CPU % + XRun ์นด์šดํ„ฐ(60์ดˆ๊ฐ„), ์˜ค๋””์˜ค ํฌ๋งท, [LIM] ์ธ๋””์ผ€์ดํ„ฐ, ํฌํ„ฐ๋ธ” ๋ชจ๋“œ, ๋ฒ„์ „ ์ •๋ณด. ์˜ค๋ฅ˜/๊ฒฝ๊ณ /์ •๋ณด ์•Œ๋ฆผ ์ž๋™ ํ‘œ์‹œ (3-8์ดˆ ํŽ˜์ด๋“œ) โ€” Status bar: latency, CPU % + XRun counter (60s window), audio format, [LIM] indicator, portable mode, version. Auto-fade notifications
- **์ธ์•ฑ ์ž๋™ ์—…๋ฐ์ดํŠธ** โ€” ์ƒˆ ๋ฒ„์ „ ๊ฐ์ง€ ์‹œ credit ๋ผ๋ฒจ์— "NEW vX.Y.Z" ํ‘œ์‹œ. ํด๋ฆญํ•˜๋ฉด [Update Now] / [View on GitHub] / [Later] ๋‹ค์ด์–ผ๋กœ๊ทธ. Update Now๋กœ GitHub์—์„œ ๋‹ค์šด๋กœ๋“œ โ†’ ์ž๋™ ๊ต์ฒด โ†’ ์žฌ์‹œ์ž‘ โ€” In-app auto-updater with one-click update from GitHub releases
- **ํ•œ๊ตญ์–ด/CJK ํฐํŠธ ์ง€์›** โ€” ํ•œ๊ธ€, ไธญๆ–‡, ๆ—ฅๆœฌ่ชž ์žฅ์น˜๋ช… ์ •์ƒ ํ‘œ์‹œ. Windows: Malgun Gothic, macOS: Apple SD Gothic Neo, Linux: Noto Sans CJK KR โ€” Korean/Chinese/Japanese device names rendered correctly with platform-specific CJK font support
- **๋‹คํฌ ํ…Œ๋งˆ** โ€” Custom JUCE LookAndFeel
- **ํฌํ„ฐ๋ธ” ๋ชจ๋“œ** โ€” exe ์˜†์— [`portable.flag`](tools/portable.flag) ํŒŒ์ผ ๋ฐฐ์น˜ ์‹œ ์„ค์ •์„ `./config/`์— ์ €์žฅ. ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ง€์›: ์ผ๋ฐ˜ ๋ชจ๋“œ์™€ ํฌํ„ฐ๋ธ”์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋ฉด ํฌํ„ฐ๋ธ”์€ "Audio Only" ๋ชจ๋“œ๋กœ ๋™์ž‘ (์™ธ๋ถ€ ์ œ์–ด ์ถฉ๋Œ ๋ฐฉ์ง€). ํŠธ๋ ˆ์ด/ํƒ€์ดํ‹€ ๋ฐ”์— ๋ชจ๋“œ ํ‘œ์‹œ ([์ƒ์„ธ ์„ค๋ช…](docs/USER_GUIDE.md#ํฌํ„ฐ๋ธ”-๋ชจ๋“œ--portable-mode)) โ€” Place [`portable.flag`](tools/portable.flag) next to exe to store config in `./config/`. Multi-instance support: running portable alongside normal mode puts portable in "Audio Only" mode (prevents external control conflicts). Mode shown in tray/title bar ([details](docs/USER_GUIDE.md#ํฌํ„ฐ๋ธ”-๋ชจ๋“œ--portable-mode))

## ์‚ฌ์šฉ ์˜ˆ์‹œ: ๊ฐ€์ƒ ์ผ€์ด๋ธ”๋กœ Discord/OBS์— ๋ณด์ด์Šค ์ดํŽ™ํŠธ ์ ์šฉ / Usage: Voice Effects with Virtual Cable

USB ๋งˆ์ดํฌ์— VST ์ดํŽ™ํŠธ(๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, ๋””์—์„œ, EQ ๋“ฑ)๋ฅผ ๊ฑธ๊ณ , ์ฒ˜๋ฆฌ๋œ ์˜ค๋””์˜ค๋ฅผ DiscordยทZoomยทOBS ๋“ฑ ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋งˆ์ดํฌ๋กœ ์ธ์‹์‹œํ‚ค๋ ค๋ฉด ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”์ด ํ•„์š”ํ•˜๋‹ค.

To apply VST effects (noise removal, de-esser, EQ, etc.) to a USB mic and route the processed audio as a virtual microphone to apps like Discord, Zoom, or OBS, you need a virtual audio cable.

**ํ”Œ๋žซํผ๋ณ„ ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ” / Virtual Audio Cable by Platform:**
| ํ”Œ๋žซํผ / Platform | ์ถ”์ฒœ / Recommended | ๋น„์šฉ / Cost |
|---|---|---|
| **Windows** | [VB-Audio Virtual Cable](https://vb-audio.com/Cable/) | ๋ฌด๋ฃŒ / Free |
| **macOS** | [BlackHole](https://existential.audio/blackhole/) | ๋ฌด๋ฃŒ / Free |
| **macOS** | [Loopback](https://rogueamoeba.com/loopback/) | ์œ ๋ฃŒ / Paid |
| **Linux** | PipeWire (virtual sink) ๋˜๋Š” JACK | ๋‚ด์žฅ / Built-in |

### ์„ค์ • ๋ฐฉ๋ฒ• / Setup

1. ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ” ์„ค์น˜ โ€” Install a virtual audio cable (์œ„ ํ‘œ ์ฐธ์กฐ / see table above)
2. DirectPipe **Audio** ํƒญ์—์„œ ์„ค์ • โ€” Configure in DirectPipe Audio tab:
- **Input**: USB ๋งˆ์ดํฌ ์„ ํƒ โ€” Select your USB microphone
- **Output**: ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์ž…๋ ฅ ์„ ํƒ (์˜ˆ: Windows `CABLE Input`, macOS `BlackHole 2ch`) โ€” Select virtual cable input (e.g., Windows `CABLE Input`, macOS `BlackHole 2ch`)
3. Discord/Zoom/OBS ๋“ฑ์—์„œ ๋งˆ์ดํฌ๋ฅผ ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์ถœ๋ ฅ์œผ๋กœ ๋ณ€๊ฒฝ (์˜ˆ: Windows `CABLE Output`, macOS `BlackHole 2ch`) โ€” In your app, set mic to virtual cable output

```
USB Mic โ†’ DirectPipe (VST Chain: ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, EQ, ์ปดํ”„ ...) โ†’ Virtual Cable Input
โ†“
Discord/Zoom/OBS โ† Virtual Cable Output
```

4. (์„ ํƒ) **Output** ํƒญ์—์„œ ํ—ค๋“œํฐ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ฒ˜๋ฆฌ๋œ ์ž์‹ ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ โ€” Optionally configure headphone monitoring in the Output tab

> **Tip**: [VoiceMeeter](https://vb-audio.com/Voicemeeter/) (Windows) ๋“ฑ ๋‹ค๋ฅธ ๊ฐ€์ƒ ์˜ค๋””์˜ค ์žฅ์น˜๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. Output ์žฅ์น˜๋งŒ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. โ€” Any virtual audio device works; just change the Output device.

### OBS์—์„œ VST ์ถœ๋ ฅ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ (๊ฐ€์ƒ ์ผ€์ด๋ธ” ๋ถˆํ•„์š”) / Direct OBS Connection via VST Output (No Virtual Cable)

OBS์—์„œ๋Š” Receiver VST2 ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์—†์ด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

If you use OBS, the Receiver VST2 plugin offers a simpler setup without any virtual cable.

1. Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ์„ VST2 ํด๋”์— ๋ณต์‚ฌ โ€” Copy the Receiver plugin to a VST2 folder:
- **Windows**: `DirectPipe Receiver.dll` โ†’ `C:\Program Files\VSTPlugins\` (๊ถŒ์žฅ), `C:\Program Files\Common Files\VST2\`, ๋˜๋Š” `C:\Program Files\Steinberg\VstPlugins\`
- **macOS**: `DirectPipe Receiver.vst` โ†’ `/Library/Audio/Plug-Ins/VST/` ๋˜๋Š” `~/Library/Audio/Plug-Ins/VST/`
- **Linux**: `DirectPipe Receiver.so` โ†’ `/usr/lib/vst/` ๋˜๋Š” `~/.vst/`
2. DirectPipe์—์„œ **VST** ๋ฒ„ํŠผ ํด๋ฆญ (VST ์ถœ๋ ฅ ์ผœ๊ธฐ) โ€” Enable VST output in DirectPipe
3. OBS โ†’ ์˜ค๋””์˜ค ์†Œ์Šค (ex.๊ธฐ์กด ๋งˆ์ดํฌ)โ†’ ํ•„ํ„ฐ โ†’ VST 2.x ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ **DirectPipe Receiver** ์„ ํƒ โ€” Add VST filter in OBS

```
USB Mic โ†’ DirectPipe (VST Chain: ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, EQ, ์ปดํ”„ ...)
โ†“ VST ์ถœ๋ ฅ (๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ, ๊ฐ€์ƒ ์ผ€์ด๋ธ” ๋ถˆํ•„์š”)
OBS [DirectPipe Receiver VST ํ•„ํ„ฐ] โ†’ ๋ฐฉ์†ก/๋…นํ™”
```

> **Tip**: ๊ฐ€์ƒ ์ผ€์ด๋ธ”๊ณผ DirectPipe Receiver๋ฅผ **๋™์‹œ์—** ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Discord๋Š” ๊ฐ€์ƒ ์ผ€์ด๋ธ”๋กœ, OBS๋Š” Receiver๋กœ ๊ฐ๊ฐ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค. โ€” You can use both methods simultaneously: virtual cable for Discord, DirectPipe Receiver for OBS.

> **์ค‘์š”**: DirectPipe Receiver๋Š” **์ž…๋ ฅ ๋ฒ„์Šค๊ฐ€ ์—†๋Š” ์ถœ๋ ฅ ์ „์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ**์ž…๋‹ˆ๋‹ค. OBS ์˜ค๋””์˜ค ์†Œ์Šค(๋งˆ์ดํฌ ์บก์ฒ˜ ๋“ฑ)์˜ ์˜ค๋””์˜ค๋‚˜ ์•ž๋‹จ ํ•„ํ„ฐ์˜ ์˜ค๋””์˜ค๋Š” ์™„์ „ํžˆ ๋ฌด์‹œ๋˜๊ณ , DirectPipe์—์„œ IPC๋กœ ์ „์†ก๋œ ์ฒ˜๋ฆฌ ์™„๋ฃŒ ์˜ค๋””์˜ค๋งŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
>
> **Important**: DirectPipe Receiver is an **output-only plugin with no input bus**. Audio from the OBS source (mic capture, etc.) or preceding filters is completely ignored โ€” only the processed audio sent from DirectPipe via IPC is output.

### ์ถœ๋ ฅ๋ณ„ ๊ฐœ๋ณ„ ์ œ์–ด ํ™œ์šฉ / Independent Output Control

๊ฐ€์ƒ ์ผ€์ด๋ธ”(Discord) + Receiver VST2(OBS)๋ฅผ ๋™์‹œ ์‚ฌ์šฉํ•˜๋ฉด **OUT/VST ๋ฒ„ํŠผ์œผ๋กœ ๊ฐ ์•ฑ์˜ ๋งˆ์ดํฌ๋ฅผ ๊ฐœ๋ณ„ ์ œ์–ด**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€” Using virtual cable (Discord) + Receiver VST2 (OBS) together lets you **independently control each app's mic feed with OUT/VST buttons**.

```
USB Mic โ†’ DirectPipe (Plugin Chain)
โ”œโ”€ OUT โ†’ Virtual Cable โ†’ Discord โ† OUT ๋ฒ„ํŠผ์œผ๋กœ ๊ฐœ๋ณ„ ๋ฎคํŠธ
โ”œโ”€ VST โ†’ Receiver VST2 โ†’ OBS โ† VST ๋ฒ„ํŠผ์œผ๋กœ ๊ฐœ๋ณ„ ๋ฎคํŠธ
โ””โ”€ MON โ†’ Headphones โ† MON ๋ฒ„ํŠผ์œผ๋กœ ๊ฐœ๋ณ„ ๋ฎคํŠธ
```

- **VST OFF / OUT ON** โ†’ OBS ๋ฐฉ์†ก ๋งˆ์ดํฌ๋งŒ ๋ฎคํŠธ, Discord ํ†ตํ™” ์œ ์ง€ โ€” Mute OBS mic only, keep Discord
- **OUT OFF / VST ON** โ†’ Discord๋งŒ ๋ฎคํŠธ, OBS ๋ฐฉ์†ก ๋งˆ์ดํฌ ์œ ์ง€ โ€” Mute Discord only, keep OBS
- **Ctrl+Shift+M (Panic Mute)** โ†’ ์ „์ฒด ์ฆ‰์‹œ ๋ฎคํŠธ, ํ•ด์ œ ์‹œ ์ด์ „ ์ƒํƒœ ๋ณต์› โ€” Kill all outputs instantly, auto-restore on unmute

์ž์„ธํ•œ ํ™œ์šฉ ์˜ˆ์‹œ๋Š” [User Guide โ€” ํ™œ์šฉ ๊ฐ€์ด๋“œ](docs/USER_GUIDE.md#ํ™œ์šฉ-๊ฐ€์ด๋“œ--usage-guide) ์ฐธ์กฐ.

---

## ๋นŒ๋“œ / Build

```bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
```

ํ”Œ๋žซํผ๋ณ„ ๋นŒ๋“œ ์š”๊ตฌ ์‚ฌํ•ญ, ์˜ต์…˜, CI ์„ค์ • ๋“ฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Build Guide](docs/BUILDING.md) ์ฐธ์กฐ.

See [Build Guide](docs/BUILDING.md) for platform-specific requirements, build options, and CI setup.

## ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ / Project Structure

```
host/ JUCE host application (main)
Source/
ActionResult.h Typed success/failure return value
Audio/ AudioEngine, VSTChain, OutputRouter, MonitorOutput,
AudioRingBuffer, LatencyMonitor, AudioRecorder,
SafetyLimiter, BuiltinFilter, BuiltinNoiseRemoval,
BuiltinAutoGain
Control/ ActionDispatcher, ActionHandler, SettingsAutosaver,
ControlManager, ControlMapping,
WebSocketServer, HttpApiServer,
HotkeyHandler, MidiHandler, StateBroadcaster,
DirectPipeLogger
IPC/ SharedMemWriter
Platform/ Cross-platform abstractions
Windows/ Registry autostart, Named Mutex, Win32 priority
macOS/ LaunchAgent, CGEventTap hotkeys, pthread QoS
Linux/ XDG autostart, setpriority, InterProcessLock
UI/ AudioSettings, OutputPanel, ControlSettingsPanel,
HotkeyTab, MidiTab, StreamDeckTab,
PresetSlotBar, StatusUpdater, UpdateChecker,
PluginChainEditor, PluginScanner, PresetManager,
LevelMeter, LogPanel, NotificationBar,
DirectPipeLookAndFeel, SettingsExporter,
FilterEditPanel, NoiseRemovalEditPanel, AGCEditPanel
core/ IPC library (RingBuffer, SharedMemory, Protocol)
plugins/receiver/ Receiver VST2/VST3/AU plugin (for OBS/DAW)
com.directpipe.directpipe.sdPlugin/ Stream Deck plugin (Node.js, SDK v3)
dist/ Packaged plugin (.streamDeckPlugin) + marketplace assets
tests/ Unit tests (Google Test)
thirdparty/ VST2 SDK, ASIO SDK (not included), RNNoise (BSD-3, included)
```

## ๋ฌธ์„œ / Documentation

- **[Quick Start](docs/QUICKSTART.md) โ€” USB ๋งˆ์ดํฌ 5๋ถ„ ์„ค์ • ๊ฐ€์ด๋“œ / 5-minute USB mic setup guide**
- [Platform Guide](docs/PLATFORM_GUIDE.md) โ€” ํ”Œ๋žซํผ๋ณ„ ๊ฐ€์ด๋“œ (Windows/macOS/Linux) / Platform-specific setup, features, and limitations
- [Release Notes](docs/ReleaseNote.md) โ€” ๋ณ€๊ฒฝ ์ด๋ ฅ / Changelog and version history
- [Auto Design](docs/AUTO_DESIGN.md) โ€” [Auto] ์„ค๊ณ„ ์›์น™ ๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ทผ๊ฑฐ / Auto chain design principles, parameter rationale
- [Architecture](docs/ARCHITECTURE.md) โ€” ์‹œ์Šคํ…œ ์„ค๊ณ„ / System design, data flow, thread safety
- [Build Guide](docs/BUILDING.md) โ€” ๋นŒ๋“œ ๊ฐ€์ด๋“œ (๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ) / Build instructions for all platforms
- [User Guide](docs/USER_GUIDE.md) โ€” ์‚ฌ์šฉ๋ฒ• / Setup and usage
- [Control API](docs/CONTROL_API.md) โ€” WebSocket / HTTP API ๋ ˆํผ๋Ÿฐ์Šค / API reference
- [API Examples](docs/API_EXAMPLES.md) โ€” ์ž๋™ํ™” ์˜ˆ์ œ (Python, AutoHotkey, OBS ์—ฐ๋™, curl, PowerShell) / Automation examples
- [Stream Deck Guide](docs/STREAMDECK_GUIDE.md) โ€” Stream Deck ํ”Œ๋Ÿฌ๊ทธ์ธ / Stream Deck integration
- [Product Spec](docs/PRODUCT_SPEC.md) โ€” ์ œํ’ˆ ์ƒ์„ธ ๊ธฐํš์„œ / Detailed product specification (reverse-engineered from implementation)
- [Logging Rules](docs/LOGRULE.md) โ€” ๋กœ๊น… ํ˜•์‹ ๋ฐ ๊ทœ์น™ / Log format, categories, and audit mode
- [Security](SECURITY.md) โ€” ๋ณด์•ˆ ์ •์ฑ… ๋ฐ ์„ค๊ณ„ / Security policy, architecture, and known limitations
- [Testing](TESTING.md) โ€” ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ (์ž๋™/์ˆ˜๋™ ํ…Œ์ŠคํŠธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ) / Testing guide (automated and manual test checklists)
- [Contributing](CONTRIBUTING.md) โ€” ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ / Contributor guidelines
- [AutoGain Plugin Guide](docs/AUTOGAIN_PLUGIN_GUIDE.md) โ€” AutoGain ๋…๋ฆฝ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ถ„๋ฆฌ ๊ฐ€์ด๋“œ / AutoGain standalone plugin extraction guide

## FAQ

X ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋Š”๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊บผ์ง€์ง€ ์•Š์•„์š” / Clicking X doesn't close the app

DirectPipe๋Š” **์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด**์—์„œ ์ƒ์ฃผํ•˜๋Š” ์•ฑ์ž…๋‹ˆ๋‹ค. X ๋ฒ„ํŠผ(๋‹ซ๊ธฐ)์„ ๋ˆ„๋ฅด๋ฉด **์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠธ๋ ˆ์ด๋กœ ์ตœ์†Œํ™”**๋ฉ๋‹ˆ๋‹ค. ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์† ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

- **ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜ ๋”๋ธ”ํด๋ฆญ** โ†’ ์ฐฝ ๋ณต์›
- **ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜ ์šฐํด๋ฆญ** โ†’ ๋ฉ”๋‰ด์—์„œ **"Quit DirectPipe"** ์„ ํƒ โ†’ ์™„์ „ ์ข…๋ฃŒ

์ด ๋™์ž‘์€ ์˜๋„๋œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค โ€” Discord๋‚˜ OBS ๋“ฑ์— ์‹ค์‹œ๊ฐ„ ์˜ค๋””์˜ค๋ฅผ ๊ณ„์† ๋ณด๋‚ด๋ฉด์„œ ์ฐฝ์„ ๋‹ซ์•„๋„ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

---

DirectPipe is a **system tray** resident app. Clicking the X (close) button **minimizes it to the tray** instead of quitting. Audio processing continues running in the background.

- **Double-click the tray icon** โ†’ restore the window
- **Right-click the tray icon** โ†’ select **"Quit DirectPipe"** โ†’ fully exit

This is by design โ€” it ensures audio processing keeps running for Discord, OBS, etc. even when the window is closed.

ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜์ด ์•ˆ ๋ณด์—ฌ์š” / ํŠธ๋ ˆ์ด์— ๊ณ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• / Tray icon not visible / How to pin to tray

Windows๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜์„ ์ˆจ๊น€ ์˜์—ญ(โ–ฒ ํ™”์‚ดํ‘œ ์•ˆ)์— ๋„ฃ์Šต๋‹ˆ๋‹ค. DirectPipe ์•„์ด์ฝ˜์„ ํ•ญ์ƒ ๋ณด์ด๊ฒŒ ํ•˜๋ ค๋ฉด **ํŠธ๋ ˆ์ด์— ๊ณ ์ •**ํ•˜์„ธ์š”.

**Windows 11:**
1. **์„ค์ •** โ†’ **๊ฐœ์ธ ์„ค์ •** โ†’ **์ž‘์—… ํ‘œ์‹œ์ค„** โ†’ **๊ธฐํƒ€ ์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜** ํด๋ฆญ
2. ๋ชฉ๋ก์—์„œ **DirectPipe**๋ฅผ ์ฐพ์•„ **์ผฌ** ์œผ๋กœ ๋ณ€๊ฒฝ
3. ๋˜๋Š”: ์ˆจ๊น€ ์˜์—ญ(โ–ฒ)์—์„œ DirectPipe ์•„์ด์ฝ˜์„ **์ž‘์—… ํ‘œ์‹œ์ค„๋กœ ๋“œ๋ž˜๊ทธ**

**Windows 10:**
1. **์„ค์ •** โ†’ **๊ฐœ์ธ ์„ค์ •** โ†’ **์ž‘์—… ํ‘œ์‹œ์ค„** โ†’ **์•Œ๋ฆผ ์˜์—ญ** โ†’ **์ž‘์—… ํ‘œ์‹œ์ค„์— ํ‘œ์‹œํ•  ์•„์ด์ฝ˜ ์„ ํƒ** ํด๋ฆญ
2. ๋ชฉ๋ก์—์„œ **DirectPipe**๋ฅผ ์ฐพ์•„ **์ผฌ** ์œผ๋กœ ๋ณ€๊ฒฝ
3. ๋˜๋Š”: ์ˆจ๊น€ ์˜์—ญ(โ–ฒ)์—์„œ DirectPipe ์•„์ด์ฝ˜์„ **์ž‘์—… ํ‘œ์‹œ์ค„๋กœ ๋“œ๋ž˜๊ทธ**

**macOS:** ๋ฉ”๋‰ด ๋ฐ”์— ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋‰ด ๋ฐ” ์•„์ด์ฝ˜์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด Cmd ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ฑ„ ์•„์ด์ฝ˜์„ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

**Linux:** ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. GNOME์€ AppIndicator ํ™•์žฅ, KDE๋Š” ์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด์— ์ž๋™ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

---

Windows hides tray icons in the overflow area (โ–ฒ arrow) by default. To keep the DirectPipe icon always visible, **pin it to the taskbar tray**.

**Windows 11:**
1. **Settings** โ†’ **Personalization** โ†’ **Taskbar** โ†’ click **Other system tray icons**
2. Find **DirectPipe** and toggle it **On**
3. Or: drag the DirectPipe icon from the overflow area (โ–ฒ) onto the **taskbar**

**Windows 10:**
1. **Settings** โ†’ **Personalization** โ†’ **Taskbar** โ†’ **Notification area** โ†’ click **Select which icons appear on the taskbar**
2. Find **DirectPipe** and toggle it **On**
3. Or: drag the DirectPipe icon from the overflow area (โ–ฒ) onto the **taskbar**

**macOS:** Appears automatically in the menu bar. If crowded, hold Cmd and drag to reorder menu bar icons.

**Linux:** Depends on desktop environment. GNOME requires AppIndicator extension; KDE shows in system tray automatically.

์ฒ˜์Œ ์‹คํ–‰ํ•  ๋•Œ ๋ณด์•ˆ ๊ฒฝ๊ณ ๊ฐ€ ๋– ์š” / Security warning on first run

์ •์ƒ์ž…๋‹ˆ๋‹ค! DirectPipe๋Š” ์˜คํ”ˆ์†Œ์Šค๋ผ ์ฝ”๋“œ ์„œ๋ช… ์ธ์ฆ์„œ๊ฐ€ ์—†์–ด์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. ์•…์„ฑ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

**Windows (SmartScreen):**
1. **"์ถ”๊ฐ€ ์ •๋ณด"** ํ…์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”
2. ์•„๋ž˜์— ๋‚˜ํƒ€๋‚˜๋Š” **"์‹คํ–‰"** ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์„ธ์š”

**macOS (Gatekeeper):**
1. **์‹œ์Šคํ…œ ์„ค์ •** โ†’ **๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ** โ†’ ํ•˜๋‹จ์˜ **"ํ™•์ธ ์—†์ด ์—ด๊ธฐ"** ํด๋ฆญ
2. ๋˜๋Š”: Finder์—์„œ DirectPipe.app์„ **์šฐํด๋ฆญ** โ†’ **์—ด๊ธฐ** โ†’ **์—ด๊ธฐ** ํด๋ฆญ

ํ•œ ๋ฒˆ๋งŒ ํ•˜๋ฉด ์ดํ›„๋กœ๋Š” ๊ฒฝ๊ณ  ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

---

This is normal! DirectPipe is open-source and does not have a code signing certificate, so your OS shows a warning. It is not malware.

**Windows (SmartScreen):**
1. Click the **"More info"** text
2. Click the **"Run anyway"** button that appears

**macOS (Gatekeeper):**
1. **System Settings** โ†’ **Privacy & Security** โ†’ click **"Open Anyway"** at the bottom
2. Or: Right-click DirectPipe.app in Finder โ†’ **Open** โ†’ click **Open**

You only need to do this once โ€” the warning won't appear again.

VST ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ญ”๊ฐ€์š”? ์–ด๋””์„œ ๊ตฌํ•˜๋‚˜์š”? / What are VST plugins and where to get them?

VST ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์˜ค๋””์˜ค์— ํšจ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, EQ, ์ปดํ”„๋ ˆ์„œ ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

**๋ฌด๋ฃŒ ์ถ”์ฒœ ํ”Œ๋Ÿฌ๊ทธ์ธ:**
- [ReaPlugs](https://www.reaper.fm/reaplugs/) โ€” EQ, ์ปดํ”„๋ ˆ์„œ, ๊ฒŒ์ดํŠธ ๋“ฑ ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ์Œ (๋ฌด๋ฃŒ)
- [RNNoise](https://github.com/werman/noise-suppression-for-voice) โ€” AI ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ (๋ฌด๋ฃŒ)
- [TDR Nova](https://www.tokyodawn.net/tdr-nova/) โ€” ๊ณ ํ’ˆ์งˆ ๋‹ค์ด๋‚˜๋ฏน EQ (๋ฌด๋ฃŒ)
- [OrilRiver](https://www.kvraudio.com/product/orilriver-by-denis-tihanov) โ€” ๋ฆฌ๋ฒ„๋ธŒ (๋ฌด๋ฃŒ)

์„ค์น˜ ํ›„ DirectPipe์—์„œ **"Scan..."** ๋ฒ„ํŠผ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋”๋ฅผ ์Šค์บ”ํ•˜๋ฉด ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

---

VST plugins are software that add audio effects to your signal โ€” noise removal, EQ, compressor, reverb, and more.

**Free recommended plugins:**
- [ReaPlugs](https://www.reaper.fm/reaplugs/) โ€” EQ, compressor, gate, and more essentials (free)
- [RNNoise](https://github.com/werman/noise-suppression-for-voice) โ€” AI-powered real-time noise removal (free)
- [TDR Nova](https://www.tokyodawn.net/tdr-nova/) โ€” High-quality dynamic EQ (free)
- [OrilRiver](https://www.kvraudio.com/product/orilriver-by-denis-tihanov) โ€” Reverb (free)

After installing plugins, click **"Scan..."** in DirectPipe to scan your plugin folders. They will appear in the plugin list.

Discord / Zoom / OBS์—์„œ ์ฒ˜๋ฆฌ๋œ ๋งˆ์ดํฌ๋ฅผ ์“ฐ๋ ค๋ฉด? / How to use with Discord, Zoom, or OBS?

๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Windows: [VB-Cable](https://vb-audio.com/Cable/) (๋ฌด๋ฃŒ), macOS: [BlackHole](https://existential.audio/blackhole/) (๋ฌด๋ฃŒ) ๋˜๋Š” [Loopback](https://rogueamoeba.com/loopback/), Linux: PipeWire virtual sink ๋˜๋Š” JACK.

**์„ค์ • ์ˆœ์„œ:**
1. ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”์„ ์„ค์น˜ (Windows: VB-Cable ์„ค์น˜ ํ›„ ์žฌ๋ถ€ํŒ…, macOS: BlackHole ์„ค์น˜, Linux: PipeWire/JACK ์„ค์ •)
2. DirectPipe **Audio** ํƒญ:
- **Input** โ†’ ๋‚ด USB ๋งˆ์ดํฌ ์„ ํƒ
- **Output** โ†’ ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์ž…๋ ฅ ์„ ํƒ (์˜ˆ: Windows `CABLE Input`, macOS `BlackHole 2ch`)
3. Discord/Zoom/OBS ์Œ์„ฑ ์„ค์ •:
- **๋งˆ์ดํฌ** โ†’ ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์ถœ๋ ฅ ์„ ํƒ (์˜ˆ: Windows `CABLE Output`, macOS `BlackHole 2ch`)
4. ์ž๊ธฐ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด **Output** ํƒญ์—์„œ ํ—ค๋“œํฐ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”

```
๋‚ด USB ๋งˆ์ดํฌ โ†’ DirectPipe (๋…ธ์ด์ฆˆ ์ œ๊ฑฐ, EQ ๋“ฑ) โ†’ Virtual Cable Input
โ†“
Discord/Zoom/OBS โ† Virtual Cable Output (๋งˆ์ดํฌ๋กœ ์ธ์‹)
```

---

You need a virtual audio cable. Windows: [VB-Cable](https://vb-audio.com/Cable/) (free), macOS: [BlackHole](https://existential.audio/blackhole/) (free) or [Loopback](https://rogueamoeba.com/loopback/), Linux: PipeWire virtual sink or JACK.

**Setup steps:**
1. Install a virtual audio cable (Windows: VB-Cable + reboot, macOS: BlackHole, Linux: configure PipeWire/JACK)
2. In DirectPipe **Audio** tab:
- **Input** โ†’ Select your USB microphone
- **Output** โ†’ Select virtual cable input (e.g., Windows `CABLE Input`, macOS `BlackHole 2ch`)
3. In Discord / Zoom / OBS voice settings:
- **Microphone** โ†’ Select virtual cable output (e.g., Windows `CABLE Output`, macOS `BlackHole 2ch`)
4. To hear yourself, configure your headphone device in the **Output** tab

```
USB Mic โ†’ DirectPipe (Noise removal, EQ, etc.) โ†’ Virtual Cable Input
โ†“
Discord/Zoom/OBS โ† Virtual Cable Output (recognized as mic)
```

์†Œ๋ฆฌ๊ฐ€ ์•ˆ ๋‚˜์™€์š” / ๋งˆ์ดํฌ๊ฐ€ ์ธ์‹์ด ์•ˆ ๋ผ์š” / No sound or mic not detected

**ํ™•์ธ ์ˆœ์„œ:**
1. **Audio ํƒญ** โ†’ Input ์žฅ์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
2. ์™ผ์ชฝ **INPUT ๋ ˆ๋ฒจ ๋ฏธํ„ฐ**๊ฐ€ ์›€์ง์ด๋Š”์ง€ ํ™•์ธ โ†’ ์›€์ง์ด๋ฉด ๋งˆ์ดํฌ ์ž…๋ ฅ์€ ์ •์ƒ
3. ๋ ˆ๋ฒจ ๋ฏธํ„ฐ๊ฐ€ ์›€์ง์ด์ง€ ์•Š์œผ๋ฉด:
- **Windows**: ์„ค์ • โ†’ ๊ฐœ์ธ ์ •๋ณด โ†’ ๋งˆ์ดํฌ์—์„œ ์•ฑ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
- **macOS**: ์‹œ์Šคํ…œ ์„ค์ • โ†’ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ โ†’ ๋งˆ์ดํฌ์—์„œ DirectPipe ํ—ˆ์šฉ
- **Linux**: PulseAudio/PipeWire ๋ณผ๋ฅจ ์„ค์ •์—์„œ ์ž…๋ ฅ ์žฅ์น˜ ํ™•์ธ
- ๋‹ค๋ฅธ ์•ฑ(Discord ๋“ฑ)์ด ๋งˆ์ดํฌ๋ฅผ ๋…์  ๋ชจ๋“œ๋กœ ์‚ฌ์šฉ ์ค‘์ด๋ฉด ํ•ด์ œ
4. **OUT** ๋ฒ„ํŠผ์ด ์ดˆ๋ก์ƒ‰์ธ์ง€ ํ™•์ธ (๋นจ๊ฐ„์ƒ‰์ด๋ฉด ๋ฎคํŠธ ์ƒํƒœ โ†’ ํด๋ฆญํ•ด์„œ ํ•ด์ œ)
5. **PANIC MUTE**๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ๋‹ค์‹œ ํด๋ฆญํ•ด์„œ ํ•ด์ œ

---

**Troubleshooting steps:**
1. **Audio tab** โ†’ Make sure the correct Input device is selected
2. Check if the left **INPUT level meter** is moving โ†’ if it moves, mic input is working
3. If the level meter doesn't move:
- **Windows**: Settings โ†’ Privacy โ†’ Microphone โ€” make sure app access is allowed
- **macOS**: System Settings โ†’ Privacy & Security โ†’ Microphone โ€” allow DirectPipe
- **Linux**: Check input device in PulseAudio/PipeWire volume settings
- If another app (e.g., Discord) is using the mic in exclusive mode, disable exclusive mode
4. Check that the **OUT** button is green (red means muted โ†’ click to unmute)
5. If **PANIC MUTE** is active, click it again to deactivate

์†Œ๋ฆฌ๊ฐ€ ๋Š๊ธฐ๊ฑฐ๋‚˜ ์ง€์—ฐ์ด ์ปค์š” / Audio crackling or high latency

**Buffer Size๋ฅผ ์กฐ์ ˆํ•˜์„ธ์š”:**
- Audio ํƒญ โ†’ **Buffer Size**: ๊ฐ’์„ ๋‚ฎ์ถ”๋ฉด ์ง€์—ฐ์ด ์ค„์ง€๋งŒ CPU ๋ถ€๋‹ด ์ฆ๊ฐ€
- `256 samples` (์•ฝ 5ms @ 48kHz) โ€” ์ผ๋ฐ˜์ ์ธ ์‹œ์ž‘์ 
- `128 samples` (์•ฝ 2.7ms) โ€” ๋‚ฎ์€ ์ง€์—ฐ, ๊ณ ์‚ฌ์–‘ PC ๊ถŒ์žฅ
- `512 samples` (์•ฝ 10ms) โ€” ์•ˆ์ •์ , ์ €์‚ฌ์–‘ PC ๊ถŒ์žฅ

**๊ทธ๋ž˜๋„ ๋Š๊ธด๋‹ค๋ฉด:**
- ํ”Œ๋Ÿฌ๊ทธ์ธ ์ˆ˜๋ฅผ ์ค„์ด๊ฑฐ๋‚˜, CPU๋ฅผ ๋งŽ์ด ์“ฐ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ Bypass ์ฒ˜๋ฆฌ
- ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด **ASIO** ๋“œ๋ผ์ด๋ฒ„ ์‚ฌ์šฉ (Windows, ๋” ๋‚ฎ์€ ์ง€์—ฐ ๊ฐ€๋Šฅ)
- ํ•˜๋‹จ ์ƒํƒœ ๋ฐ”์˜ **CPU %** ์ˆ˜์น˜๋ฅผ ํ™•์ธ โ€” 60% ์ด์ƒ์ด๋ฉด ๊ณผ๋ถ€ํ•˜
- ํ•˜๋‹จ ์ƒํƒœ ๋ฐ”์˜ **XRun** ์ˆ˜์น˜๋ฅผ ํ™•์ธ โ€” 1๋ถ„๊ฐ„ ๋ฒ„ํผ ์–ธ๋”๋Ÿฐ ํšŸ์ˆ˜ ํ‘œ์‹œ
- **Windows Audio (Low Latency)** ๋ชจ๋“œ์—์„œ ๋Š๊ธด๋‹ค๋ฉด โ†’ **Windows Audio**๋กœ ๋ณ€๊ฒฝ ์‹œ๋„ (FAQ์˜ ๋“œ๋ผ์ด๋ฒ„ ๊ฐ€์ด๋“œ ์ฐธ์กฐ)
- **macOS**: CoreAudio ๊ธฐ๋ณธ ๋ฒ„ํผ ํฌ๊ธฐ ์กฐ์ ˆ (Audio MIDI Setup์—์„œ๋„ ํ™•์ธ ๊ฐ€๋Šฅ)
- **Linux**: JACK ์‚ฌ์šฉ ์‹œ `jackd` ์„ค์ •์—์„œ period/nperiods ์กฐ์ ˆ

---

**Adjust the Buffer Size:**
- Audio tab โ†’ **Buffer Size**: lower values reduce latency but increase CPU load
- `256 samples` (~5ms @ 48kHz) โ€” good starting point
- `128 samples` (~2.7ms) โ€” low latency, recommended for higher-end PCs
- `512 samples` (~10ms) โ€” stable, recommended for lower-end PCs

**Still crackling?**
- Reduce the number of plugins, or Bypass CPU-heavy ones
- If you have an audio interface, switch to **ASIO** driver (Windows, allows even lower latency)
- Check the **CPU %** in the bottom status bar โ€” above 60% indicates overload
- Check the **XRun** count in the status bar โ€” shows buffer underruns in the last 60 seconds
- **Windows**: If crackling in **Windows Audio (Low Latency)** โ†’ try switching to **Windows Audio** (see Driver Guide FAQ)
- **macOS**: Adjust CoreAudio buffer size (also configurable in Audio MIDI Setup)
- **Linux**: With JACK, tune `jackd` period/nperiods settings

์˜ค๋””์˜ค ๋“œ๋ผ์ด๋ฒ„ ์ข…๋ฅ˜์™€ ์„ ํƒ ๊ฐ€์ด๋“œ / Audio Driver Types & Selection Guide

DirectPipe๋Š” ํ”Œ๋žซํผ๋ณ„๋กœ ๋‹ค๋ฅธ ์˜ค๋””์˜ค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Audio ํƒญ์˜ **Driver** ๋“œ๋กญ๋‹ค์šด์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- **Windows**: 5๊ฐ€์ง€ ๋“œ๋ผ์ด๋ฒ„ (์•„๋ž˜ ์ƒ์„ธ ์„ค๋ช…)
- **macOS**: **CoreAudio** โ€” macOS ๊ธฐ๋ณธ ์˜ค๋””์˜ค ์‹œ์Šคํ…œ. ์ถ”๊ฐ€ ์„ค์ • ์—†์ด ์ž๋™ ๋™์ž‘, ์ถฉ๋ถ„ํžˆ ๋‚ฎ์€ ์ง€์—ฐ
- **Linux**: **ALSA** (๊ธฐ๋ณธ) ๋˜๋Š” **JACK** (์ €์ง€์—ฐ) โ€” JACK ์‚ฌ์šฉ ์‹œ `jackd` ์‹คํ–‰ ํ•„์š”

DirectPipe supports different audio drivers per platform. Select from the **Driver** dropdown in the Audio tab.

- **Windows**: 5 driver types (detailed below)
- **macOS**: **CoreAudio** โ€” macOS native audio system. Works automatically with low latency, no extra setup
- **Linux**: **ALSA** (default) or **JACK** (low latency) โ€” JACK requires running `jackd`

**Windows ๋“œ๋ผ์ด๋ฒ„ ์ƒ์„ธ / Windows Driver Details:**

### DirectSound (๋ ˆ๊ฑฐ์‹œ / Legacy)

Windows XP ์‹œ์ ˆ์˜ ์˜ค๋””์˜ค API์ž…๋‹ˆ๋‹ค. JUCE๊ฐ€ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉฐ ๋ชฉ๋ก์— ํ‘œ์‹œ๋˜์ง€๋งŒ, **WASAPI๋ณด๋‹ค ์ง€์—ฐ์ด ํฌ๊ณ  ๊ธฐ๋Šฅ์ด ์ œํ•œ์ ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.**

Legacy audio API from the Windows XP era. JUCE registers it automatically, but **it has higher latency and fewer features than WASAPI โ€” there is no reason to use it.**

- **์ง€์—ฐ / Latency**: 50-100ms+ (๊ฐ€์žฅ ๋†’์Œ / highest)
- **๋ฒ„ํผ ์ œ์–ด / Buffer control**: ์ œํ•œ์  / Limited
- **๋‹ค๋ฅธ ์•ฑ ๋™์‹œ ์‚ฌ์šฉ / Shared access**: O
- **์ถ”์ฒœ / Recommended for**: ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. **Windows Audio**๋ฅผ ์“ฐ์„ธ์š” / Don't use this. Use **Windows Audio**

### Windows Audio -- ์ถ”์ฒœ / Recommended

Windows WASAPI ๊ณต์œ  ๋ชจ๋“œ. ๋‹ค๋ฅธ ์•ฑ๊ณผ ๋™์‹œ์— ๊ฐ™์€ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์•ˆ์ •์ ์ธ ์„ ํƒ์ž…๋‹ˆ๋‹ค.**

Windows WASAPI shared mode. Other apps can use the same device simultaneously. **The most reliable choice for most users.**

- **์ง€์—ฐ / Latency**: 3-10ms (๋ฒ„ํผ ํฌ๊ธฐ์— ๋”ฐ๋ผ / depends on buffer size)
- **๋ฒ„ํผ ์ œ์–ด / Buffer control**: 144 samples (~3ms @ 48kHz)๋ถ€ํ„ฐ ์„ ํƒ ๊ฐ€๋Šฅ / Selectable from 144 samples
- **๋‹ค๋ฅธ ์•ฑ ๋™์‹œ ์‚ฌ์šฉ / Shared access**: O
- **์ถ”์ฒœ / Recommended for**: ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž, USB ๋งˆ์ดํฌ ์‚ฌ์šฉ์ž / Most users, USB mic users

### Windows Audio (Low Latency)

WASAPI ๊ณต์œ  ๋ชจ๋“œ์ด๋ฉด์„œ ์ €์ง€์—ฐ. Windows 10 1607+ ์—์„œ IAudioClient3๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ์†Œ ์ฃผ๊ธฐ(period)๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Low-latency shared WASAPI mode. Uses IAudioClient3 on Windows 10 1607+ for minimum audio periods.

- **์ง€์—ฐ / Latency**: ํ•˜๋“œ์›จ์–ด์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ / Varies by hardware
- **๋ฒ„ํผ ์ œ์–ด / Buffer control**: ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ณด๊ณ ํ•œ ์ตœ์†Œ ๋‹จ์œ„๋กœ ์„ธ๋ฐ€ ์กฐ์ ˆ / Fine-grained, hardware-defined steps
- **๋‹ค๋ฅธ ์•ฑ ๋™์‹œ ์‚ฌ์šฉ / Shared access**: O
- **์ฐธ๊ณ  / Note**: USB ๋งˆ์ดํฌ ๋“ฑ ๋งŽ์€ ์˜ค๋””์˜ค ์žฅ์น˜๊ฐ€ IAudioClient3๋ฅผ ์ œ๋Œ€๋กœ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค / Many audio devices (especially USB mics) don't properly support IAudioClient3

> **์ฃผ์˜ / Warning**: LL ๋ชจ๋“œ์˜ ์‹ค์ œ ์„ฑ๋Šฅ์€ **์˜ค๋””์˜ค ๋“œ๋ผ์ด๋ฒ„์˜ IAudioClient3 ๊ตฌํ˜„์— ์ „์ ์œผ๋กœ ์˜์กด**ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ USB ๋งˆ์ดํฌ์™€ ์ผ๋ฐ˜ ์˜ค๋””์˜ค ์žฅ์น˜์˜ ๋“œ๋ผ์ด๋ฒ„๋Š” IAudioClient3์˜ `GetSharedModeEnginePeriod()`์—์„œ ์ตœ์†Œ/์ตœ๋Œ€/๊ธฐ๋ณธ ์ฃผ๊ธฐ๋ฅผ ๋™์ผํ•œ ๊ฐ’(์˜ˆ: 480 samples = 10ms)์œผ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ **์ผ๋ฐ˜ Windows Audio ๋ชจ๋“œ๊ฐ€ ์˜คํžˆ๋ ค ๋” ๋‚ฎ์€ ๋ฒ„ํผ(144 samples = ~3ms)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ง€์—ฐ์ด ๋” ์ ์Šต๋‹ˆ๋‹ค.** LL ๋ชจ๋“œ์—์„œ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ผ๋ฐ˜ ๋ชจ๋“œ๋ณด๋‹ค ๋†’์€ ์ง€์—ฐ์ด ๋‚˜ํƒ€๋‚œ๋‹ค๋ฉด, **Windows Audio**๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
>
> **Warning**: LL mode performance **depends entirely on your audio driver's IAudioClient3 implementation**. Many USB mics and generic audio devices report the same value for min/max/default period in `GetSharedModeEnginePeriod()` (e.g., 480 samples = 10ms). In such cases, **standard Windows Audio mode can actually achieve lower buffers (144 samples = ~3ms) and thus lower latency.** If you can't change the buffer size in LL mode or see higher latency than standard mode, use **Windows Audio** instead.

### Windows Audio (Exclusive Mode)

WASAPI ๋…์  ๋ชจ๋“œ. ํ•ด๋‹น ์žฅ์น˜๋ฅผ ์•ฑ์ด ๋…์ ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์•ฑ์˜ ์†Œ๋ฆฌ๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

WASAPI exclusive mode. The app takes exclusive control of the device -- other apps cannot output sound.

- **์ง€์—ฐ / Latency**: 10-20ms
- **๋ฒ„ํผ ์ œ์–ด / Buffer control**: ์•ฑ์ด ์ง์ ‘ ์ œ์–ด / App-controlled
- **๋‹ค๋ฅธ ์•ฑ ๋™์‹œ ์‚ฌ์šฉ / Shared access**: **X** (๋…์  / exclusive)
- **์ถ”์ฒœ / Recommended for**: ๋…น์Œ ์ „์šฉ ํ™˜๊ฒฝ / Dedicated recording setups
- **์ฐธ๊ณ  / Note**: Windows ์‚ฌ์šด๋“œ ์„ค์ • > ์žฅ์น˜ ์†์„ฑ > "์•ฑ์ด ์ด ๊ธฐ๊ธฐ๋ฅผ ๋…์ ์ ์œผ๋กœ ์ œ์–ด" ์ฒดํฌ ํ•„์š” / Enable "Allow apps to take exclusive control" in Windows Sound settings

### ASIO

์ „๋ฌธ๊ฐ€์šฉ ์ €์ง€์—ฐ ๋“œ๋ผ์ด๋ฒ„. ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋„ค์ดํ‹ฐ๋ธŒ ASIO ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Professional low-latency driver. Requires native ASIO driver from your audio interface.

- **์ง€์—ฐ / Latency**: 2-5ms (๊ฐ€์žฅ ๋‚ฎ์Œ / lowest)
- **๋ฒ„ํผ ์ œ์–ด / Buffer control**: ASIO Control Panel์—์„œ ์„ธ๋ฐ€ ์กฐ์ ˆ / Fine control via ASIO Control Panel
- **๋‹ค๋ฅธ ์•ฑ ๋™์‹œ ์‚ฌ์šฉ / Shared access**: ์žฅ์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ / Depends on device
- **์ถ”์ฒœ / Recommended for**: ์ „๋ฌธ๊ฐ€, ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ์ž / Pros, audio interface users

### Windows ๋น„๊ต ์š”์•ฝ / Windows Driver Comparison

| | DirectSound | Windows Audio | Low Latency | Exclusive Mode | ASIO |
|---|---|---|---|---|---|
| ์ง€์—ฐ / Latency | 50-100ms+ | **3-10ms** | ๋“œ๋ผ์ด๋ฒ„ ์˜์กด / Driver-dependent | 10-20ms | **2-5ms** |
| ๋‹ค๋ฅธ ์•ฑ ๋™์‹œ / Shared | O | O | O | X | - |
| ๋ฒ„ํผ ์„ธ๋ฐ€๋„ / Buffer granularity | ์ œํ•œ์  / Limited | ๋ณดํ†ต / Moderate | ๋“œ๋ผ์ด๋ฒ„ ์˜์กด / Driver-dependent | ๋ณดํ†ต / Moderate | **์„ธ๋ฐ€ / Fine** |
| ํ˜ธํ™˜์„ฑ / Compatibility | ๋ชจ๋“  ์žฅ์น˜ / All | **๋ชจ๋“  ์žฅ์น˜ / All devices** | ์ œํ•œ์  / Limited | ๋Œ€๋ถ€๋ถ„ / Most | ์ „์šฉ ๋“œ๋ผ์ด๋ฒ„ / Driver needed |
| ์„ค์น˜ / Setup | ์—†์Œ / None | ์—†์Œ / None | ์—†์Œ / None | ์—†์Œ / None | ๋“œ๋ผ์ด๋ฒ„ ํ•„์š” / Driver needed |
| ์ถ”์ฒœ / Recommended | X | **O** | ์žฅ์น˜์— ๋”ฐ๋ผ / Depends | ๋…น์Œ ์ „์šฉ / Recording | ์ „๋ฌธ๊ฐ€ / Pro |

### ์„ ํƒ ๊ฐ€์ด๋“œ / Quick Selection Guide

**Windows:**
1. **USB ๋งˆ์ดํฌ ์‚ฌ์šฉ์ž** -> **Windows Audio** ์‚ฌ์šฉ (๊ฐ€์žฅ ์•ˆ์ •์ , ์ถฉ๋ถ„ํžˆ ๋‚ฎ์€ ์ง€์—ฐ) / Use Windows Audio (most reliable, low enough latency)
2. **์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด** -> **ASIO** ์‚ฌ์šฉ (์ตœ์ € ์ง€์—ฐ) / Use ASIO (lowest latency)
3. **LL ๋ชจ๋“œ๋ฅผ ์‹œ๋„ํ•ด๋ดค๋Š”๋ฐ ๋ฒ„ํผ ๋ณ€๊ฒฝ์ด ์•ˆ ๋˜๊ฑฐ๋‚˜ ์ง€์—ฐ์ด ๋†’๋‹ค๋ฉด** -> **Windows Audio**๋กœ ๋Œ์•„๊ฐ€์„ธ์š” / If LL mode doesn't allow buffer changes or has higher latency, go back to Windows Audio
4. **๋…น์Œ ์ „์šฉ PC๋ผ๋ฉด** -> **Windows Audio (Exclusive Mode)** ๋„ ๊ณ ๋ ค / Consider Exclusive Mode

**macOS:** CoreAudio ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ (์ถ”๊ฐ€ ์„ ํƒ ๋ถˆํ•„์š”) / CoreAudio is the only option (no driver selection needed)

**Linux:** ์ผ๋ฐ˜ ์‚ฌ์šฉ์€ ALSA, ์ €์ง€์—ฐ์ด ํ•„์š”ํ•˜๋ฉด JACK ์‚ฌ์šฉ / Use ALSA for general use, JACK for low latency

ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šค์บ” ์ค‘ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™์•„์š” / Plugin scan seems stuck

ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šค์บ”์€ **๋ณ„๋„ ํ”„๋กœ์„ธ์Šค**์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ DirectPipe๊ฐ€ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ํฌ๋ž˜์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์Šค์บ”์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ตœ๋Œ€ 5๋ถ„).

- ํฌ๋ž˜์‹œ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ž๋™์œผ๋กœ **๋ธ”๋ž™๋ฆฌ์ŠคํŠธ**์— ๋“ฑ๋ก๋˜์–ด ๋‹ค์Œ ์Šค์บ”์—์„œ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค
- ์Šค์บ” ๋กœ๊ทธ ํ™•์ธ: Windows `%AppData%/DirectPipe/scanner-log.txt`, macOS `~/Library/Application Support/DirectPipe/scanner-log.txt`, Linux `~/.config/DirectPipe/scanner-log.txt`

---

Plugin scanning runs in a **separate process**, so a plugin scan crash should not take down the main DirectPipe app. Some plugins may take a while to scan (up to 5 minutes).

- Plugins that cause crashes are automatically **blacklisted** and skipped in future scans
- Scan log: Windows `%AppData%/DirectPipe/scanner-log.txt`, macOS `~/Library/Application Support/DirectPipe/scanner-log.txt`, Linux `~/.config/DirectPipe/scanner-log.txt`

ํ”„๋ฆฌ์…‹์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”? / How to use presets?

**Quick Preset Slots (Aโ€“E):**
- ํ˜„์žฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฒด์ธ๊ณผ ์„ค์ •์„ **Aโ€“E** ์Šฌ๋กฏ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
- ์Šฌ๋กฏ ๋ฒ„ํŠผ **(A/B/C/D/E)** ํด๋ฆญ โ†’ ๋น„์–ด์žˆ์œผ๋ฉด ํ˜„์žฌ ์ƒํƒœ ์ €์žฅ, ์ฐจ์žˆ์œผ๋ฉด ํ•ด๋‹น ์Šฌ๋กฏ ๋กœ๋“œ
- ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋ฐ”๊ฟ”์„œ **์ฆ‰์‹œ ์ „ํ™˜**, ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋ฉด **๋น„๋™๊ธฐ ๋กœ๋”ฉ** (ํ”„๋ฆฌ๋กœ๋”ฉ ์บ์‹œ๋กœ ๋Š๊น€ ์—†์ด ์ฆ‰์‹œ ์ „ํ™˜)
- ์Šฌ๋กฏ **์šฐํด๋ฆญ** โ†’ **์ด๋ฆ„ ๋ณ€๊ฒฝ** (์˜ˆ: `A|๊ฒŒ์ž„`), **๋ณต์ œ**, **์‚ญ์ œ**, **๋‚ด๋ณด๋‚ด๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ** (`.dppreset`)
- **Save/Load** ๋ฒ„ํŠผ์œผ๋กœ .dppreset ํŒŒ์ผ์— ํ”„๋ฆฌ์…‹ ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๊ฐ€๋Šฅ

์˜ˆ: ๊ฒŒ์ž„ ์ค‘์—” **A|๊ฒŒ์ž„** (๋…ธ์ด์ฆˆ ์ œ๊ฑฐ๋งŒ), ๋…ธ๋ž˜๋ฐฉ์—์„  **B|๋…ธ๋ž˜** (๋ฆฌ๋ฒ„๋ธŒ + ์ปดํ”„๋ ˆ์„œ)

---

**Quick Preset Slots (Aโ€“E):**
- Save your current plugin chain and settings to slots **A through E**
- Click a slot button **(A/B/C/D/E)** โ†’ saves current state if empty, loads slot if occupied
- If the plugins are the same, only parameters change (**near-instant switch**); different plugins use **async loading** (preloading cache can shorten the transition)
- **Right-click** slot โ†’ **Rename** (e.g., `A|Game`), **Copy**, **Delete**, **Export/Import** (`.dppreset`)
- Use **Save/Load** buttons to save/load presets as .dppreset files

Example: Slot **A|Game** for gaming (noise removal only), Slot **B|Karaoke** for karaoke (reverb + compressor)

Monitor ์ถœ๋ ฅ์€ ๋ญ”๊ฐ€์š”? / What is Monitor output?

**Monitor**๋Š” ์ž๊ธฐ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ํ—ค๋“œํฐ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. VST ์ดํŽ™ํŠธ๊ฐ€ ์ ์šฉ๋œ ์ž์‹ ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- **Output** ํƒญ์—์„œ ํ—ค๋“œํฐ์ด ์—ฐ๊ฒฐ๋œ ์˜ค๋””์˜ค ์žฅ์น˜๋ฅผ ์„ ํƒ
- Main Output๊ณผ๋Š” ๋ณ„๋„์˜ ์˜ค๋””์˜ค ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ **๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘** (Windows: WASAPI, macOS: CoreAudio)
- **MON** ๋ฒ„ํŠผ์œผ๋กœ ์ผœ๊ธฐ/๋„๊ธฐ

> **์ง€์—ฐ(๋ ˆ์ดํ„ด์‹œ) ์ฐธ๊ณ **: ๋ชจ๋‹ˆํ„ฐ ์ถœ๋ ฅ์€ ๋ฉ”์ธ ์˜ค๋””์˜ค์™€ ๋ณ„๋„์˜ ์˜ค๋””์˜ค ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์žฅ์น˜/๋“œ๋ผ์ด๋ฒ„/๋ฒ„ํผ ์„ค์ •์— ๋”ฐ๋ผ ๋ณดํ†ต **์ถ”๊ฐ€ ์ง€์—ฐ์ด ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค**. ๋งŽ์€ ํ™˜๊ฒฝ์—์„œ ๋Œ€๋žต `~15-20ms` ์ˆ˜์ค€์ด์ง€๋งŒ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‚ฎ์€ ๋ชจ๋‹ˆํ„ฐ ์ง€์—ฐ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด **ASIO ๋“œ๋ผ์ด๋ฒ„ ์‚ฌ์šฉ** (Windows, ์ž…์ถœ๋ ฅ์ด ํ•˜๋‚˜์˜ ๋””๋ฐ”์ด์Šค๋กœ ์ฒ˜๋ฆฌ๋จ) ๋˜๋Š” ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค์˜ **ํ•˜๋“œ์›จ์–ด ๋‹ค์ด๋ ‰ํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง** ๊ธฐ๋Šฅ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

---

**Monitor** lets you hear your own processed voice through headphones in real-time, with all VST effects applied.

- Select your headphone device in the **Output** tab
- Uses a separate audio device from the Main Output, so it **works independently** (Windows: WASAPI, macOS: CoreAudio)
- Toggle on/off with the **MON** button

> **Latency note**: Monitor output uses a separate audio device, so you will usually hear some extra latency depending on the device, driver, and buffer settings. In many setups this is roughly `~15-20ms`, but it can vary by system. For the lowest monitor latency, use an **ASIO driver** (Windows only, single device handles both input and output) or your audio interface's **hardware direct monitoring** feature.

์ปดํ“จํ„ฐ ์‹œ์ž‘ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋ ค๋ฉด? / How to auto-start at login?

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•:
1. **์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด** ์•„์ด์ฝ˜ ์šฐํด๋ฆญ โ†’ ์ž๋™ ์‹œ์ž‘ ์ฒดํฌ
2. **Settings** ํƒญ โ†’ ์ž๋™ ์‹œ์ž‘ ์ฒดํฌ

๋ผ๋ฒจ์€ ํ”Œ๋žซํผ๋ณ„๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค: Windows/Linux "Start with System", macOS "Open at Login".

ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋กœ๊ทธ์ธ ์‹œ ์ž๋™์œผ๋กœ ํŠธ๋ ˆ์ด์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. X ๋ฒ„ํŠผ์œผ๋กœ ์ฐฝ์„ ๋‹ซ์•„๋„ ํŠธ๋ ˆ์ด์— ๋‚จ์•„์„œ ๊ณ„์† ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

- **Windows**: ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (`HKCU\...\Run`)
- **macOS**: LaunchAgent (`~/Library/LaunchAgents/`)
- **Linux**: XDG autostart (`~/.config/autostart/`)

---

Two ways to enable:
1. Right-click the **system tray** icon โ†’ check the auto-start toggle
2. **Settings** tab โ†’ check the auto-start toggle

The label adapts to your platform: Windows/Linux "Start with System", macOS "Open at Login".

Once enabled, DirectPipe launches automatically at login. Closing the window (X button) minimizes it to the tray โ€” it keeps running in the background.

- **Windows**: Registry (`HKCU\...\Run`)
- **macOS**: LaunchAgent (`~/Library/LaunchAgents/`)
- **Linux**: XDG autostart (`~/.config/autostart/`)

Stream Deck ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์–ด๋””์„œ ๋ฐ›๋‚˜์š”? / Where to get the Stream Deck plugin?

**[Elgato Marketplace์—์„œ ๋ฌด๋ฃŒ ์„ค์น˜](https://marketplace.elgato.com/product/directpipe-29f7cbb8-cb90-425d-9dbc-b2158e7ea8b3)** โ€” Stream Deck ์•ฑ์—์„œ ๋ฐ”๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

**[Install free from Elgato Marketplace](https://marketplace.elgato.com/product/directpipe-29f7cbb8-cb90-425d-9dbc-b2158e7ea8b3)** โ€” Installs directly into the Stream Deck app.

์ง€์› ์•ก์…˜ (10์ข…): Bypass Toggle, Volume Control (SD+ ๋‹ค์ด์–ผ), Preset Switch, Monitor Toggle, Panic Mute, Recording Toggle, IPC Toggle, Performance Monitor, Plugin Parameter (SD+ ๋‹ค์ด์–ผ), Preset Bar (SD+ ํ„ฐ์น˜์Šคํฌ๋ฆฐ)

Supported actions (10): Bypass Toggle, Volume Control (SD+ dial), Preset Switch, Monitor Toggle, Panic Mute, Recording Toggle, IPC Toggle, Performance Monitor, Plugin Parameter (SD+ dial), Preset Bar (SD+ touchscreen)

Stream Deck ์—†์ด๋„ ์™ธ๋ถ€ ์ œ์–ด๊ฐ€ ๋˜๋‚˜์š”? / Can I control without a Stream Deck?

๋„ค! ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Yes! Multiple control methods are available:

| ๋ฐฉ๋ฒ• / Method | ์˜ˆ์‹œ / Example | ์ ํ•ฉํ•œ ์šฉ๋„ / Best for |
|---|---|---|
| **ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค / Hotkeys** | Ctrl+Shift+1โ€“9 bypass, F1โ€“F5 ํ”„๋ฆฌ์…‹ / presets | ๊ฐ€์žฅ ๊ฐ„ํŽธ / Simplest |
| **MIDI CC** | ๋ฏธ๋”” ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋ธŒ/๋ฒ„ํŠผ / MIDI controller knobs | ์‹ค์‹œ๊ฐ„ ๋ณผ๋ฅจ ์กฐ์ ˆ / Real-time volume |
| **HTTP API** | `curl http://localhost:8766/api/...` | ์Šคํฌ๋ฆฝํŠธ ์ž๋™ํ™” / Script automation |
| **WebSocket** | ws://localhost:8765 | ์ปค์Šคํ…€ ์•ฑ/๋ด‡ ์—ฐ๋™ / Custom app integration |

์ž์„ธํ•œ ๋‚ด์šฉ / Details: [Control API](docs/CONTROL_API.md)

DirectPipe Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ญ”๊ฐ€์š”? / What is the DirectPipe Receiver plugin?

**DirectPipe Receiver**๋Š” DirectPipe์—์„œ ์ฒ˜๋ฆฌํ•œ ๋งˆ์ดํฌ ์˜ค๋””์˜ค๋ฅผ **OBS, DAW ๋“ฑ**์—์„œ ์ง์ ‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. VST2, VST3, AU ํฌ๋งท์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค (OBS๋Š” VST2๋งŒ ์ง€์›).

๋ณดํ†ต DirectPipe์—์„œ ์ฒ˜๋ฆฌ๋œ ์˜ค๋””์˜ค๋ฅผ OBS๋กœ ๋ณด๋‚ด๋ ค๋ฉด ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ” (VB-Cable, BlackHole ๋“ฑ)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. DirectPipe Receiver๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด **๊ฐ€์ƒ ์ผ€์ด๋ธ” ์—†์ด** ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(IPC)๋ฅผ ํ†ตํ•ด ์˜ค๋””์˜ค๋ฅผ ์ง์ ‘ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ์„ค์ •์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์ง€์—ฐ๋„ ์ ์Šต๋‹ˆ๋‹ค.

---

**DirectPipe Receiver** is a plugin that lets **OBS, DAWs, and other hosts** receive DirectPipe's processed mic audio directly. Available in VST2, VST3, and AU formats (OBS only supports VST2).

Normally, to route DirectPipe's processed audio to OBS, you need a **virtual audio cable** (VB-Cable, BlackHole, etc.). With the DirectPipe Receiver, you can receive audio directly via shared memory (IPC) โ€” **no virtual cable needed**, usually simpler to set up, and often lower-latency or more predictable than virtual-cable routing depending on the host and driver setup.

**DirectPipe Receiver vs. Virtual Cable ๋น„๊ต / Comparison:**

| | DirectPipe Receiver | ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ” / Virtual Audio Cable |
|---|---|---|
| ์„ค์น˜ / Install | Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ์„ VST/AU ํด๋”์— ๋ณต์‚ฌ / Copy plugin to VST/AU folder | ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์„ค์น˜ (VB-Cable/BlackHole ๋“ฑ) / Install virtual cable |
| ์„ค์ • / Setup | OBS/DAW์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ•„ํ„ฐ ์ถ”๊ฐ€๋งŒ ํ•˜๋ฉด ๋จ / Just add plugin filter in OBS/DAW | DirectPipe Output + OBS Input ์–‘์ชฝ ์„ค์ • ํ•„์š” / Configure both sides |
| ์ง€์—ฐ / Latency | ~5โ€“85ms (ํ”„๋ฆฌ์…‹ ์„ ํƒ ๊ฐ€๋Šฅ) / Configurable | ๋“œ๋ผ์ด๋ฒ„์— ์˜์กด / Depends on driver |
| ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด / Extra software | ๋ถˆํ•„์š” / None needed | ๊ฐ€์ƒ ์ผ€์ด๋ธ” ํ•„์š” (VB-Cable/BlackHole ๋“ฑ) / Virtual cable required |
| ํ˜ธํ™˜์„ฑ / Compatibility | VST2/VST3/AU ์ง€์› ์•ฑ / VST2/VST3/AU-capable apps | ๋ชจ๋“  ์•ฑ / Any app |
| ์ถ”์ฒœ / Recommended for | OBS, DAW ์‚ฌ์šฉ์ž / OBS, DAW users | Discord, Zoom ๋“ฑ ์ผ๋ฐ˜ ์•ฑ / General apps |

OBS์—์„œ Receiver VST2๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”? / How to use the Receiver VST2 in OBS?

**OBS์—์„œ Receiver VST2 ์„ค์ •ํ•˜๊ธฐ (OBS๋Š” VST2๋งŒ ์ง€์›):**

1. **Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ**์„ VST2 ํด๋”์— ๋ณต์‚ฌ
- **Windows**: `DirectPipe Receiver.dll` โ†’ `C:\Program Files\VSTPlugins\` (๊ถŒ์žฅ), `C:\Program Files\Common Files\VST2\`, ๋˜๋Š” `C:\Program Files\Steinberg\VstPlugins\`
- **macOS**: `DirectPipe Receiver.vst` โ†’ `/Library/Audio/Plug-Ins/VST/` ๋˜๋Š” `~/Library/Audio/Plug-Ins/VST/`
- **Linux**: `DirectPipe Receiver.so` โ†’ `/usr/lib/vst/` ๋˜๋Š” `~/.vst/`

2. **DirectPipe**์—์„œ IPC ์ถœ๋ ฅ ์ผœ๊ธฐ
- DirectPipe ์‹คํ–‰ โ†’ ํ•˜๋‹จ์˜ **VST** ๋ฒ„ํŠผ ํด๋ฆญ (์ดˆ๋ก์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ)
- ๋˜๋Š”: **Output** ํƒญ์—์„œ **"Enable VST Receiver Output"** ์ฒดํฌ
- ๋˜๋Š”: ์‚ฌ์šฉ์ž ์ •์˜ ๋‹จ์ถ•ํ‚ค (Controls > Hotkeys์—์„œ IPC Toggle์— ๋‹จ์ถ•ํ‚ค ํ• ๋‹น)

3. **OBS** ์„ค์ •
- OBS ์‹คํ–‰ โ†’ **์†Œ์Šค** ์˜์—ญ์—์„œ ์˜ค๋””์˜ค ์†Œ์Šค(๋งˆ์ดํฌ ๋“ฑ) ์„ ํƒ โ†’ **ํ•„ํ„ฐ** ํด๋ฆญ
- **"+" ๋ฒ„ํŠผ** โ†’ **"VST 2.x ํ”Œ๋Ÿฌ๊ทธ์ธ"** ์„ ํƒ
- ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชฉ๋ก์—์„œ **"DirectPipe Receiver"** ์„ ํƒ
- **"ํ”Œ๋Ÿฌ๊ทธ์ธ ์ธํ„ฐํŽ˜์ด์Šค ์—ด๊ธฐ"** ํด๋ฆญํ•˜๋ฉด ์—ฐ๊ฒฐ ์ƒํƒœ์™€ ๋ฒ„ํผ ์„ค์ • ํ™•์ธ ๊ฐ€๋Šฅ

4. **์—ฐ๊ฒฐ ํ™•์ธ**
- Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ UI์—์„œ **"Connected"** (์ดˆ๋ก์ƒ‰ ์›)์ด ํ‘œ์‹œ๋˜๋ฉด ์ •์ƒ
- "Disconnected" (๋นจ๊ฐ„์ƒ‰)์ด๋ฉด DirectPipe๊ฐ€ ์‹คํ–‰ ์ค‘์ด๊ณ  IPC๊ฐ€ ์ผœ์ ธ ์žˆ๋Š”์ง€ ํ™•์ธ

```
DirectPipe (๋งˆ์ดํฌ + VST ์ดํŽ™ํŠธ)
โ†“ IPC (๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ)
OBS [DirectPipe Receiver VST ํ•„ํ„ฐ]
โ†“
๋ฐฉ์†ก / ๋…นํ™”
```

---

**Setting up Receiver VST2 in OBS (OBS only supports VST2):**

1. **Copy the Receiver plugin** to a VST2 folder:
- **Windows**: `DirectPipe Receiver.dll` โ†’ `C:\Program Files\VSTPlugins\` (Recommended), `C:\Program Files\Common Files\VST2\`, or `C:\Program Files\Steinberg\VstPlugins\`
- **macOS**: `DirectPipe Receiver.vst` โ†’ `/Library/Audio/Plug-Ins/VST/` or `~/Library/Audio/Plug-Ins/VST/`
- **Linux**: `DirectPipe Receiver.so` โ†’ `/usr/lib/vst/` or `~/.vst/`

2. **Enable IPC output in DirectPipe**
- Run DirectPipe โ†’ click the **VST** button at the bottom (turns green)
- Or: **Output** tab โ†’ check **"Enable VST Receiver Output"**
- Or: user-defined hotkey (assign a key combo to IPC Toggle in Controls > Hotkeys)

3. **Configure OBS**
- Open OBS โ†’ select an audio source (e.g., mic) โ†’ click **Filters**
- Click **"+"** โ†’ select **"VST 2.x Plug-in"**
- Choose **"DirectPipe Receiver"** from the plugin list
- Click **"Open Plug-in Interface"** to verify connection and adjust buffer settings

4. **Verify connection**
- In the Receiver plugin UI, **"Connected"** with a green circle = working
- If "Disconnected" (red), check that DirectPipe is running and IPC is enabled

```
DirectPipe (Mic + VST Effects)
โ†“ IPC (Shared Memory)
OBS [DirectPipe Receiver VST Filter]
โ†“
Stream / Recording
```

Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋Š๊น€/์ง€์—ฐ์ด ์žˆ์–ด์š” / Audio crackling or latency with DirectPipe Receiver

**๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์„ธ์š”:**

Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ UI๋ฅผ ์—ด๋ฉด **Buffer** ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

| ํ”„๋ฆฌ์…‹ | ์ง€์—ฐ | ๊ถŒ์žฅ ์ƒํ™ฉ |
|---|---|---|
| **Ultra Low** | ~5ms | ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์ค‘์š”ํ•  ๋•Œ (๋Š๊น€ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ) |
| **Low** (๊ธฐ๋ณธ) | ~10ms | ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์— ์ ํ•ฉ |
| **Medium** | ~21ms | ์•ˆ์ •์ ์ธ ์—ฐ๊ฒฐ |
| **High** | ~42ms | CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์„ ๋•Œ |
| **Safe** | ~85ms | ๋Š๊น€์ด ์ž์ฃผ ๋ฐœ์ƒํ•  ๋•Œ |

**์—ฌ์ „ํžˆ ๋Š๊ธด๋‹ค๋ฉด:**
- ํ•œ ๋‹จ๊ณ„ ๋†’์€ ๋ฒ„ํผ ํ”„๋ฆฌ์…‹์„ ์„ ํƒํ•˜์„ธ์š”
- DirectPipe์™€ OBS์˜ **์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๋ฅผ ๋™์ผํ•˜๊ฒŒ** ๋งž์ถ”์„ธ์š” (์˜ˆ: ๋‘˜ ๋‹ค 48000Hz)
- CPU ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•˜์„ธ์š” โ€” DirectPipe ํ•˜๋‹จ ์ƒํƒœ ๋ฐ”์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ

---

**Adjust the buffer size:**

Open the Receiver plugin interface and select a buffer size from the **Buffer** dropdown.

| Preset | Latency | Recommended for |
|---|---|---|
| **Ultra Low** | ~5ms | When real-time monitoring matters (risk of dropouts) |
| **Low** (default) | ~10ms | Most situations |
| **Medium** | ~21ms | Stable connection |
| **High** | ~42ms | When CPU load is high |
| **Safe** | ~85ms | If you experience frequent dropouts |

**Still getting dropouts?**
- Select a higher buffer preset
- Make sure DirectPipe and OBS use the **same sample rate** (e.g., both at 48000Hz)
- Check CPU usage โ€” visible in DirectPipe's bottom status bar

DirectPipe Receiver์™€ ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์ค‘ ๋ญ˜ ์จ์•ผ ํ•˜๋‚˜์š”? / Should I use DirectPipe Receiver or Virtual Cable?

**์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค:**

**DirectPipe Receiver๋ฅผ ์ถ”์ฒœํ•˜๋Š” ๊ฒฝ์šฐ:**
- **OBS**์—์„œ DirectPipe ์˜ค๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ (OBS๋Š” VST2 ์ง€์›)
- **DAW**์—์„œ DirectPipe ์˜ค๋””์˜ค๋ฅผ ๋ฐ›์•„ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ (VST3/AU ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
- ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”์„ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ
- ์„ค์ •์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

**๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ”์„ ์ถ”์ฒœํ•˜๋Š” ๊ฒฝ์šฐ (VB-Cable/BlackHole/PipeWire):**
- **Discord, Zoom, Google Meet** ๋“ฑ VST ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
- ์—ฌ๋Ÿฌ ์•ฑ์—์„œ ๋™์‹œ์— DirectPipe ์˜ค๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
- OBS ์ด์™ธ์˜ ์•ฑ์—์„œ๋„ ๊ฐ€์ƒ ๋งˆ์ดํฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

**๋‘˜ ๋‹ค ๋™์‹œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!**
- DirectPipe Output โ†’ ๊ฐ€์ƒ ์ผ€์ด๋ธ” (Discord/Zoom์šฉ)
- DirectPipe IPC โ†’ Receiver VST2 (OBS์šฉ)
- ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Discord์—๋Š” ๊ฐ€์ƒ ์ผ€์ด๋ธ”๋กœ, OBS์—๋Š” DirectPipe Receiver๋กœ ๋™์‹œ์— ์˜ค๋””์˜ค๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

---

**Depends on your use case:**

**Use DirectPipe Receiver when:**
- Using DirectPipe audio in **OBS** (OBS supports VST2)
- Using DirectPipe audio in a **DAW** (VST3/AU available)
- Don't want to install virtual audio cable software
- Want minimal setup

**Use a virtual audio cable (VB-Cable/BlackHole/PipeWire) when:**
- Using apps that **don't support VST plugins** (Discord, Zoom, Google Meet, etc.)
- Need to use DirectPipe audio in multiple apps simultaneously
- Need a virtual microphone for non-OBS apps

**You can use both at the same time!**
- DirectPipe Output โ†’ Virtual cable (for Discord/Zoom)
- DirectPipe IPC โ†’ Receiver VST2 (for OBS)
- This lets you send audio to Discord via virtual cable and to OBS via DirectPipe Receiver simultaneously

IPC ์ถœ๋ ฅ(VST ๋ฒ„ํŠผ)์€ ๋ญ”๊ฐ€์š”? ์ผœ์•ผ ํ•˜๋‚˜์š”? / What is IPC Output (VST button)? Do I need to enable it?

**IPC(Inter-Process Communication) ์ถœ๋ ฅ**์€ DirectPipe์—์„œ ์ฒ˜๋ฆฌํ•œ ์˜ค๋””์˜ค๋ฅผ **๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ**๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค(DirectPipe Receiver ํ”Œ๋Ÿฌ๊ทธ์ธ)์— ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

**๊ธฐ๋ณธ๊ฐ’์€ ๊บผ์ ธ(OFF) ์žˆ์Šต๋‹ˆ๋‹ค.** ๊ฐ€์ƒ ์˜ค๋””์˜ค ์ผ€์ด๋ธ” (VB-Cable, BlackHole ๋“ฑ)๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ผค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

**์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:**
- OBS์—์„œ **DirectPipe Receiver VST2** ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ๋•Œ
- ๊ฐ€์ƒ ์ผ€์ด๋ธ” ์—†์ด OBS๋กœ ์˜ค๋””์˜ค๋ฅผ ์ง์ ‘ ๋ณด๋‚ด๊ณ  ์‹ถ์„ ๋•Œ

**์ผœ๋Š” ๋ฐฉ๋ฒ• (5๊ฐ€์ง€):**
1. DirectPipe ๋ฉ”์ธ ํ™”๋ฉด ํ•˜๋‹จ์˜ **VST** ๋ฒ„ํŠผ ํด๋ฆญ
2. **Output** ํƒญ โ†’ **"Enable VST Receiver Output"** ์ฒดํฌ
3. ์‚ฌ์šฉ์ž ์ •์˜ ๋‹จ์ถ•ํ‚ค (Controls > Hotkeys์—์„œ IPC Toggle์— ๋‹จ์ถ•ํ‚ค ํ• ๋‹น)
4. Stream Deck **IPC Toggle** ๋ฒ„ํŠผ
5. HTTP API: `curl http://localhost:8766/api/ipc/toggle`

์ผœ๋ฉด VST ๋ฒ„ํŠผ์ด **์ดˆ๋ก์ƒ‰**์œผ๋กœ ๋ณ€ํ•˜๊ณ , ๋„๋ฉด **๋นจ๊ฐ„์ƒ‰**์ž…๋‹ˆ๋‹ค.

---

**IPC (Inter-Process Communication) Output** sends DirectPipe's processed audio to another process (the DirectPipe Receiver plugin) via **shared memory**.

**It's OFF by default.** If you only use a virtual audio cable (VB-Cable, BlackHole, etc.), you don't need to enable it.

**Enable it when:**
- Using the **DirectPipe Receiver VST2** plugin in OBS
- Want to route audio to OBS without a virtual cable

**How to enable (5 ways):**
1. Click the **VST** button at the bottom of DirectPipe's main window
2. **Output** tab โ†’ check **"Enable VST Receiver Output"**
3. User-defined hotkey (assign a key combo to IPC Toggle in Controls > Hotkeys)
4. Stream Deck **IPC Toggle** button
5. HTTP API: `curl http://localhost:8766/api/ipc/toggle`

When enabled, the VST button turns **green**; when disabled, it's **red**.

์—…๋ฐ์ดํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? / How to update DirectPipe?

DirectPipe๋Š” **์ธ์•ฑ ์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ**์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉด ํ•˜๋‹จ credit ๋ผ๋ฒจ์— **"NEW vX.Y.Z"** ๊ฐ€ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

**Windows**: "Update Now" ๋ฒ„ํŠผ์œผ๋กœ ์ž๋™ ๋‹ค์šด๋กœ๋“œ โ†’ exe ๊ต์ฒด โ†’ ์žฌ์‹œ์ž‘.
**macOS/Linux**: "View on GitHub" ๋ฒ„ํŠผ์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆ ํŽ˜์ด์ง€์—์„œ ์ˆ˜๋™ ๋‹ค์šด๋กœ๋“œ.

์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ๊ธฐ์กด ๋ฒ„์ „์€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

---

DirectPipe includes **in-app update notification**. When a newer version is available, the bottom credit label shows **"NEW vX.Y.Z"** in orange.

**Windows**: Click "Update Now" for auto-download โ†’ replace exe โ†’ restart.
**macOS/Linux**: Click "View on GitHub" to manually download from the release page.

If you're offline, the current version continues to work normally.

ASIO๋ฅผ ์„ ํƒํ–ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์•ฑ์—์„œ ์†Œ๋ฆฌ๊ฐ€ ์•ˆ ๋‚˜์š” / Other apps lose audio when ASIO is selected

ASIO ๋“œ๋ผ์ด๋ฒ„๋Š” ์˜ค๋””์˜ค ์žฅ์น˜๋ฅผ **๋…์ (Exclusive)** ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. DirectPipe๊ฐ€ ASIO๋กœ ์˜ค๋””์˜ค ์žฅ์น˜๋ฅผ ์—ด๋ฉด, ๋‹ค๋ฅธ ์•ฑ(Discord, ๋ธŒ๋ผ์šฐ์ € ๋“ฑ)์ด ๊ฐ™์€ ์žฅ์น˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

**ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
1. **WASAPI Shared ์‚ฌ์šฉ (๊ถŒ์žฅ)** โ€” Audio ํƒญ > Driver Type์„ "Windows Audio"๋กœ ๋ณ€๊ฒฝ. ๋‹ค๋ฅธ ์•ฑ๊ณผ ์žฅ์น˜๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2. **ASIO4ALL ์‚ฌ์šฉ** โ€” ์—ฌ๋Ÿฌ ์žฅ์น˜๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ASIO ์žฅ์น˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€์—ฐ์ด ๋‹ค์†Œ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
3. **์ „์šฉ ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ** โ€” Focusrite, SSL ๋“ฑ ์ „์šฉ ์ธํ„ฐํŽ˜์ด์Šค์˜ ASIO ๋“œ๋ผ์ด๋ฒ„๋Š” ํ•ด๋‹น ์žฅ์น˜๋งŒ ๋…์ ํ•˜๋ฏ€๋กœ, ๋‚ด์žฅ ์‚ฌ์šด๋“œ์นด๋“œ๋Š” ๋‹ค๋ฅธ ์•ฑ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

---

ASIO drivers use **exclusive access** to the audio device. When DirectPipe opens a device via ASIO, other apps (Discord, browser, etc.) cannot access it.

**Solutions:**
1. **Use WASAPI Shared (recommended)** โ€” Change Driver Type to "Windows Audio" in Audio tab. Shares the device with other apps.
2. **Use ASIO4ALL** โ€” Combines multiple devices into one virtual ASIO device, but adds some latency.
3. **Use a dedicated audio interface** โ€” Focusrite, SSL, etc. Their ASIO driver only locks the interface, leaving the built-in sound card free for other apps.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์Šค์บ” ๋ชฉ๋ก์— ์•ˆ ๋‚˜์™€์š” (64-bit ์ „์šฉ) / Plugin not showing in scan results (64-bit only)

DirectPipe๋Š” **64-bit VST2/VST3 ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ** ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 32-bit ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

**์ฒดํฌ๋ฆฌ์ŠคํŠธ:**
1. **64-bit์ธ์ง€ ํ™•์ธ** โ€” 32-bit ์ „์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
2. **VST ๊ฒฝ๋กœ ํ™•์ธ** โ€” Audio ํƒญ > Scan Plugins > ์Šค์บ” ๊ฒฝ๋กœ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
3. **๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ํ™•์ธ** โ€” ์ด์ „ ์Šค์บ”์—์„œ ํฌ๋ž˜์‹œํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค. Settings > Clear Plugin Cache๋กœ ์ดˆ๊ธฐํ™” ํ›„ ์žฌ์Šค์บ”
4. **ํ”Œ๋Ÿฌ๊ทธ์ธ ์žฌ์„ค์น˜** โ€” ๊ฐ„ํ˜น ์†์ƒ๋œ DLL/VST3 ๋ฒˆ๋“ค์€ ์Šค์บ๋„ˆ๊ฐ€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค

---

DirectPipe only supports **64-bit VST2/VST3 plugins**. 32-bit plugins won't appear.

**Checklist:**
1. **Verify 64-bit** โ€” 32-bit-only plugins are not supported
2. **Check VST paths** โ€” Audio tab > Scan Plugins > verify plugin folder is in scan paths
3. **Check blacklist** โ€” Plugins that crashed during previous scans are blacklisted. Reset via Settings > Clear Plugin Cache, then re-scan
4. **Reinstall plugin** โ€” Corrupted DLL/VST3 bundles may be silently skipped

ํ”„๋ฆฌ์…‹ ์ „ํ™˜ํ•  ๋•Œ ์†Œ๋ฆฌ๊ฐ€ ์ž ๊น ๋Š๊ฒจ์š” / Brief audio gap when switching presets

ํ”„๋ฆฌ์…‹ ์ „ํ™˜ ์‹œ **๋งค์šฐ ์งง์€ ์˜ค๋””์˜ค ๊ฐญ**์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฒด์ธ ์ „ํ™˜์ด๋‚˜ ์บ์‹œ ํžˆํŠธ ์ƒํ™ฉ์—์„œ๋Š” ํ”ํžˆ `~10-50ms` ์ˆ˜์ค€์ด์ง€๋งŒ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ๊ณผ ์‹œ์Šคํ…œ ์ƒํƒœ์— ๋”ฐ๋ผ ๋” ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ **Keep-Old-Until-Ready** ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ •์ƒ ๋™์ž‘์ž…๋‹ˆ๋‹ค โ€” ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฒด์ธ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์™„์ „ํžˆ ๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ์ด์ „ ์ฒด์ธ์ด ๊ณ„์† ์˜ค๋””์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ค€๋น„๊ฐ€ ๋˜๋ฉด ์›์ž์ ์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

์ด ์งง์€ ๊ฐญ์€ v3์˜ 1-3์ดˆ ๋ฌด์Œ ๊ฐญ์—์„œ ํฌ๊ฒŒ ๊ฐœ์„ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋ฆฌ๋กœ๋“œ ์บ์‹œ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด (๋‹ค๋ฅธ ์Šฌ๋กฏ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฏธ๋ฆฌ ๋กœ๋“œ) ๋” ์งง์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

---

A **very brief audio gap** may occur during preset switches. In same-chain or cache-hit cases this is often around `~10-50ms`, but it can be longer depending on the plugin set and system state. This is normal **Keep-Old-Until-Ready** behavior โ€” the old plugin chain continues processing audio while the new chain loads in the background, then swaps atomically when ready.

This short gap is a major improvement over v3's 1-3 second mute gap. With the preload cache active (pre-loads other slots' plugins), the gap can be even shorter.

CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์•„์š” / High CPU usage

**์›์ธ ์ง„๋‹จ:**
1. **Performance Monitor ํ™•์ธ** โ€” ์ƒํƒœ ๋ฐ”์˜ CPU % ํ™•์ธ. 70% ์ด์ƒ์ด๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฒด์ธ ์ตœ์ ํ™” ํ•„์š”
2. **๋ฌด๊ฑฐ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹๋ณ„** โ€” ๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ•˜๋‚˜์”ฉ Bypassํ•˜๋ฉด์„œ CPU ๋ณ€ํ™” ํ™•์ธ
3. **์˜ค๋ฒ„์ƒ˜ํ”Œ๋ง ํ™•์ธ** โ€” ์ผ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ(๋ฆฌ๋ฏธํ„ฐ, ์ดํ€„๋ผ์ด์ €)์€ ๋‚ด๋ถ€ ์˜ค๋ฒ„์ƒ˜ํ”Œ๋ง(2x-8x)์ด ์žˆ์–ด CPU๋ฅผ ํฌ๊ฒŒ ์‚ฌ์šฉ

**ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
- ๋ฌด๊ฑฐ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋” ๊ฐ€๋ฒผ์šด ๋Œ€์•ˆ์œผ๋กœ ๊ต์ฒด (์˜ˆ: FabFilter Pro-Q 3 โ†’ TDR Nova)
- ๋ถˆํ•„์š”ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ๊ฑฐ ๋˜๋Š” Bypass
- ๋ฒ„ํผ ํฌ๊ธฐ ๋Š˜๋ฆฌ๊ธฐ (Audio ํƒญ) โ€” ์ง€์—ฐ์ด ์ฆ๊ฐ€ํ•˜์ง€๋งŒ CPU ๋ถ€ํ•˜ ๊ฐ์†Œ
- Auto ๋ชจ๋“œ์˜ ๋‚ด์žฅ ํ”„๋กœ์„ธ์„œ๋Š” ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋งค์šฐ ๋‚ฎ์Œ

---

**Diagnosis:**
1. **Check Performance Monitor** โ€” Look at CPU % in status bar. Above 70% means the plugin chain needs optimization
2. **Identify heavy plugins** โ€” Bypass plugins one by one and observe CPU change
3. **Check oversampling** โ€” Some plugins (limiters, EQs) have internal oversampling (2x-8x) that significantly increases CPU

**Solutions:**
- Replace heavy plugins with lighter alternatives (e.g., FabFilter Pro-Q 3 โ†’ TDR Nova)
- Remove or Bypass unused plugins
- Increase buffer size (Audio tab) โ€” adds latency but reduces CPU load
- Auto mode's built-in processors are optimized and use very little CPU

๋ชจ๋‹ˆํ„ฐ์—์„œ ์ง€์—ฐ์ด ๋А๊ปด์ ธ์š” / Hearing delay in monitor output

๋ชจ๋‹ˆํ„ฐ ์ถœ๋ ฅ์€ ๋ฉ”์ธ ์ถœ๋ ฅ๊ณผ **๋ณ„๋„์˜ ์˜ค๋””์˜ค ์žฅ์น˜**๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ถ”๊ฐ€ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

**์›์ธ:**
1. **๋ชจ๋‹ˆํ„ฐ ์žฅ์น˜์˜ ๋ฒ„ํผ ํฌ๊ธฐ** โ€” WASAPI Shared ๋ชจ๋“œ๋Š” ์žฅ์น˜ ๊ธฐ๋ณธ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (๋ณดํ†ต 10-20ms)
2. **์ƒ˜ํ”Œ๋ ˆ์ดํŠธ ๋ถˆ์ผ์น˜** โ€” ๋ฉ”์ธ ์žฅ์น˜์™€ ๋ชจ๋‹ˆํ„ฐ ์žฅ์น˜์˜ ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋ฆฌ์ƒ˜ํ”Œ๋ง ์ง€์—ฐ ๋ฐœ์ƒ

**ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
- ๋ฉ”์ธ ์žฅ์น˜์™€ ๋ชจ๋‹ˆํ„ฐ ์žฅ์น˜์˜ ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ๋ฅผ ์ผ์น˜์‹œํ‚ค๊ธฐ (Audio ํƒญ์—์„œ ํ™•์ธ)
- ASIO๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹ค๋ฅธ ์ถœ๋ ฅ์„ ๋ชจ๋‹ˆํ„ฐ๋กœ ์‚ฌ์šฉ (์ถ”๊ฐ€ ์žฅ์น˜ ๋ถˆํ•„์š”)
- ๋ชจ๋‹ˆํ„ฐ ์ง€์—ฐ์€ ์ž๊ธฐ ๋ชฉ์†Œ๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง์šฉ์ด๋ฏ€๋กœ, ๋ฐฉ์†ก/๋…น์Œ ํ’ˆ์งˆ์—๋Š” ์˜ํ–ฅ ์—†์Œ

---

Monitor output uses a **separate audio device** from the main output, which can introduce additional latency.

**Causes:**
1. **Monitor device buffer size** โ€” WASAPI Shared mode uses the device's default buffer (typically 10-20ms)
2. **Sample rate mismatch** โ€” Different sample rates between main and monitor devices cause resampling delay

**Solutions:**
- Match sample rates between main and monitor devices (check in Audio tab)
- If using ASIO, use a different output of the same interface as monitor (no extra device needed)
- Monitor delay only affects self-monitoring; it doesn't affect broadcast/recording quality

## Star History





Star History Chart

## ํ›„์› / Support

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ปคํ”ผ ํ•œ ์ž” ์‚ฌ์ฃผ์„ธ์š”! / If you find this project useful, consider buying me a coffee!


Buy Me a Coffee

## License

GPL v3 โ€” [LICENSE](LICENSE)