bionic-audio 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -78,19 +78,27 @@ export declare class AudioRecorder extends EventEmitter {
78
78
  pipe(destination: NodeJS.WritableStream): void;
79
79
  }
80
80
  /**
81
- * Convenience function: record to file
81
+ * Convenience function: create and optionally start file recording
82
+ * Pass `autoStart=true` to automatically start and return promise
83
+ * Pass `autoStart=false` to return recorder instance for manual control
82
84
  */
83
- export declare function recordToFile(output: string, durationSeconds?: number, options?: Partial<RecorderOptions>): Promise<RecorderResult>;
85
+ export declare function recordToFile(output: string, durationSeconds?: number, options?: Partial<RecorderOptions>, autoStart?: boolean): Promise<RecorderResult> | AudioRecorder;
84
86
  /**
85
- * Convenience function: record microphone
87
+ * Convenience function: create microphone recorder
88
+ * Pass `autoStart=true` to start immediately (default)
89
+ * Pass `autoStart=false` to return recorder for manual control
86
90
  */
87
- export declare function recordMicrophone(output: string, durationSeconds?: number, gain?: number): Promise<RecorderResult>;
91
+ export declare function recordMicrophone(output: string, durationSeconds?: number, gain?: number, autoStart?: boolean): Promise<RecorderResult> | AudioRecorder;
88
92
  /**
89
- * Convenience function: record system audio
93
+ * Convenience function: create system audio (loopback) recorder
94
+ * Pass `autoStart=true` to start immediately (default)
95
+ * Pass `autoStart=false` to return recorder for manual control
90
96
  */
91
- export declare function recordLoopback(output: string, durationSeconds?: number, gain?: number): Promise<RecorderResult>;
97
+ export declare function recordLoopback(output: string, durationSeconds?: number, gain?: number, autoStart?: boolean): Promise<RecorderResult> | AudioRecorder;
92
98
  /**
93
- * Convenience function: record both
99
+ * Convenience function: create dual-stream (microphone + loopback) recorder
100
+ * Pass `autoStart=true` to start immediately (default)
101
+ * Pass `autoStart=false` to return recorder for manual control
94
102
  */
95
- export declare function recordBoth(output: string, durationSeconds?: number, gain?: number): Promise<RecorderResult>;
103
+ export declare function recordBoth(output: string, durationSeconds?: number, gain?: number, autoStart?: boolean): Promise<RecorderResult> | AudioRecorder;
96
104
  //# sourceMappingURL=AudioRecorder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioRecorder.d.ts","sourceRoot":"","sources":["../lib/AudioRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAc;gBAEtB,OAAO,GAAE,eAAoB;IAoBzC,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,SAAS;IA0CjB;;OAEG;IACI,KAAK,IAAI,IAAI;IAkDpB;;OAEG;IACI,IAAI,IAAI,OAAO;IAQtB;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACI,UAAU,IAAI,YAAY,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAQ9C;;OAEG;IACI,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI;CAStD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,GACrC,OAAO,CAAC,cAAc,CAAC,CAOzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
