2

わかりましたので、これはおそらくばかげた質問です。ここと Google で検索してみましたが、現在の状況に十分に具体的ではないため、実際に答えているものは何もないようです (私が知っている JS イベントに関する情報はたくさんあります。どんな質問も本当にばかげていると言われました)。

特定の頻度に達するたびに、NodeJS でカスタム イベントを発行したいと考えています。曲を再生しているときに 80 dB を超える場合、イベントを発生させたいと考えています。

Web ブラウザーでこのイベントをキャッチするにはどうすればよいですか? おそらくサーバーを起動する必要があると思います。しかし、サーバーからイベントを送信するにはどうすればよいでしょうか? さらに重要なことに、クライアント側でイベントをキャッチするにはどうすればよいでしょうか?

(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;
});

この状況に対処する方法について誰かが私にもっと良い洞察を与えてくれることを願っています。フィードバック/ヒントは大歓迎です!

4

1 に答える 1