mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
52 lines
1.1 KiB
TypeScript
52 lines
1.1 KiB
TypeScript
import { Wave } from '@foobar404/wave';
|
|
|
|
import { Visualizer } from './visualizer';
|
|
|
|
import type { ConfigType } from '../../../config/dynamic';
|
|
|
|
class WaveVisualizer extends Visualizer<Wave> {
|
|
name = 'wave';
|
|
|
|
visualizer: Wave;
|
|
|
|
constructor(
|
|
audioContext: AudioContext,
|
|
audioSource: MediaElementAudioSourceNode,
|
|
visualizerContainer: HTMLElement,
|
|
canvas: HTMLCanvasElement,
|
|
audioNode: GainNode,
|
|
stream: MediaStream,
|
|
options: ConfigType<'visualizer'>,
|
|
) {
|
|
super(
|
|
audioContext,
|
|
audioSource,
|
|
visualizerContainer,
|
|
canvas,
|
|
audioNode,
|
|
stream,
|
|
options,
|
|
);
|
|
|
|
this.visualizer = new Wave(
|
|
{ context: audioContext, source: audioSource },
|
|
canvas,
|
|
);
|
|
for (const animation of options.wave.animations) {
|
|
const TargetVisualizer = this.visualizer.animations[animation.type as keyof typeof this.visualizer.animations];
|
|
|
|
this.visualizer.addAnimation(
|
|
new TargetVisualizer(animation.config as never), // Magic of Typescript
|
|
);
|
|
}
|
|
}
|
|
|
|
resize(_: number, __: number) {
|
|
}
|
|
|
|
render() {
|
|
}
|
|
}
|
|
|
|
export default WaveVisualizer;
|