pxt-calliope/sim/state/music.ts

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);
}
}
}