发出一声嘟嘟声(beep.js)

时间:2015-05-01 04:13:30

标签: javascript coffeescript

我试图创造一个"生成分数"根据我拥有的一些地图数据使用beep.js。我使用new Beep.Voice作为与特定数据类型相关的注释的占位符(总共7个声音)。显示数据时,应播放语音。我做得很漂亮"蛮力"到目前为止,我希望它更清洁:

// in the data processing function
voice = voices[datavoice]
voice.play()
setTimeout(function(){killVoice(voice)}, 20)

// and the killvoice:
function killVoice(voice) {
    voice.pause()
}

我想只是"玩"声音,假设它的持续时间为20毫秒(基本上只是在数据上发出哔哔声)。我看到了声音的duration属性,但无法使它们发挥作用。

代码在这里(使用grunt / node / coffeescript):

https://github.com/mgiraldo/inspectorviz/blob/master/app/scripts/main.coffee

到目前为止它是这样的:

https://vimeo.com/126519613

2 个答案:

答案 0 :(得分:3)

READ ME中Beep.Voice.duration未记录的原因是因为它还没有完成! ;)源代码中有一行字面上说“Right now these do nothing; just here as a stand-in for the future.”这适用于.duration.attack等。有拉动请求来实现某些功能here但是自提出请求以来,我不得不做出一些重大的结构性变化;一旦我完成了一些更大的结构性问题,我们将需要仔细研究一下。 (我保证,它正在筹备中!)

与此同时,您的方法似乎正确。我在这里减少了一点,使它缩短了200毫秒 - 而不是20毫秒 - 所以我可以在这里再响一点:

var voice = new Beep.Voice('4D♭')
voice.play()
setTimeout( function(){ voice.pause() }, 200 )

我看到你在示例代码中使用了一些相当低调的音符,例如' 1A♭'例如。如果您只是在普通的笔记本电脑扬声器上测试一下 - 我常常在这个位置 - 您可能会发现扬声器的音调太低;你会听到嘀嗒声或死寂声。所以不要担心:这不是一个错误,只是一个硬件问题:)

答案 1 :(得分:2)

忘掉我说的一切;)

受到您的询问和Sam的旧拉动请求的启发 - 我刚刚完成了一项大型ADSR推送,其中包括对Voice个持续时间的支持。所以现在用最新的Beep.js快速获得“chiptune-y”唧唧声可以这样做:

var voice = new Beep.Voice( '4D♭' )
    .setOscillatorType( 'square' )
    .setAttackDuration( 0 )
    .setDecayDuration( 0 )
    .setSustainDuration( 0.002 )
    .setReleaseDuration( 0 )
    .play()

我甚至在新Beep.Voice.js文件中添加了ADSR ASCII-art diagram以便于参考。我希望这有帮助!