fix: pre-roll metronome ticks are missing

This commit is contained in:
Xiaohan-Tian
2026-05-01 12:11:02 -07:00
parent 95ca3394a8
commit a474065450
5 changed files with 251 additions and 7 deletions
+18 -3
View File
@@ -25,7 +25,7 @@ export const MockTransport = {
start: vi.fn(),
stop: vi.fn(),
pause: vi.fn(),
position: '0:0:0',
position: 0,
bpm: {
value: 120,
rampTo: vi.fn()
@@ -34,10 +34,23 @@ export const MockTransport = {
state: 'stopped',
scheduleOnce: vi.fn(),
scheduleRepeat: vi.fn(),
schedule: vi.fn().mockReturnValue(1),
cancel: vi.fn(),
clear: vi.fn()
,
setLoopPoints: vi.fn(),
loop: false,
PPQ: 192,
getTicksAtTime: vi.fn().mockImplementation((time: number) => time * 192)
}
export const MockLoop = vi.fn().mockImplementation((callback: (time: number) => void, interval: string) => ({
callback,
interval,
start: vi.fn(),
dispose: vi.fn()
}))
// Mock Destination
export const MockDestination = {
volume: {
@@ -81,6 +94,7 @@ export const MockMeter = vi.fn().mockImplementation(() => ({
// Complete Tone.js mock
export const ToneMock = {
Sampler: MockSampler,
Loop: MockLoop,
Transport: MockTransport,
Destination: MockDestination,
ToneAudioBuffer: MockToneAudioBuffer,
@@ -106,10 +120,11 @@ export const ToneMock = {
Frequency: vi.fn().mockImplementation((freq) => ({
toFrequency: vi.fn().mockReturnValue(parseFloat(freq) || 440),
valueOf: vi.fn().mockReturnValue(parseFloat(freq) || 440)
}))
})),
now: vi.fn().mockReturnValue(0)
}
// Setup the global mock
export const setupToneMocks = () => {
vi.doMock('tone', () => ToneMock)
}
}