我正试着用Web Audio API来重新创建类似
Winamp的10波段均衡器.
据我所知,我要创建10个双二阶滤波器,设置其type
到2(一个带通滤波器),并设置其frequency
来[60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000]
分别.有一次,我已经做到了(这里的地方,我开始有点糊涂了),那么我会创建一个单独的增益节点对每个频率"带",并将其值绑定到一个滑块.
<input id="someFreqBand" type="range" min="-12" max="12" step="0.1" value="0" onchange="slide()"/>
Run Code Online (Sandbox Code Playgroud)
假设所有这些都是正确的,那么唯一剩下的步骤是将所有10个增益节点连接到音频上下文destination
(我想这将采用所有10个频率"频带"并将它们混合/同步回来).这是创建Web Audio 10波段均衡器的正确方法吗?
我很困惑的主要问题是我如何将源"连接"到10个频带滤波器(+相关增益节点),因为所有节点只有一个输入或输出(包括目的地).
Safari或Firefox都无法MediaElementSource
使用Web Audio API 处理音频数据.
var audioContext, audioProcess, audioSource,
result = document.createElement('h3'),
output = document.createElement('span'),
mp3 = '//www.jonathancoulton.com/wp-content/uploads/encodes/Smoking_Monkey/mp3/09_First_of_May_mp3_3a69021.mp3',
ogg = '//upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg',
gotData = false, data, audio = new Audio();
function connect() {
audioContext = window.AudioContext ? new AudioContext() : new webkitAudioContext(),
audioSource = audioContext.createMediaElementSource( audio ),
audioScript = audioContext.createScriptProcessor( 2048 );
audioSource.connect( audioScript );
audioSource.connect( audioContext.destination );
audioScript.connect( audioContext.destination );
audioScript.addEventListener('audioprocess', function(e){
if ((data = e.inputBuffer.getChannelData(0)[0]*3)) {
output.innerHTML = Math.abs(data).toFixed(3);
if (!gotData) gotData = true;
}
}, false);
} …
Run Code Online (Sandbox Code Playgroud)我刚刚开始使用requirejs,我遇到了一个我似乎无法解决的问题.当我加载我的应用程序时,我偶尔会收到错误"Bootstrap的JavaScript需要jQuery".以下是相关文件:
.HTML
<html>
<head>
<link href="./css/bootstrap.min.css" rel="stylesheet">
<link href="./css/custom.css" rel="stylesheet">
<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
</head>
<body>
...
</body>
Run Code Online (Sandbox Code Playgroud)
来自main.js文件的my.config:
requirejs.config({
baseUrl : './scripts',
shim : {
underscore : {
exports : '_'
},
bootstrap : {
dep : [ 'jquery'],
exports: 'Bootstrap'
},
backbone : {
deps : [ 'jquery', 'underscore' ],
exports : 'Backbone'
},
marionette : {
deps : [ 'jquery', 'underscore', 'backbone' ],
exports : 'Marionette'
},
text: {
deps : [ 'jquery', 'underscore', 'backbone' ],
exports: 'Text' …
Run Code Online (Sandbox Code Playgroud) var @foo = 'bar';
// SyntaxError: missing variable name.
{ '@foo' : 'bar' };
// SyntaxError: invalid label.
var obj = { '@foo' : 'bar' };
obj.@foo;
// TypeError: can't convert AttributeName to string
var obj = { '@foo' : 'bar' };
obj['@foo'];
// "bar"
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么不允许在变量名中使用'@'符号以及我应该使用它的原因是什么?
我有一个带内联过滤的slickgrid(使用DataView).我为每行数据分配了唯一的ID,并将此ID(不是行号)传递给在UI上其他位置更新div的函数.
如果我不过滤,这工作正常.但是,如果我在传递ID之前过滤列,则会更改ID以反映行#.它甚至会将字符串ID更改为行号.
这看起来很奇怪.知道发生了什么事吗???
grid_msc.onClick.subscribe(function(e, args) {
var cell = grid_msc.getCellFromEvent(e);
var row = cell.row; // get row #
var row_ID = data_msc[row].id; // get the row ID, not row #
var msc = data_msc[args.row][grid_msc.getColumns()[args.cell].field];
alert("Row#:"+row+", RowID:"+row_ID+", Value:"+msc);
mscToUI(msc, row_ID);
});
// Add the selected item to the UI
function mscToUI(addC, cellNum) {
alert(addC+", "+cellNum);
$('#selectedMsc').append('<a href="javascript:removemsc('+cellNum+')" id="'+cellNum+'" class="rSel"><img src="images/remove.png" align="texttop" border="0" style="padding-right:4px;">'+addC+'<br /></a>');
}
})
Run Code Online (Sandbox Code Playgroud) javascript ×6
equalizer ×1
filter ×1
firefox ×1
html5 ×1
html5-audio ×1
requirejs ×1
safari ×1
slickgrid ×1