好的,所以这可能是一个愚蠢的问题,我试过在这里和谷歌上搜索,但似乎没有什么能真正回答它,因为它对我目前的情况还不够具体(我知道关于 JS 事件的信息很多,我也知道)已经被告知没有问题真的很愚蠢)。
每当达到某个频率时,我想在 NodeJS 中发出一个自定义事件。所以当我播放一首歌时,它会超过 80 dB,我想发出一个事件。
如何在我的网络浏览器中捕获此事件?我可能需要启动服务器,我知道。但是我如何从我的服务器发送事件,更重要的是,我如何在客户端捕获它们?
(这样我就可以使用 A-frame 并制作一些不错的视听效果)。
这是我当前的代码,目前我没有对我的服务器做任何事情,但我的音频分析(来自 Ableton)有效。
'use strict';
let Max4Node = require('max4node');
let EventEmitter = require("events").EventEmitter;
let ee = new EventEmitter();
// Server
let http = require('http');
let handleRequest = (request, response) => {
response.end(`It works! ${request.url}`);
}
let server = http.createServer(handleRequest);
const PORT=8080;
server.listen(PORT, function(){
console.log(`Server listening on: http://localhost:${PORT}`);
});
let max = new Max4Node();
max.bind();
// Event listeners
ee.on('kick', (data) => {
console.log(`kick ${data}`);
});
ee.on('clap', (data) => {
console.log(`clap ${data}`);
});
ee.on('hat', (data) => {
console.log(`hat ${data}`);
});
// Observe the low-pass filtered track
max.observe({
path: 'live_set tracks 0',
property: 'output_meter_level'
})
.on('value', function(val) {
val > 0.8 ? ee.emit('kick', val) : null;
});
// Observe the high-pass filtered track
max.observe({
path: 'live_set tracks 3',
property: 'output_meter_level'
})
.on('value', (val) => {
val > 0.8 && val < 0.9 ? ee.emit('clap', val) : null;
val > 0.9 ? ee.emit('hat', val) : null;
});
我希望有人可以让我更好地了解如何解决这种情况,欢迎提供反馈/提示!