Skip to content

F. 歌词与可视化

<fb-lyrics-panel>

歌词面板。同步歌词高亮当前行,点击歌词行 seek 到对应时间。

html
<fb-lyrics-panel></fb-lyrics-panel>
属性类型默认值说明
sourcestring'any'歌词来源
scrollstring'smooth'滚动模式 smooth / auto
has-lyricsboolean只读反映:是否有歌词
current-linestring只读反映:当前行索引

CSS Parts: container, line

每个 line 上的 CSS class:past(已播放)/ current(当前行)/ future(未播放)。

事件:

js
el.addEventListener('fb-lyrics-loaded', e => {
  console.log('歌词加载:', e.detail.lineCount, '行, 同步:', e.detail.synced);
});
el.addEventListener('fb-lyrics-seek', e => {
  console.log('点击歌词跳转:', e.detail.time);
});
el.addEventListener('fb-lyrics-line-change', e => {
  console.log('当前行:', e.detail.index, e.detail.text, e.detail.time);
});

<fb-spectrum-visualizer>

频谱可视化。mode='raw' 时通过事件输出原始频谱数据,支持 DPR 自适应 + ResizeObserver。

html
<fb-spectrum-visualizer bands="64" fps="30" mode="bars"></fb-spectrum-visualizer>
属性类型默认值说明
bandsstring'64'频带数
fpsstring'30'帧率
modestring'raw'模式 raw / bars / wave
fft-sizestring自动FFT 大小(覆盖自动计算,必须为 2 的幂)
dprstringdevicePixelRatio像素比(降低此值可减少 GPU 开销,如背景频谱用 dpr="1")
fall-speedstring'0.28'回落系数(0..1),值越大回落越快
rise-speedstring'0.65'上升系数(0..1),值越大上升越快

CSS Parts: canvas

JS API:

js
const ctx = el.getContext(); // 获取 CanvasRenderingContext2D

事件:

js
el.addEventListener('fb-spectrum-data', e => {
  // 仅 mode='raw' 时触发
  console.log('频谱数据:', e.detail.bands); // Float32Array
});

<fb-waveform>

波形图显示。点击波形 seek,cursor 跟随播放进度更新。

html
<fb-waveform resolution="200"></fb-waveform>
属性类型默认值说明
resolutionstring'200'分辨率
progressstring只读反映:当前进度
modestring'rms'采样方法:'peak' 或 'rms'
normalizestring'adaptive'归一化模式:'adaptive'(百分位+幂曲线,推荐)、'gamma'(纯 gamma 映射)、'histogram'(直方图均衡化)
gammastring'1.5'响度伽马曲线指数,范围 (0, 2]。仅在 normalize="gamma" 时生效。值 > 1 拉开高密度段的视觉对比度;值 < 1 提升弱信号可见度

CSS Parts: canvas, cursor

事件:

js
el.addEventListener('fb-seek', e => {
  console.log('波形 seek:', e.detail.position, e.detail.progress);
});