Skip to content

Commit a85eeb6

Browse files
committed
Update documentation with ASIO build info and scripts
- Add ASIO section to CLAUDE.md with module structure and build info - Update repository structure to include electron-asio - Add ASIO to platform differences table - Add ELECTRON_ASIO_SKIP environment variable
1 parent e10405f commit a85eeb6

File tree

1 file changed

+59
-6
lines changed

1 file changed

+59
-6
lines changed

CLAUDE.md

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,17 @@ electroncapture/
2727
├── window-audio-stream.js # Audio capture stream handling
2828
├── package.json # Build config and dependencies
2929
├── scripts/
30-
│ ├── install-custom-electron.js # Downloads custom Electron for Windows
31-
│ └── install-window-audio-capture.js # Builds native audio module
30+
│ ├── install-custom-electron.js # Downloads custom Electron for Windows
31+
│ ├── install-window-audio-capture.js # Builds window audio capture module
32+
│ └── install-electron-asio.js # Builds ASIO audio capture module
3233
├── native-modules/
33-
│ └── window-audio-capture/ # Git submodule (private repo)
34-
│ ├── src/ # C++ WASAPI capture code
35-
│ ├── index.js # Node.js bindings
34+
│ ├── window-audio-capture/ # Git submodule (private repo)
35+
│ │ ├── src/ # C++ WASAPI capture code
36+
│ │ ├── index.js # Node.js bindings
37+
│ │ └── build/Release/ # Compiled .node binary
38+
│ └── electron-asio/ # ASIO audio capture (public)
39+
│ ├── src/ # C++ PortAudio/ASIO code
40+
│ ├── deps/portaudio/ # PortAudio library
3641
│ └── build/Release/ # Compiled .node binary
3742
├── docs/ # Website (GitHub Pages from master:/docs)
3843
├── assets/ # Icons and images
@@ -126,6 +131,52 @@ native-modules/window-audio-capture/
126131
│ └── window_audio_capture.node # Compiled binary
127132
```
128133

134+
## ASIO Audio Capture Plugin (Public)
135+
136+
### Overview
137+
A native Node.js addon for capturing audio from ASIO devices (professional audio interfaces). Uses PortAudio with ASIO backend for ultra-low latency audio capture.
138+
139+
### Building the Native Module
140+
```bash
141+
# Rebuild manually
142+
npm run native-modules:rebuild
143+
144+
# Or build just ASIO module
145+
cd native-modules/electron-asio
146+
npm install
147+
148+
# Skip building (for CI/testing)
149+
ELECTRON_ASIO_SKIP=1 npm install
150+
```
151+
152+
### Module Structure
153+
```
154+
native-modules/electron-asio/
155+
├── src/
156+
│ ├── addon.cc # N-API entry point
157+
│ ├── asio_wrapper.cc # AsioStream class
158+
│ └── asio_wrapper.h
159+
├── deps/
160+
│ └── portaudio/ # PortAudio library
161+
│ ├── include/ # Headers
162+
│ └── lib/ # Windows libs and DLL
163+
├── binding.gyp # Node-gyp build config
164+
├── index.js # JavaScript wrapper (graceful fallback)
165+
├── lib/index.js # Full library with AsioStream
166+
├── preload/
167+
│ ├── ipc-handlers.js # IPC handlers for main process
168+
│ └── asio-preload.js # Preload script exposure
169+
├── build/Release/
170+
│ ├── electron_asio.node # Compiled binary
171+
│ └── portaudio_x64.dll # PortAudio runtime
172+
```
173+
174+
### Requirements for Building
175+
- Windows 10/11
176+
- Visual Studio Build Tools 2019+ with C++ workload
177+
- Node.js 18+
178+
- Python 3.x (for node-gyp)
179+
129180
## Build Commands
130181

131182
### Windows (Custom Electron + Audio Capture)
@@ -168,13 +219,15 @@ npm start # Run in development mode
168219
| Custom Electron (QP-cap) | Yes | No | No |
169220
| NVENC/HEVC | Yes | No | No |
170221
| Application Audio Capture | Yes | No | No |
222+
| ASIO Audio Capture | Yes | No | No |
171223
| Cursor Suppression | Yes | No | No |
172224
| Electron Version | 39.2.13-qp20 | 39.2.7 | 39.2.7 |
173225

174226
### Environment Variables
175227
```bash
176228
CUSTOM_ELECTRON_SKIP=1 # Skip custom Electron download
177-
WINDOW_AUDIO_CAPTURE_SKIP=1 # Skip native module build
229+
WINDOW_AUDIO_CAPTURE_SKIP=1 # Skip window audio capture module build
230+
ELECTRON_ASIO_SKIP=1 # Skip ASIO audio capture module build
178231
CUSTOM_ELECTRON_LOCAL_DIR=... # Use local Electron build
179232
```
180233

0 commit comments

Comments
 (0)