我想要一个像这样工作的函数:
playSound(345, 1000)
在1000毫秒内会发出345赫兹的音调。在JavaScript中实现此目的的最简单方法是什么?如果它使用样本(可能是正弦波或钢琴),或者使用计算机的硬件来产生声音,我不介意。
答案 0 :(得分:6)
正如评论中已经指出的那样,这样做的方法是通过OscillatorNode。
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
function playNote(frequency, duration, callback) {
duration = duration / 1000;
// create Oscillator node
var oscillator = audioCtx.createOscillator();
oscillator.type = 'square';
oscillator.frequency.value = frequency; // value in hertz
oscillator.connect(audioCtx.destination);
oscillator.onended = callback;
oscillator.start(0);
oscillator.stop(audioCtx.currentTime + duration);
}
另外,我做了simple fiddle玩星球大战帝国三月
答案 1 :(得分:0)
有一个名为simpleTones.js的库可以极大地简化Web Audio API,使其完全符合您的要求。
一旦项目中包含了库,播放定时频率就像调用
一样简单 playTone(345, sine, 1)
345是以Hz为单位的频率,正弦波是波形(也有其他波形图案选项)和" 1"是一秒钟,或1000毫秒。
您可以在此处下载该库并阅读文档:https://github.com/escottalexander/simpleTones.js
祝你的项目好运。
答案 2 :(得分:0)
非相对论,没有外部领域: {\ displaystyle \ mathbf {j} = {\ frac {-i \ hbar} {2m}} \ left(\ Psi ^ {} \ nabla \ Psi-\ Psi \ nabla \ Psi ^ { } \ right)} \ mathbf {j} = \ frac {-i \ hbar} {2m} \ left(\ Psi ^ * \ nabla \ Psi-\ Psi \ nabla \ Psi ^ \ right){\ displaystyle = {\ frac {\ hbar} {m}} \ mathrm {Im}(\ Psi ^ {} \ nabla \ Psi)= \ mathrm {Re}(\ Psi ^ {} {\ frac {\ hbar} {im}} \ nabla \ Psi}} = \ frac \ hbar m \ mathrm {Im}(\ Psi ^ \ nabla \ Psi)= \ mathrm {Re}(\ Psi ^ * \ frac {\ hbar} {im} \ nabla \ Psi)
星*是复共轭