播放一声蜂鸣声(beep.js)



我正试图根据我所掌握的一些地图数据,使用beep.js创建一个"生成分数"。我使用CCD_ 1作为与特定类型的数据(总共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/note/coffeescript):

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

到目前为止是这样的:

https://vimeo.com/126519613

Beep.Voice.duration在READ ME中未记录的原因是它还没有完成!;)源代码中有一行字面意思是:"现在这些什么都不做;只是在这里作为未来的替代。"这适用于.duration.attack等。这里有一个实现这些功能的pull请求,但自从该请求提交以来,我不得不进行一些重大的结构更改;一旦我解决了一些更大的结构问题,我需要尽快仔细研究。(我保证,它正在酝酿中!)

在此期间,你的做法似乎是对的。我在这里减少了一点,使其达到200毫秒,而不是20毫秒,所以我可以在这里让它听起来更响:

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

我看到您在示例代码中使用了一些非常低的注释,比如"1A"♭'例如如果你只是在普通的笔记本电脑扬声器上测试这一点——我经常这样做——你可能会发现扬声器的音调太低;你要么听到滴答声,要么一片死寂。所以别担心:这不是错误,只是硬件问题:)

忘记我说的一切;)

受您的询问和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艺术图,以便于参考。我希望这能有所帮助!

最新更新