使用javascript播放特定频率

时间:2016-08-29 07:45:53

标签: javascript audio

我想要一个像这样工作的函数:

playSound(345, 1000)

在1000毫秒内会发出345赫兹的音调。在JavaScript中实现此目的的最简单方法是什么?如果它使用样本(可能是正弦波或钢琴),或者使用计算机的硬件来产生声音,我不介意。

3 个答案:

答案 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)

星*是复共轭