{"_id":"electron-audio-loopback","_rev":"7-cd751e53f9e62456fdedc3f1644e5c3c","name":"electron-audio-loopback","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"electron-audio-loopback","version":"1.0.0","keywords":["electron","audio","system","plugin"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.0","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"af346fcf77bdeb6bac59bb3591e8e7f26b57bc7f","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.0.tgz","fileCount":14,"integrity":"sha512-3ZQq3NYbomWARhcY7LM7sPMzoX7g1wt7FbCcwNLbI/hZaxe4qKu1C8UvJit/8ar5WztAEFmJkdEBoda59D4w2Q==","signatures":[{"sig":"MEYCIQCHwvl4cTN43sQp+o3+5Nt/YocJXtinngBUkD1B+nhsXAIhANGsYdmkRpBlVn5lxLPwGwCqnyYk7sAVmUIEVHA2XEZG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7495},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"63ba91822658102ae5d80e31335f7acf92087d6f","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","actor":{"name":"alectrocute","type":"user","email":"alectrocute@gmail.com"},"email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"9.5.0","description":"Capture system audio loopback on macOS 12.3+ and Windows 10+","directories":{},"_nodeVersion":"18.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.0_1750361484139_0.8008741908734254","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"electron-audio-loopback","version":"1.0.1","keywords":["electron","audio","system","plugin"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.1","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"c3e7fa28b37bf459b0154d722da242fb2794df40","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.1.tgz","fileCount":14,"integrity":"sha512-pP8/RfKHlf9VM/sF7pL9hGiqdGHJs20awK6oC4nyUXuDCSXI3LC48BXqRaLQx0zQIUQr+Jt6WzQbZ8o4gZaZ5Q==","signatures":[{"sig":"MEUCIQDQCUI81ApICg2qBqaIMgTSTB5DUGFSp4yU6SwfmZmWNAIgM5WSBUyElXd1Q8jKXC8/Oou8hkObXvnnSRgRBz/u1F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7553},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fa42462da50e1cfcde4b4ba6b132facbc87b6c40","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","actor":{"name":"alectrocute","type":"user","email":"alectrocute@gmail.com"},"email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"9.5.0","description":"Capture system audio loopback on macOS 12.3+ and Windows 10+","directories":{},"_nodeVersion":"18.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.1_1750361813124_0.987416596957748","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"electron-audio-loopback","version":"1.0.2","keywords":["electron","audio","system","plugin"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.2","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"e1ffbb10d9e14adc858497c32ad0bebe1473b481","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.2.tgz","fileCount":14,"integrity":"sha512-wCJDOX86fzxZefMUvUY8huE8BZZpoBO/wu9/m0CiAvQPPrS2vF/1BUu2Y4N6sdfzct5nibgcfPmYDZAohb2iCQ==","signatures":[{"sig":"MEQCIG183hj7ay0Tz2nBSDZBWDtR7dg7zpn6Iq1218I3B4FCAiAXPbvEoV37Dn+7u6gtGyYlD+JEsRtbE3WDqHMOzQliIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7860},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0654eef42da2e2d292f9cef870869406d792d530","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","actor":{"name":"alectrocute","type":"user","email":"alectrocute@gmail.com"},"email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"9.5.0","description":"Capture system audio loopback on macOS 12.3+ and Windows 10+","directories":{},"_nodeVersion":"18.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.2_1750376256468_0.36785010993317035","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"electron-audio-loopback","version":"1.0.3","keywords":["electron","audio","system","plugin","loopback","capture"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.3","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"a195d3ec9f232e1271d8757ee17609cdfb74c526","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.3.tgz","fileCount":18,"integrity":"sha512-cO6MDt8S4KWTPqu2nyBvHHYevrMxCeL5+VUiD3UOqu/sTxqAhDEgJP/IZ8x27BPyxaUBiw3H9Tb1Hg7bD4Tz7Q==","signatures":[{"sig":"MEUCIQDkh7HF2oxiNOlnxYqJCAwC26pD/V2Mx0pQ6J7YQRU0qQIgXSj9rr3RSPxcW3WXiHi9juskcJcAgfsryLHms21Ed4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15821},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"77e160d035b54d684f85f65e194b72609f8cfcac","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","actor":{"name":"alectrocute","type":"user","email":"alectrocute@gmail.com"},"email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"9.5.0","description":"Capture system audio loopback on macOS 12.3+, Windows 10+ and Linux","directories":{},"_nodeVersion":"18.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.3_1750434650613_0.024807350588732957","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"electron-audio-loopback","version":"1.0.4","keywords":["electron","audio","system","plugin","loopback","capture"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.4","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"e760f72106f6424f5c6eb6bc9f6c7483cb3a8319","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.4.tgz","fileCount":18,"integrity":"sha512-2xbFlkzBWULkmtAlBc8TS+xtf7Ah9ue5nrrD3mfFhkCOoL+hCkf73VIJiNvshNbmPPiz8svTXaCC5hdf6cZxSg==","signatures":[{"sig":"MEQCICO4pneI7Em/nUnTuqU+rDjC5PepMMXQFdE070N/rLkjAiAxfeH/E6zlCUaSJeIX5UvNp5UgGZCfKSOT6p5TEWyhyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16148},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c99e70ff038bf24a1a565a59088311fafbd12325","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"10.8.2","description":"Capture system audio loopback on macOS 12.3+, Windows 10+ and Linux","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.4_1752264317981_0.0672827209001261","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"electron-audio-loopback","version":"1.0.5","keywords":["electron","audio","system","plugin","loopback","capture"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","_id":"electron-audio-loopback@1.0.5","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"dist":{"shasum":"5ece109343d858d4f2bebfc2d65316f278ebc07b","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.5.tgz","fileCount":18,"integrity":"sha512-E/xneHrk2tLD7JntbjBJJr4HyWGaLrdGvqmoeBJZg9URbBBm2OgTEZ5TWgTkIPiAwEvAllsV+VfdBOfP4FeMkw==","signatures":[{"sig":"MEQCIF5lvXzvIxvJvR23sY7Y9XwRwPuMrfnb8HMYS8ZG3u2NAiBYPIzTkfge3wrTJunK8zA6x0HI+NeoGqu2oIzjXqw8fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16897},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3f1316dc7ced44e519fadd7027bd9e5194f01560","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"npm run build && electron example/index.js","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"alectrocute","email":"alectrocute@gmail.com"},"repository":{"url":"git://github.com/alectrocute/electron-audio-loopback.git","type":"git"},"_npmVersion":"10.8.2","description":"Capture system audio loopback on macOS 12.3+, Windows 10+ and Linux","directories":{},"_nodeVersion":"20.19.3","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","electron":"^31.0.1","typescript":"^5.0.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"electron":">=31.0.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-audio-loopback_1.0.5_1752264835209_0.5192058126507129","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"electron-audio-loopback","version":"1.0.6","description":"Capture system audio loopback on macOS 12.3+, Windows 10+ and Linux","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","clean":"rimraf dist","prepublishOnly":"npm run clean && npm run build","test":"npm run build && electron example/index.js","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix"},"keywords":["electron","audio","system","plugin","loopback","capture"],"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","devDependencies":{"@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","electron":"^31.0.1","eslint":"^8.0.0","jest":"^29.0.0","rimraf":"^5.0.0","typescript":"^5.0.0"},"peerDependencies":{"electron":">=31.0.1"},"repository":{"type":"git","url":"git://github.com/alectrocute/electron-audio-loopback.git"},"_id":"electron-audio-loopback@1.0.6","gitHead":"708412c28106b676d22d797fe56dea2e0bb15f34","bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","_nodeVersion":"20.19.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-QW0ogDqMpWHDAQHmQyssJ+Yh4qR3kWCP3Q4H9WuIXKwVlgkqOYGyt0v/JzbK3tBNTwfqbuHZy86kwCCajxqAdg==","shasum":"4c5ac9e6f6dce142fff169a4810f7be73ea6b3f8","tarball":"https://registry.npmjs.org/electron-audio-loopback/-/electron-audio-loopback-1.0.6.tgz","fileCount":18,"unpackedSize":19480,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDS0fZ/cOY3FoVkiZHFuRQlub/BZ4q3Fb0zVPVI+JNfvwIhAKeGChgsJZzwvyMVUUbY2LqZCTk/uLqDsa+7auCJemeB"}]},"_npmUser":{"name":"alectrocute","email":"alectrocute@gmail.com"},"directories":{},"maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/electron-audio-loopback_1.0.6_1754180772793_0.6997018718478001"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-19T19:31:24.045Z","modified":"2025-08-03T00:26:13.231Z","1.0.0":"2025-06-19T19:31:24.331Z","1.0.1":"2025-06-19T19:36:53.295Z","1.0.2":"2025-06-19T23:37:36.689Z","1.0.3":"2025-06-20T15:50:50.813Z","1.0.4":"2025-07-11T20:05:18.147Z","1.0.5":"2025-07-11T20:13:55.383Z","1.0.6":"2025-08-03T00:26:13.014Z"},"bugs":{"url":"https://github.com/alectrocute/electron-audio-loopback/issues"},"author":{"name":"Alec Armbruster","email":"alectrocute@gmail.com"},"license":"MIT","homepage":"https://github.com/alectrocute/electron-audio-loopback#readme","keywords":["electron","audio","system","plugin","loopback","capture"],"repository":{"type":"git","url":"git://github.com/alectrocute/electron-audio-loopback.git"},"description":"Capture system audio loopback on macOS 12.3+, Windows 10+ and Linux","maintainers":[{"name":"alectrocute","email":"alectrocute@gmail.com"}],"readme":"# Electron Audio Loopback\n\nAn Electron plugin for capturing system audio loopback on macOS 12.3+, Windows 10+ and Linux without any third-party loopback drivers or dependencies.\n\nTo play around with a full example, check out the [mic-speaker-streamer](https://github.com/alectrocute/mic-speaker-streamer) repo. It's a simple app that allows you to simultaneously stream your microphone and system audio to a third-party transcription API while also recording both streams into a WAV file. Alternatively, check out the [bundled example in this repo](https://github.com/alectrocute/electron-audio-loopback/tree/main/example).\n\n## Real-World Usage\n\nIf your app is using Electron Audio Loopback, [make a PR](https://github.com/alectrocute/electron-audio-loopback/pulls) to add it to the list below! Both open and closed source apps are welcome.\n\n- [mic-speaker-streamer](https://github.com/alectrocute/mic-speaker-streamer): An example microphone/system audio transcription app using OpenAI's Realtime API.\n\n## Installation\n\n```bash\nnpm install electron-audio-loopback\n```\n\n## Usage\n\n### Main Process Setup\n\n```javascript\nconst { app } = require('electron');\nconst { initMain } = require('electron-audio-loopback');\n\n// Initialize this plugin in your main process\n// before the app is ready. Simple!\ninitMain();\n\napp.whenReady().then(() => {\n  // Your app initialization...\n});\n```\n\n### Renderer Process Usage\n\n#### Manual Mode (Recommended)\n\nIf you do not have `nodeIntegration` enabled in your renderer process, then you'll need to manually initialize the plugin via IPC. See the example below:\n\n```javascript\n// preload.js\nconst { contextBridge, ipcRenderer } = require('electron');\n\ncontextBridge.exposeInMainWorld('electronAPI', {\n  enableLoopbackAudio: () => ipcRenderer.invoke('enable-loopback-audio'),\n  disableLoopbackAudio: () => ipcRenderer.invoke('disable-loopback-audio')\n});\n\n// renderer.js\nasync function getLoopbackAudioMediaStream() {\n    // Tell the main process to enable system audio loopback.\n    // This will override the default `getDisplayMedia` behavior.\n    await window.electronAPI.enableLoopbackAudio();\n\n    // Get a MediaStream with system audio loopback.\n    // `getDisplayMedia` will fail if you don't request `video: true`.\n    const stream = await navigator.mediaDevices.getDisplayMedia({ \n      video: true,\n      audio: true,\n    });\n    \n    // Remove video tracks that we don't need.\n    // Note: You may find bugs if you don't remove video tracks.\n    const videoTracks = stream.getVideoTracks();\n\n    videoTracks.forEach(track => {\n        track.stop();\n        stream.removeTrack(track);\n    });\n\n    // Tell the main process to disable system audio loopback.\n    // This will restore full `getDisplayMedia` functionality.\n    // Do this if you need to use `getDisplayMedia` for other\n    // purposes elsewhere in your app.\n    await window.electronAPI.disableLoopbackAudio();\n    \n    // Boom! You've got a MediaStream with system audio loopback.\n    // Use it with an audio element or Web Audio API.\n    return stream;\n}\n```\n\n#### Automatic Mode\n\nIf `nodeIntegration` is enabled in your renderer process, then you can import the renderer helper function directly. This will take care of everything for you in one line of code.\n\n```javascript\nconst { getLoopbackAudioMediaStream } = require('electron-audio-loopback');\n\n// Get a MediaStream with system audio loopback\nconst stream = await getLoopbackAudioMediaStream();\n\n// The stream contains only audio tracks\nconst audioTracks = stream.getAudioTracks();\nconsole.log('Audio tracks:', audioTracks);\n\n// Use the stream with an audio element or Web Audio API\nconst audioElement = document.getElementById('audio');\naudioElement.srcObject = stream;\naudioElement.play();\n```\n\nIf you don't want to remove the video tracks, you can pass `removeVideo: false` to the `getLoopbackAudioMediaStream` function.\n\n## API Reference\n\n### Main Process Functions\n\n- `initMain(options?: InitMainOptions)`: Initialize the plugin in the main process. Must be called before the app is ready.\n  - `sourcesOptions`: The options to pass to the `desktopCapturer.getSources` method.\n  - `forceCoreAudioTap`: Whether to force the use of the Core Audio API on macOS (can be used to bypass bugs for certain macOS versions).\n  - `loopbackWithMute`: Whether to use the loopback audio with mute. Defaults to `false`.\n  - `sessionOverride`: The session to override. Defaults to `session.defaultSession`.\n  - `onAfterGetSources`: A function that is called after the sources are retrieved. Useful for advanced & unique scenarios. Defaults to `undefined`.\n\n### Renderer Process Functions\n\n- `getLoopbackAudioMediaStream(options?: GetLoopbackAudioMediaStreamOptions)`: Helper function that returns a Promise, resolves to a `MediaStream` containing system audio loopback. Video tracks are automatically removed from the stream.\n  - `removeVideo`: Whether to remove the video tracks from the stream. Defaults to `true`.\n\n### IPC Handlers\n\nThe plugin registers these IPC handlers automatically, ensure you don't override them!\n\n- `enable-loopback-audio`: Enables system audio loopback capture\n- `disable-loopback-audio`: Disables system audio loopback capture\n\n## Requirements\n\n- Electron >= 31.0.1 (this is cruicial, older Electron versions will not work!)\n- macOS 12.3+\n- Windows 10+\n- Most Linux distros with PulseAudio as a sound server\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+\n- npm or yarn\n\n### Setup\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Development mode with watch\nnpm run dev\n\n# Lint code\nnpm run lint\n\n# Run example\nnpm test\n```\n\nPR's welcome!\n\n### Project Structure\n\n```bash\nsrc/\n├── index.ts          # Main entry point with conditional exports\n├── main.ts           # Main process initialization\n├── config.ts         # Configuration\n├── types.d.ts        # Type definitions\n└── renderer.ts       # Renderer process helper function\n```\n\n## License\n\nMIT © Alec Armbruster [@alectrocute](https://github.com/alectrocute)\n","readmeFilename":"README.md"}