- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Codepen 编写了一个简单的合成器。它实际上可以工作并且做了我期望它做的事情(在 Codepen 上和网站上的 Debug模式下)。不幸的是,它在我的本地计算机上不起作用:如果我下载代码并尝试运行它,它会给我在问题标题中提到的错误。
如果我将代码“硬拷贝”到浏览器控制台中并运行它,它就会完美运行。
这是我的完整应用程序,每当您将鼠标悬停在带有相应音符的打击垫上时,它都会播放一些合成声音:https://codepen.io/mattiasu96/pen/pxPXpB
//Simple definition of some filter and oscillator to create a composite sound
------------------------------------------
var filter = new Tone.AutoFilter(2,40,2.5).toMaster();
filter.depth=1;
filter.wet=1;
filter.filter.rolloff=-48;
filter.start();
var synth = new Tone.Synth({
oscillator: {
type: 'sawtooth',
},
envelope: {
attack: 0.001,
decay: 0.1,
sustain: 5,
release: 0.1
}
}).connect(filter);
var synthB = new Tone.Synth({
oscillator: {
type: 'sawtooth',
detune : -10 ,
},
envelope: {
attack: 0.001,
decay: 0.1,
sustain: 5,
release: 0.1
}
}).connect(filter);
var synthC = new Tone.Synth({
oscillator: {
type: 'sawtooth',
detune : +10 ,
},
envelope: {
attack: 0.001,
decay: 0.1,
sustain: 5,
release: 0.1
}
}).connect(filter);
var synthD = new Tone.Synth({
oscillator: {
type: 'sawtooth',
detune : -5 ,
},
envelope: {
attack: 0.001,
decay: 0.1,
sustain: 5,
release: 0.1
}
}).connect(filter);
var synthE = new Tone.Synth({
oscillator: {
type: 'sawtooth',
detune : -2 ,
},
envelope: {
attack: 0.001,
decay: 0.1,
sustain: 5,
release: 0.1
}
}).connect(filter);
var mode = 0; // 0 = modalità single note, 1 = modalità multiple notes
notes = document.querySelectorAll(".hex");
----------------------------------------
// Triggering the notes using the pads i have created
notes.forEach(function(note) {
note.addEventListener("mouseover", function(event){
x = event.target.title;
filter.baseFrequency=x;
synth.triggerAttack(x);
synthB.triggerAttack(x);
synthC.triggerAttack(x);
synthD.triggerAttack(x);
synthE.triggerAttack(x);
});
});
notes.forEach(function(note) {
note.addEventListener("mouseout", function(event){
x = event.target.title;
synth.triggerRelease();
synthB.triggerRelease();
synthC.triggerRelease();
synthD.triggerRelease();
synthE.triggerRelease();
});
});
一切正常,但在本地不行,正如我上面提到的。该代码实际上是正确的,因为它在 Codepen 上运行良好,并且如果我将其硬复制到浏览器调试控制台中,它也可以运行。
我不明白为什么会出现此错误。
最佳答案
您所描述的问题听起来像是浏览器不允许 AudioContext(由 Tone.js 使用)在没有任何用户交互的情况下启动。不幸的是,“mouseover”和“mouseout”事件不算作用户交互。
因此,您需要在某处添加一个按钮,在单击事件时激活 AudioContext。有一个short description in the README of Tone.js其中描述了如何做到这一点。
控制 AudioContext 是否可以自行启动或必须由用户交互激活的机制通常称为自动播放策略。可以在特定站点上禁用该策略。例如,Chrome 还维护一个过去播放过音频的网站列表,以允许频繁使用的网站在没有任何用户交互的情况下播放音频。我想 https://codepen.io/ 就是这种情况在您的计算机上。
在开发工具的帮助下运行代码时,自动播放策略通常也不起作用,这可能就是为什么它也适合您的原因。
关于javascript - Tone.js - AudioContext 不允许启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57289003/
我的代码在 Chrome 中运行良好,但现在我认为由于 Chrome 更新,它停止运行了。 var audioContext = new(window.audioContext || window.w
我想在我的游戏中使用麦克风(点击,游戏有音乐和音效,我使用 HTML5 音频元素),如果我添加(仅!)这一行: var audioCtx = new AudioContext (); 并在 Chrom
我正在开发一个 JavaScript 库 ( https://github.com/yvesgurcan/web-midi-player ) 以在 Web 应用程序中启用 MIDI 播放。该库依赖于
我正在开发一个 JavaScript 库 ( https://github.com/yvesgurcan/web-midi-player ) 以在 Web 应用程序中启用 MIDI 播放。该库依赖于
作为这篇文章的后续:How to rapidly play multiple copies of a soundfile in javascript我创建了一个小的演示页面来说明我的问题的核心。 我的
我以前使用过 javascript Audio(),但现在我需要在音频中添加一些混响效果,我正在使用使用 AudioContext api 的 reverb.js。我有可用的开始属性,但没有暂停属性?
我遵循一种模式使用 Webaudio 将声音附加到对象。它运行良好,但是,如果我在一个页面上生成多个项目并附加此脚本,我会收到一个 console.log,表明我已经超过了每页可用的 audioCon
使用 WebAudio API 播放直播流的正确方法是什么。 我正在尝试使用以下代码,但是我看到的只是正在下载 MP3,但没有播放;可能 MediaElementSource 需要一个文件,而不是连续
受此启发SO answer ,我有这段代码,它可以工作,但它会弹出并且听起来不太流畅。 $('.btn').each(initDraggable); function initDraggable()
我有两个一秒音频源,如下所示: var context = system.AudioContext(); var source = context.createBufferSource(); var
我知道你不能多次演奏振荡器,所以我编写了一个函数,每次都会创建一个新的振荡器: function playFrequency(f, t0, t1){ console.log(f, t0, t1
我试图在三星 Galaxy SII 4G 上的最新版本的 Chrome (34.0.1847.114) 中使用 AudioContext(),但由于某种原因 AudioContext() 不存在,we
我已经关注了这个 tutorial并提出该代码: context = new AudioContext(); play(frequency) { const o = this.context.
如果我现在需要在 HTML5 中使用音频 API,我应该使用哪一个?我看到两个可用的 API:Audio API 和 Web Audio API。 基于 this documentation from
我正在构建一个音乐播放器,我想根据当前播放的轨道添加脉动效果。 这里是我想要的一些例子: http://www.htmlfivewow.com/demos/hal/index.html http://
我正在分析一个音频文件,以便使用 channelData 来驱动我的 webapp 的另一部分(基本上是基于音频文件绘制图形)。播放的回调函数如下所示: successCallback(mediaSt
所以,我刚刚发现你可以 record sound using javascript 。太棒了! 我立即创建了一个新项目来自己做一些事情。然而,当我打开示例脚本的源代码时,我发现根本没有任何解释性注释。
我正在寻找一种使用浏览器中的 JavaScript 生成和播放 WAVE 表单的方法。该方法解释如下:http://js.do/blog/sound-waves-with-javascript/ ,非
我正在尝试使用 XMLHttpRequests 和 AudioContext 加载音频,我的代码如下所示: class AudioExample audioContext: null
var audioContext = new window.AudioContext chrome.runtime.onMessage.addListener( function(imageUrl
我是一名优秀的程序员,十分优秀!