1
+ {"version":3,"file":"AudioRecorder.d.ts","sourceRoot":"","sources":["../lib/AudioRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAc;gBAEtB,OAAO,GAAE,eAAoB;IAoBzC,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,SAAS;IA0CjB;;OAEG;IACI,KAAK,IAAI,IAAI;IAkDpB;;OAEG;IACI,IAAI,IAAI,OAAO;IAQtB;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACI,UAAU,IAAI,YAAY,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAQ9C;;OAEG;IACI,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI;CAStD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,EACtC,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAWzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,EAClB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,EAClB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAW,EAC5B,IAAI,GAAE,MAAY,EAClB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAEzC"}
@@ -225,32 +225,43 @@ class AudioRecorder extends events_1.EventEmitter {
225
225
  }
226
226
  exports.AudioRecorder = AudioRecorder;
227
227
  /**
228
- * Convenience function: record to file
228
+ * Convenience function: create and optionally start file recording
229
+ * Pass `autoStart=true` to automatically start and return promise
230
+ * Pass `autoStart=false` to return recorder instance for manual control
229
231
  */
230
- async function recordToFile(output, durationSeconds = 10, options = {}) {
232
+ function recordToFile(output, durationSeconds = 10, options = {}, autoStart = true) {
231
233
  const recorder = new AudioRecorder({
232
234
  output,
233
235
  duration: durationSeconds,
234
236
  ...options,
235
237
  });
236
- return recorder.record();
238
+ if (autoStart) {
239
+ return recorder.record();
240
+ }
241
+ return recorder;
237
242
  }
238
243
  /**
239
- * Convenience function: record microphone
244
+ * Convenience function: create microphone recorder
245
+ * Pass `autoStart=true` to start immediately (default)
246
+ * Pass `autoStart=false` to return recorder for manual control
240
247
  */
241
- async function recordMicrophone(output, durationSeconds = 10, gain = 1.0) {
242
- return recordToFile(output, durationSeconds, { mic: true, gain });
248
+ function recordMicrophone(output, durationSeconds = 10, gain = 1.0, autoStart = true) {
249
+ return recordToFile(output, durationSeconds, { mic: true, gain }, autoStart);
243
250
  }
244
251
  /**
245
- * Convenience function: record system audio
252
+ * Convenience function: create system audio (loopback) recorder
253
+ * Pass `autoStart=true` to start immediately (default)
254
+ * Pass `autoStart=false` to return recorder for manual control
246
255
  */
247
- async function recordLoopback(output, durationSeconds = 10, gain = 1.0) {
248
- return recordToFile(output, durationSeconds, { loopback: true, gain });
256
+ function recordLoopback(output, durationSeconds = 10, gain = 1.0, autoStart = true) {
257
+ return recordToFile(output, durationSeconds, { loopback: true, gain }, autoStart);
249
258
  }
250
259
  /**
251
- * Convenience function: record both
260
+ * Convenience function: create dual-stream (microphone + loopback) recorder
261
+ * Pass `autoStart=true` to start immediately (default)
262
+ * Pass `autoStart=false` to return recorder for manual control
252
263
  */
253
- async function recordBoth(output, durationSeconds = 10, gain = 1.0) {
254
- return recordToFile(output, durationSeconds, { both: true, gain });
264
+ function recordBoth(output, durationSeconds = 10, gain = 1.0, autoStart = true) {
265
+ return recordToFile(output, durationSeconds, { both: true, gain }, autoStart);
255
266
  }
256
267
  //# sourceMappingURL=AudioRecorder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioRecorder.js","sourceRoot":"","sources":["../lib/AudioRecorder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuPA,oCAWC;AAKD,4CAMC;AAKD,wCAMC;AAKD,gCAMC;AAnSD,iDAAoD;AACpD,mCAAsC;AACtC,2CAA6B;AAiC7B;;;;;;;;;;;GAWG;AACH,MAAa,aAAc,SAAQ,qBAAY;IAM7C,YAAY,UAA2B,EAAE;QACvC,KAAK,EAAE,CAAC;QANF,YAAO,GAAwB,IAAI,CAAC;QAGpC,iBAAY,GAAW,EAAE,CAAC;QAIhC,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;YACzC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACvC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,GAAG,OAAO;SACX,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IACxE,CAAC;IAEO,eAAe;QACrB,mBAAmB;QACnB,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;YACxC,4BAA4B;YAC5B,cAAc,EAAE,eAAe;SAChC,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,SAAS,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE;YACJ,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,SAAS;QACf,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAK,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE;YAC/C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;gBAChB,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,WAAkC;QAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAnMD,sCAmMC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,kBAA0B,EAAE,EAC5B,UAAoC,EAAE;IAEtC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;QACjC,MAAM;QACN,QAAQ,EAAE,eAAe;QACzB,GAAG,OAAO;KACX,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,kBAA0B,EAAE,EAC5B,OAAe,GAAG;IAElB,OAAO,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,kBAA0B,EAAE,EAC5B,OAAe,GAAG;IAElB,OAAO,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,kBAA0B,EAAE,EAC5B,OAAe,GAAG;IAElB,OAAO,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"AudioRecorder.js","sourceRoot":"","sources":["../lib/AudioRecorder.ts"],"names":[],"mappings":"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"}
@@ -243,50 +243,66 @@ export class AudioRecorder extends EventEmitter {
243
243
  }
244
244
 
245
245
  /**
246
- * Convenience function: record to file
246
+ * Convenience function: create and optionally start file recording
247
+ * Pass `autoStart=true` to automatically start and return promise
248
+ * Pass `autoStart=false` to return recorder instance for manual control
247
249
  */
248
- export async function recordToFile(
250
+ export function recordToFile(
249
251
  output: string,
250
252
  durationSeconds: number = 10,
251
- options: Partial<RecorderOptions> = {}
252
- ): Promise<RecorderResult> {
253
+ options: Partial<RecorderOptions> = {},
254
+ autoStart: boolean = true
255
+ ): Promise<RecorderResult> | AudioRecorder {
253
256
  const recorder = new AudioRecorder({
254
257
  output,
255
258
  duration: durationSeconds,
256
259
  ...options,
257
260
  });
258
- return recorder.record();
261
+
262
+ if (autoStart) {
263
+ return recorder.record();
264
+ }
265
+ return recorder;
259
266
  }
260
267
 
261
268
  /**
262
- * Convenience function: record microphone
269
+ * Convenience function: create microphone recorder
270
+ * Pass `autoStart=true` to start immediately (default)
271
+ * Pass `autoStart=false` to return recorder for manual control
263
272
  */
264
- export async function recordMicrophone(
273
+ export function recordMicrophone(
265
274
  output: string,
266
275
  durationSeconds: number = 10,
267
- gain: number = 1.0
268
- ): Promise<RecorderResult> {
269
- return recordToFile(output, durationSeconds, { mic: true, gain });
276
+ gain: number = 1.0,
277
+ autoStart: boolean = true
278
+ ): Promise<RecorderResult> | AudioRecorder {
279
+ return recordToFile(output, durationSeconds, { mic: true, gain }, autoStart);
270
280
  }
271
281
 
272
282
  /**
273
- * Convenience function: record system audio
283
+ * Convenience function: create system audio (loopback) recorder
284
+ * Pass `autoStart=true` to start immediately (default)
285
+ * Pass `autoStart=false` to return recorder for manual control
274
286
  */
275
- export async function recordLoopback(
287
+ export function recordLoopback(
276
288
  output: string,
277
289
  durationSeconds: number = 10,
278
- gain: number = 1.0
279
- ): Promise<RecorderResult> {
280
- return recordToFile(output, durationSeconds, { loopback: true, gain });
290
+ gain: number = 1.0,
291
+ autoStart: boolean = true
292
+ ): Promise<RecorderResult> | AudioRecorder {
293
+ return recordToFile(output, durationSeconds, { loopback: true, gain }, autoStart);
281
294
  }
282
295
 
283
296
  /**
284
- * Convenience function: record both
297
+ * Convenience function: create dual-stream (microphone + loopback) recorder
298
+ * Pass `autoStart=true` to start immediately (default)
299
+ * Pass `autoStart=false` to return recorder for manual control
285
300
  */
286
- export async function recordBoth(
301
+ export function recordBoth(
287
302
  output: string,
288
303
  durationSeconds: number = 10,
289
- gain: number = 1.0
290
- ): Promise<RecorderResult> {
291
- return recordToFile(output, durationSeconds, { both: true, gain });
304
+ gain: number = 1.0,
305
+ autoStart: boolean = true
306
+ ): Promise<RecorderResult> | AudioRecorder {
307
+ return recordToFile(output, durationSeconds, { both: true, gain }, autoStart);
292
308
  }
package/package.json CHANGED
@@ -1,63 +1,63 @@
1
- {
2
- "name": "bionic-audio",
3
- "version": "1.0.0",
4
- "description": "Professional Windows WASAPI audio recorder library for Node.js and Bun - record microphone and system audio with advanced features",
5
- "main": "dist/AudioRecorder.js",
6
- "types": "dist/AudioRecorder.d.ts",
7
- "bin": {
8
- "bionic-audio": "./recorder.exe"
9
- },
10
- "files": [
11
- "dist/",
12
- "recorder.exe",
13
- "lib/",
14
- "README.md",
15
- "LICENSE"
16
- ],
17
- "scripts": {
18
- "build": "tsc",
19
- "prepare": "npm run build",
20
- "prepublishOnly": "npm run build"
21
- },
22
- "keywords": [
23
- "audio",
24
- "recording",
25
- "WASAPI",
26
- "windows",
27
- "loopback",
28
- "microphone",
29
- "audio-recording",
30
- "system-audio",
31
- "capture",
32
- "wav",
33
- "stereo",
34
- "nodejs",
35
- "bun",
36
- "bionic"
37
- ],
38
- "author": "",
39
- "license": "MIT",
40
- "repository": {
41
- "type": "git",
42
- "url": ""
43
- },
44
- "bugs": {
45
- "url": ""
46
- },
47
- "homepage": "",
48
- "engines": {
49
- "node": ">=14.0.0",
50
- "npm": ">=6.0.0"
51
- },
52
- "os": [
53
- "win32"
54
- ],
55
- "cpu": [
56
- "x64",
57
- "ia32"
58
- ],
59
- "devDependencies": {
60
- "@types/node": "^20.0.0",
61
- "typescript": "^5.0.0"
62
- }
63
- }
1
+ {
2
+ "name": "bionic-audio",
3
+ "version": "1.1.0",
4
+ "author": "",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": ""
8
+ },
9
+ "main": "dist/AudioRecorder.js",
10
+ "devDependencies": {
11
+ "@types/node": "^20.0.0",
12
+ "typescript": "^5.0.0"
13
+ },
14
+ "bin": {
15
+ "bionic-audio": "./recorder.exe"
16
+ },
17
+ "bugs": {
18
+ "url": ""
19
+ },
20
+ "cpu": [
21
+ "x64",
22
+ "ia32"
23
+ ],
24
+ "description": "Professional Windows WASAPI audio recorder library for Node.js and Bun - record microphone and system audio with advanced features",
25
+ "engines": {
26
+ "node": ">=14.0.0",
27
+ "npm": ">=6.0.0"
28
+ },
29
+ "files": [
30
+ "dist/",
31
+ "recorder.exe",
32
+ "lib/",
33
+ "README.md",
34
+ "LICENSE"
35
+ ],
36
+ "homepage": "",
37
+ "keywords": [
38
+ "audio",
39
+ "recording",
40
+ "WASAPI",
41
+ "windows",
42
+ "loopback",
43
+ "microphone",
44
+ "audio-recording",
45
+ "system-audio",
46
+ "capture",
47
+ "wav",
48
+ "stereo",
49
+ "nodejs",
50
+ "bun",
51
+ "bionic"
52
+ ],
53
+ "license": "MIT",
54
+ "os": [
55
+ "win32"
56
+ ],
57
+ "scripts": {
58
+ "build": "tsc",
59
+ "prepare": "npm run build",
60
+ "prepublishOnly": "npm run build"
61
+ },
62
+ "types": "dist/AudioRecorder.d.ts"
63
+ }