29 lines
725 B
TypeScript
29 lines
725 B
TypeScript
|
namespace pxsim {
|
||
|
export class SpeakerState {
|
||
|
frequency: number;
|
||
|
ms: number;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
namespace pxsim.music {
|
||
|
|
||
|
export function playTone(frequency: number, ms: number) {
|
||
|
const b = board();
|
||
|
b.speakerState.frequency = frequency;
|
||
|
b.speakerState.ms = ms;
|
||
|
|
||
|
runtime.queueDisplayUpdate();
|
||
|
let cb = getResume();
|
||
|
AudioContextManager.tone(frequency, 1);
|
||
|
if (ms <= 0) cb();
|
||
|
else {
|
||
|
setTimeout(() => {
|
||
|
AudioContextManager.stop();
|
||
|
b.speakerState.frequency = 0;
|
||
|
b.speakerState.ms = 0;
|
||
|
runtime.queueDisplayUpdate();
|
||
|
cb()
|
||
|
}, ms);
|
||
|
}
|
||
|
}
|
||
|
}
|