/threejs-meydajs-fftspectrum

:notes: :musical_note: :musical_score: Real-time FFT spectrum analyzer with ThreeJS, MeydaJS, RxJS.

Primary LanguageJavaScriptMIT LicenseMIT

 ╭━━━┳━━━┳━━━━╮╱╱╱╱╱╱╱╱╱╱╱╱╭╮
 ┃╭━━┫╭━━┫╭╮╭╮┃╱╱╱╱╱╱╱╱╱╱╱╭╯╰╮
 ┃╰━━┫╰━━╋╯┃┃╰╯╭━━┳━━┳━━┳━┻╮╭╋━┳╮╭┳╮╭╮
 ┃╭━━┫╭━━╯╱┃┃╱╱┃━━┫╭╮┃┃━┫╭━┫┃┃╭┫┃┃┃╰╯┃
 ┃┃╱╱┃┃╱╱╱╱┃┃╱╱┣━━┃╰╯┃┃━┫╰━┫╰┫┃┃╰╯┃┃┃┃
 ╰╯╱╱╰╯╱╱╱╱╰╯╱╱╰━━┫╭━┻━━┻━━┻━┻╯╰━━┻┻┻╯
  ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ real-time audio features extraction
  ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ && FFT spectrum analyzer

threejs r141 meyda v5.4.0 rxjs 7.5.5

demo 720p - chrome osx

demo 1080p - chrome windows10

demo

longstoryshort: the microphone detects the audio, meydajs extracts metrics features used to drive threejs webgl stuff.

  • Start project with npm run dev
  • open another tab with youtube music / bring any sound source closer to the microphone
  • ✨Magic✨

What are audio features? Read here

setup

npm i

dev

(expose http://localhost:3000 )

npm run dev

build

npm run build

Tech stack

  • ThreeJS
  • RXJS
  • MeydaJS

    Meyda is a JavaScript audio feature extraction library. It works with the Web Audio API (or plain old JavaScript arrays) to expose information about the timbre and perceived qualities of sound. Meyda supports both offline feature extraction as well as real-time feature extraction using the Web Audio API.

  • Vite

todo

  • use InstancedMesh for FFT Spectrum
  • refactor with rxjs

License

MIT