播放一声哔哔声 (beep.js)
play a single beep (beep.js)
我正在尝试根据我拥有的一些地图数据使用 beep.js 创建一个 "generative score"。我使用 new Beep.Voice
作为与特定类型数据相关的注释的占位符(总共 7 个声音)。显示数据时,应播放语音。到目前为止,我做得很好 "brute force",我希望它更干净:
// in the data processing function
voice = voices[datavoice]
voice.play()
setTimeout(function(){killVoice(voice)}, 20)
// and the killvoice:
function killVoice(voice) {
voice.pause()
}
我只想 "play" 语音,假设它的持续时间为 20 毫秒(基本上只是数据蜂鸣声)。我看到了 duration
属性 的声音,但无法让它们发挥作用。
代码在这里(使用grunt/node/coffeescript):
https://github.com/mgiraldo/inspectorviz/blob/master/app/scripts/main.coffee
这是目前的样子:
Beep.Voice.duration
未在 READ ME 中记录的原因是它尚未完成! ;) 源代码中有一行字面意思是 “Right now these do nothing; just here as a stand-in for the future.” This applies to .duration
, .attack
, etc. There’s a pull request to implement some of this functionality here 但自提交该请求以来,我不得不进行一些重大的结构更改;一旦我解决了一些更大的结构性问题,就需要尽快仔细看看。 (它正在筹备中,我保证!)
目前,您的方法似乎很划算。我在这里稍微减少了一点,将它设为 200 毫秒——而不是 20 毫秒——这样我就可以让它响得更响一点:
var voice = new Beep.Voice('4D♭')
voice.play()
setTimeout( function(){ voice.pause() }, 200 )
我看到您在示例代码中使用了一些非常低音的音符,例如“1A♭”。如果您只是在普通的笔记本电脑扬声器上进行测试(我自己经常处于这种情况),您可能会发现扬声器的音调太低;您会听到滴答声或死寂。所以不用担心:这不是错误,只是硬件问题:)
忘记我说的一切 ;)
受您的询问和 Sam 的旧拉取请求的启发,我刚刚完成了一个大的 ADSR 推送,其中包括对 Voice
持续时间的支持。因此,现在使用最新的 Beep.js 可以像这样快速获得“chiptune-y” chirp:
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 以便于参考。我希望这有帮助!
我正在尝试根据我拥有的一些地图数据使用 beep.js 创建一个 "generative score"。我使用 new Beep.Voice
作为与特定类型数据相关的注释的占位符(总共 7 个声音)。显示数据时,应播放语音。到目前为止,我做得很好 "brute force",我希望它更干净:
// in the data processing function
voice = voices[datavoice]
voice.play()
setTimeout(function(){killVoice(voice)}, 20)
// and the killvoice:
function killVoice(voice) {
voice.pause()
}
我只想 "play" 语音,假设它的持续时间为 20 毫秒(基本上只是数据蜂鸣声)。我看到了 duration
属性 的声音,但无法让它们发挥作用。
代码在这里(使用grunt/node/coffeescript):
https://github.com/mgiraldo/inspectorviz/blob/master/app/scripts/main.coffee
这是目前的样子:
Beep.Voice.duration
未在 READ ME 中记录的原因是它尚未完成! ;) 源代码中有一行字面意思是 “Right now these do nothing; just here as a stand-in for the future.” This applies to .duration
, .attack
, etc. There’s a pull request to implement some of this functionality here 但自提交该请求以来,我不得不进行一些重大的结构更改;一旦我解决了一些更大的结构性问题,就需要尽快仔细看看。 (它正在筹备中,我保证!)
目前,您的方法似乎很划算。我在这里稍微减少了一点,将它设为 200 毫秒——而不是 20 毫秒——这样我就可以让它响得更响一点:
var voice = new Beep.Voice('4D♭')
voice.play()
setTimeout( function(){ voice.pause() }, 200 )
我看到您在示例代码中使用了一些非常低音的音符,例如“1A♭”。如果您只是在普通的笔记本电脑扬声器上进行测试(我自己经常处于这种情况),您可能会发现扬声器的音调太低;您会听到滴答声或死寂。所以不用担心:这不是错误,只是硬件问题:)
忘记我说的一切 ;)
受您的询问和 Sam 的旧拉取请求的启发,我刚刚完成了一个大的 ADSR 推送,其中包括对 Voice
持续时间的支持。因此,现在使用最新的 Beep.js 可以像这样快速获得“chiptune-y” chirp:
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 以便于参考。我希望这有帮助!