如何防止流关闭?"/>
如何防止流关闭?
const ToneStream = require('tone-stream')
const Speaker = require('speaker');
const blessed = require('blessed');
const format = {
sampleRate: 8000,
bitDepth: 16,
channels: 1
}
let stream = new ToneStream(format);
const speaker = new Speaker(format);
stream.pipe(speaker);
var screen = blessed.screen({
smartCSR: true
});
let boxarray = [];
for(let i = 0; i < 10; i++) {
let box = blessed.box({
top: "0%",
left: (i/10 *100).toString() + '%',
width: (1/11 *100).toString() + '%',
height: "100%",
tags: true,
style: {
bg: "white"
}
});
box.on('click', () => {
stream.add([4000, 440]);
console.log(i);
});
boxarray.push(box);
}
boxarray.forEach((box) => {
screen.append(box);
});
screen.key(['escape', 'q', 'C-c'], function(ch, key) {
return process.exit(0);
});
screen.render();
我正在尝试单击每个UI框时发出提示音。我添加到框中的onclick
事件无法正常工作。 console.log
有效,但没有声音播放。单击ui框时如何播放提示音?对stream
的引用仍然存在,我可以在不接收null
的情况下对其进行控制台记录。
正如我在评论中所推测的,默认情况下,.pipe()
将在完成管道操作后关闭可写流。因此,您已成功调用.add()
,但流已关闭,因此.add()
不执行任何操作。
假设音频流遵循正常的流规则,您可以向.pipe()
添加一个选项,以防止其像这样自动关闭:
stream.pipe(speaker, {end: false});
如流文档中的here所述。
更多推荐
如何防止流关闭?
发布评论