From 68d634ff026fd2ba9e7d891922ce6c7ba2360937 Mon Sep 17 00:00:00 2001 From: Makito Date: Sat, 29 Nov 2025 05:56:05 +0900 Subject: [PATCH] feat(stage-tamagotchi): expose some values for beat-sync dev --- .../stage-tamagotchi/src/preload/beat-sync.ts | 23 ++++++++++++++----- packages/stage-shared/src/beat-sync.ts | 4 ++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/apps/stage-tamagotchi/src/preload/beat-sync.ts b/apps/stage-tamagotchi/src/preload/beat-sync.ts index ca537100c..02fbe5247 100644 --- a/apps/stage-tamagotchi/src/preload/beat-sync.ts +++ b/apps/stage-tamagotchi/src/preload/beat-sync.ts @@ -5,18 +5,23 @@ import { createDetector, StageEnvironment } from '@proj-airi/stage-shared' import { ipcRenderer } from 'electron' import { beatSyncSignalBeat, beatSyncToggle } from '../shared/eventa' +import { exposeWithCustomAPI } from './shared' const context = createContext(electronAPI.ipcRenderer).context const signalBeat = defineInvoke(context, beatSyncSignalBeat) +function enableLoopbackAudio() { + return ipcRenderer.invoke('enable-loopback-audio') +} + +function disableLoopbackAudio() { + return ipcRenderer.invoke('disable-loopback-audio') +} + const detector = createDetector({ env: StageEnvironment.Tamagotchi, - enableLoopbackAudio() { - return ipcRenderer.invoke('enable-loopback-audio') - }, - disableLoopbackAudio() { - return ipcRenderer.invoke('disable-loopback-audio') - }, + enableLoopbackAudio, + disableLoopbackAudio, }) detector.on('beat', () => signalBeat()) @@ -29,3 +34,9 @@ defineInvokeHandler(context, beatSyncToggle, async (enabled) => { detector.stop() } }) + +exposeWithCustomAPI({ + enableLoopbackAudio, + disableLoopbackAudio, + detector, +}) diff --git a/packages/stage-shared/src/beat-sync.ts b/packages/stage-shared/src/beat-sync.ts index 77aacc777..0671dd1ce 100644 --- a/packages/stage-shared/src/beat-sync.ts +++ b/packages/stage-shared/src/beat-sync.ts @@ -11,7 +11,7 @@ export interface DetectorEventMap { beat: (e: AnalyserBeatEvent) => void } -interface Detector { +export interface Detector { start: (createSource: (context: AudioContext) => Promise) => Promise updateParameters: (params: Partial) => void startScreenCapture: () => Promise @@ -24,7 +24,7 @@ interface Detector { readonly source: AudioNode | undefined } -type CreateDetectorOptions = | +export type CreateDetectorOptions = | { env: StageEnvironment.Tamagotchi enableLoopbackAudio: () => Promise