feat: added audio recording feature
This commit is contained in:
@@ -49,6 +49,7 @@ export class KGCore {
|
||||
// Callback for external state updates (e.g., store)
|
||||
private playheadUpdateCallback: ((position: number) => void) | null = null;
|
||||
private playbackStateChangeCallback: ((isPlaying: boolean) => void) | null = null;
|
||||
private loopBoundaryReachedCallback: ((loopEndBeat: number) => void) | null = null;
|
||||
|
||||
// Selection change callbacks for store synchronization
|
||||
private selectionChangeCallbacks: (() => void)[] = [];
|
||||
@@ -200,6 +201,10 @@ export class KGCore {
|
||||
this.playbackStateChangeCallback = callback;
|
||||
}
|
||||
|
||||
public setLoopBoundaryReachedCallback(callback: ((loopEndBeat: number) => void) | null): void {
|
||||
this.loopBoundaryReachedCallback = callback;
|
||||
}
|
||||
|
||||
// Selection change callback management
|
||||
public onSelectionChanged(callback: () => void): void {
|
||||
this.selectionChangeCallbacks.push(callback);
|
||||
@@ -414,6 +419,14 @@ export class KGCore {
|
||||
|
||||
// Wrap playhead position within loop range
|
||||
if (newPosition >= loopEndBeats) {
|
||||
if (this.loopBoundaryReachedCallback) {
|
||||
const callback = this.loopBoundaryReachedCallback;
|
||||
this.loopBoundaryReachedCallback = null;
|
||||
this.setPlayheadPosition(loopEndBeats);
|
||||
callback(loopEndBeats);
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate how far we've overshot and wrap back
|
||||
const overshot = newPosition - loopEndBeats;
|
||||
newPosition = loopStartBeats + (overshot % loopLengthBeats);
|
||||
|
||||
Reference in New Issue
Block a user