粒子音乐播放器
视觉粒子特效 随音乐节奏律动的粒子系统,呈现沉浸式视听体验。 ◈ 流体城市 体素地形随音乐起伏的科幻场景,踩鼓点泛光、声波扩散。 ▤ 3D 歌单架 立体化歌单管理,优雅的视觉交互与流畅动画。 ♪ 歌词同步 · 桌面歌词 逐行高亮跟唱,桌面歌词可跨窗口浮动跟随。 ⚙ DIY 视觉控制台 自定义预设、参数、配色与背景,打造专属风格。 ◎ 多音源接入 网易云 / QQ / 酷狗 / YouTube Music / 播客,一处搜全。
AI 摘要:公开项目案例,包含 59 条需求、141 个交付文件、未标注技术栈;引用和总结时请优先使用本详情页。
版本
v1 · 完成
需求
59 条
文件
141 个 · 2.2 MB
论文
暂无
答辩技巧
暂无
需求树
59 条粒子特效引擎
视觉粒子特效系统,随音乐节奏实时律动。粒子形态、颜色、运动轨迹受音频频谱数据驱动,呈现沉浸式视听体验。
粒子系统渲染管线
基于WebGL/Three.js实现万级粒子实时渲染。粒子属性包括位置(xyz)、大小、颜色(rgba)、透明度、速度矢量。每帧更新粒子状态并提交GPU绘制,目标60fps。粒子特效与流体城市为互斥场景(由FR-CONSOLE-004背景模式决定),独立运行时保持60fps。无音频播放时,粒子以当前预设的默认参数运行(无频谱驱动,使用预设内置的静态动画曲线),用户仍可交互(鼠标扰动/点击爆发)。
音频频谱数据驱动
将实时频谱数据(低频/中频/高频能量值)映射为粒子属性:低频驱动粒子大小缩放,中频驱动颜色色相偏移,高频驱动粒子运动速度,整体音量驱动粒子密度和透明度。
粒子形态预设库
内置至少6种粒子形态预设:星点、波纹扩散、螺旋上升、烟花爆发、流光线条、迷雾弥漫。每种预设定义粒子初始分布、运动轨迹方程和生命周期,用户可在控制台一键切换。
粒子用户交互
鼠标移动时粒子产生引力/斥力扰动(力场范围可配置),鼠标点击时在点击位置触发粒子爆发效果(一次性喷射200-500个粒子后衰减消失)。触摸屏支持对应手势。
流体城市场景
体素地形随音乐起伏的科幻城市场景。踩鼓点泛光、声波扩散特效,建筑群随频谱律动。
体素地形程序化生成
程序化生成科幻城市体素地形:建筑群由体素方块堆叠而成,高度、密度、间距随机但有整体美感。地形支持无缝循环,场景边界自动衔接。无音频播放时,场景以预设默认参数渲染(建筑静止、相机可使用自动漫游模式缓慢飞行),鼓点泛光和声波扩散特效暂停,用户仍可手动旋转缩放场景。
鼓点泛光脉冲特效
通过事件总线订阅 `beat:detected` 事件(由音频引擎 TR-BEAT-001 统一检测并广播),鼓点触发时建筑体素边缘产生泛光脉冲(glow bloom),泛光颜色跟随当前配色方案,脉冲强度与鼓点力度(payload.intensity)正相关,衰减时间约200-400ms。
声波扩散效果
低频能量驱动声波环从地面中心向外扩散,波环直径与低频幅度成正比,扩散速度约每帧2-5个体素单位。多个波环可叠加,透明度随距离衰减至消失。
场景相机控制
提供3种相机模式:自动漫游(沿预设路径缓缓飞行,跟随音乐节奏变速)、手动旋转缩放(鼠标拖拽旋转/滚轮缩放)、固定视角(俯瞰/平视/45°斜角)。模式切换平滑过渡。
3D 歌单架
立体化歌单管理,优雅的视觉交互与流畅动画。支持歌单浏览、切换、排序等操作。
3D歌单架渲染
歌单以3D唱片架/卡片架形式展示,支持旋转浏览(鼠标拖拽或触控滑动旋转歌单架,滚轮缩放)。每个歌单卡片显示封面缩略图、歌单名、曲目数。当前选中歌单高亮并前置。
歌单CRUD操作
新建歌单(输入名称+可选封面图)、编辑歌单名称和封面、删除歌单(确认弹窗防止误删)。所有操作本地持久化存储,删除不可恢复。
歌曲拖拽管理
在歌单内支持拖拽排序歌曲。从搜索结果添加歌曲到歌单:支持右键菜单"添加到歌单"(弹出歌单选择列表)和拖拽到歌单卡片两种方式。拖拽添加时,若目标为3D场景中的歌单卡片,以2D浮层歌单选择器作为辅助交互(避免跨维度拖拽)。拖出歌曲到空白区域可移除。操作有即时视觉反馈(高亮放置区、半透明拖拽预览)。
歌单切换动画
选中歌单时,3D歌单架旋转至目标歌单居中前置,卡片放大并增加发光边框。切换动效采用缓出曲线,持续时间约500-800ms,过程中其他卡片略微缩小退后。
歌单导入导出
支持歌单导出为JSON文件(含歌单名、封面、歌曲列表及每首歌的平台来源标识),导出时弹出保存对话框。支持从JSON文件导入歌单,导入时校验格式,对已存在的歌曲跳过不重复添加,导入结果弹窗显示成功/跳过/失败数量。支持从其他平台歌单链接(如网易云歌单分享链接)解析导入,解析失败提示"无法识别该歌单链接"。
歌单导入导出
支持歌单数据导出为 JSON 文件(含歌曲列表、元数据、封面图 base64),支持导入 JSON 格式歌单文件。导入时校验格式合法性,格式错误提示"歌单文件格式不正确"。导入时若歌曲已存在于本地则自动去重。导出文件名默认"{歌单名}_{日期}.json"。提供"导出歌单"/"导入歌单"菜单项或按钮。
歌词同步 · 桌面歌词
逐行高亮跟唱,桌面歌词可跨窗口浮动跟随。支持歌词时间轴同步、手动偏移校准。
歌词解析器
解析标准LRC歌词格式(`[mm:ss.xx]文本`),支持多时间标签、逐字歌词(`<mm:ss.xx>`)。自动识别编码(UTF-8/GBK),解析失败时提示"歌词格式不支持"。提取每行时间戳和文本,生成有序时间轴列表。
逐行高亮同步
根据播放进度实时匹配当前歌词行并高亮显示(高亮色为主题色),已播放行变为半透明,未播放行保持正常。当前行始终居中,上下行自动滚动。支持逐字高亮模式(逐字歌词时每个字随进度变色)。
歌词偏移校准
用户可通过滑块或快捷键调整歌词整体偏移量(范围-5s到+5s,步进0.1s)。偏移值实时生效,当前高亮行立即更新。偏移量持久化保存,下次播放同一首歌自动应用。
桌面歌词悬浮窗
独立置顶透明窗口,跨应用始终显示当前歌词。窗口无边框、背景半透明可调,支持拖拽移动。窗口尺寸自适应歌词长度,最多显示2行(当前行+下一行)。鼠标悬停时显示关闭按钮,右键菜单提供设置入口。
桌面歌词锁定与跟随
桌面歌词窗口支持锁定位置(锁定后不可拖拽,需解锁)、跟随鼠标(窗口浮动在鼠标附近)、记忆上次位置(下次启动恢复)。提供"锁定/解锁"切换按钮和快捷键。
歌词获取策略
三级回退获取歌词:①优先在线搜索匹配(按歌曲名+歌手查询歌词API,返回LRC文本);②若在线未命中,尝试从音频文件嵌入元数据(ID3v2 SYLT/USLT标签)提取;③若仍未获取到,提供手动粘贴/导入LRC文本的入口。获取结果缓存到本地,下次播放同一首歌直接使用缓存。在线搜索失败不阻塞播放。
歌词获取策略
三级回退策略获取歌词:1) 优先从音频文件内嵌歌词(ID3v2/SYLT/MP4 lyrics标签)提取;2) 若无内嵌歌词,通过在线歌词API搜索匹配(按歌曲名+歌手+时长匹配);3) 在线搜索失败时,允许用户手动粘贴LRC文本。获取结果缓存到本地,下次播放同一首歌直接使用缓存。在线搜索时显示"搜索歌词中…"状态,失败提示"未找到匹配歌词,可手动粘贴"。
DIY 视觉控制台
自定义预设、参数、配色与背景,打造专属风格。提供可视化参数调节面板,实时预览效果。
预设管理面板
内置至少3套出厂预设(如"极光"、"霓虹"、"星尘"),用户可基于任意预设派生自定义预设。支持新建/保存/重命名/删除用户预设。预设列表以卡片或下拉菜单展示,点击即切换,切换时效果平滑过渡。
粒子参数调节面板
提供滑块控件调节粒子核心参数:粒子数量(100-50000)、粒子大小(1-50px)、运动速度(0.1-5x)、透明度(0-100%)、拖尾长度(0-30帧)、引力强度(0-1)。提供粒子形态下拉选择器,列出6种预设形态(星点/波纹扩散/螺旋上升/烟花爆发/流光线条/迷雾弥漫),选中即切换。每个控件实时生效,右侧显示当前数值。提供"恢复默认"按钮。仅在背景模式为"粒子特效"时显示该参数组,切换为流体城市时自动隐藏并显示流体城市参数组(FR-CONSOLE-006)。
配色方案编辑器
提供调色板选取器(至少支持主色/辅色/背景色三色配置),预设渐变色方案库(至少10种)。支持色相、饱和度、亮度滑块微调。配色方案可命名保存,与预设绑定。实时预览配色在粒子/场景上的效果。
背景与场景切换
支持切换视觉背景模式:粒子特效(默认)、流体城市、纯色背景、径向渐变背景、自定义图片背景。切换时淡入淡出过渡(约300ms)。背景模式选择与预设绑定保存。
预设导入导出
支持将用户自定义预设导出为JSON文件(含粒子参数、配色方案、背景模式等完整配置),导出时自动命名含预设名称和时间戳。支持从JSON文件导入预设,导入时校验格式和参数范围,参数超出范围自动钳位到合法值。导入后出现在用户预设列表中,名称冲突时提示"同名预设已存在,是否覆盖?"。
预设导入导出
支持用户预设导出为 JSON 文件(含粒子参数、配色方案、背景模式等全部可配置项),支持导入 JSON 格式预设文件。导入时校验格式,失败提示"预设文件格式不正确"。预设文件可跨设备迁移。提供"导出预设"/"导入预设"按钮,导入成功后自动切换到新预设。
流体城市参数调节
在视觉控制台中提供流体城市场景专属参数调节:建筑密度(0.1-3x)、建筑高度范围(1-20层)、波环强度(0-1)、泛光脉冲强度(0-1)、场景旋转速度(0-5x)。每个滑块实时生效,右侧显示当前数值。提供"恢复默认"按钮。参数与预设绑定保存,切换预设时自动应用。仅在背景模式为"流体城市"时显示该参数组,切换为粒子特效时自动隐藏。
多音源接入
网易云/QQ/酷狗/YouTube Music/播客等多平台音源统一搜索与播放接入。
统一搜索聚合
单一搜索框输入关键词,并行查询已启用的音源平台,结果聚合展示。每条结果显示平台图标、歌曲名、歌手、专辑、时长。支持按平台筛选、按相关度/热度排序。三态:加载中(骨架屏)、空结果("未找到相关歌曲")、错误(显示失败平台并允许重试)。
网易云音乐接入
对接网易云音乐API(或第三方封装API),支持搜索歌曲/歌单/专辑、获取歌曲详情和播放URL。API调用失败时返回明确错误提示"网易云暂不可用",不阻塞其他音源。需处理API限流和鉴权。
QQ音乐接入
对接QQ音乐API,支持搜索歌曲/歌单/专辑、获取歌曲详情和播放URL。API调用失败时返回明确错误提示"QQ音乐暂不可用",不阻塞其他音源。需处理API限流和鉴权。
酷狗音乐接入
对接酷狗音乐API,支持搜索歌曲/歌单/专辑、获取歌曲详情和播放URL。API调用失败时返回明确错误提示"酷狗音乐暂不可用",不阻塞其他音源。需处理API限流和鉴权。
YouTube Music接入
对接YouTube Music/YouTube Data API,支持搜索歌曲/视频、获取播放URL。API调用失败时返回明确错误提示"YouTube Music暂不可用",不阻塞其他音源。需处理API限流和OAuth鉴权。
播客源接入
支持播客RSS订阅源解析,输入播客URL自动解析节目列表。支持搜索播客名称/节目。获取节目音频URL并加入播放队列。支持订阅管理(添加/取消订阅/刷新)。
音源启用与鉴权管理
提供音源管理面板:每个音源有独立启用/禁用开关,禁用后该音源不参与搜索聚合。显示各音源鉴权状态(未登录/已登录/Token过期),点击可触发登录流程(OAuth弹窗或扫码)。登录态持久化加密存储(不存明文密码)。音源不可用时在面板显示原因(如"API限流中,请稍后")。提供"全部启用/全部禁用"快捷操作。
音源管理面板
提供音源启用/禁用开关列表,每个音源显示:平台图标、名称、鉴权状态(未登录/已授权/已过期)、启用开关。用户可单独启用或禁用任意音源,禁用后该音源不参与搜索聚合。点击音源行可触发登录授权流程(OAuth或扫码)。鉴权状态持久化保存,令牌过期时自动标记并提示用户重新授权。
音频播放引擎
核心音频播放能力:本地文件播放、在线流媒体播放、播放队列管理、频谱数据提取,为所有可视化模块提供实时音频数据。
本地音频文件播放
支持打开本地音频文件(MP3/FLAC/WAV/OGG/AAC/M4A),通过文件选择器或拖拽导入。解析文件元数据(标题、歌手、专辑、封面),解码并播放。不支持的格式提示"该音频格式不支持"。
在线流媒体播放
支持HTTP/HTTPS流媒体URL播放,支持断点续传和缓冲。播放时显示缓冲进度条。网络异常时自动重试3次,失败后提示"播放失败,请检查网络连接"。播放中途若URL过期导致中断,自动尝试重新获取该歌曲的可用音源URL(按音源优先级逐个尝试),获取成功后从断点续播,所有音源均失败则提示"播放地址已失效,请重新搜索"。
播放控制条
提供播放/暂停按钮、上一曲/下一曲按钮、可拖拽进度条(显示当前时间/总时长)、音量滑块(0-100%,静音切换)。全部控件支持键盘快捷键。播放状态变更时向所有可视化模块发布事件。
播放模式与队列管理
支持4种播放模式切换:顺序播放、随机播放、单曲循环、列表循环。当前模式以图标高亮指示。播放队列显示歌曲列表,支持点击切歌、从队列移除。队尾播放完毕后按模式规则决定下一曲。
实时频谱数据提取
通过Web Audio API AnalyserNode进行FFT频谱分析,输出频率数据(fftSize=2048,输出1024个频点)和时域波形数据。每帧更新(约60Hz),通过事件总线广播给所有可视化模块。提供低频(20-250Hz)/中频(250-2000Hz)/高频(2000-20000Hz)三频段能量值。
事件总线接口契约
定义全局事件总线接口:事件类型包括 `playback:state`(播放/暂停/停止,payload: {state, songId, position})、`playback:progress`(进度更新,payload: {position, duration})、`spectrum:data`(频谱数据,payload: {frequencyData[1024], timeDomainData[2048], lowEnergy, midEnergy, highEnergy, volume})、`beat:detected`(鼓点检测,payload: {intensity, timestamp})、`preset:changed`(预设切换,payload: {presetId, presetName})、`color:changed`(配色变更,payload: {primary, secondary, background})。提供 `subscribe(eventType, handler)` 和 `unsubscribe(eventType, handler)` 方法,handler 调用频率不超过 60Hz。事件总线为单例,模块间解耦通信。
搜索→播放交互链路
定义搜索结果到播放的完整交互:①点击搜索结果行→直接替换当前播放队列并立即播放该歌曲(队列清空后仅含该曲);②右键搜索结果行→弹出菜单"下一首播放"/"添加到队尾";③拖拽搜索结果到播放队列指定位置插入。所有操作有 toast 反馈(如"已开始播放:歌曲名")。若音源播放URL获取失败,弹出错误提示并尝试下一个可用音源,所有音源均失败则提示"该歌曲暂无可用音源"。
鼓点检测算法
基于频谱能量变化率检测音频鼓点(onset detection):对每帧频谱数据计算相邻帧能量差,当某频段(主要关注低频20-200Hz)能量突增超过阈值(可配置,默认阈值=当前帧能量超过前5帧均值的1.8倍)时判定为鼓点。鼓点检测结果通过事件总线 `beat:detected` 广播(payload: {intensity: 能量增幅比例, timestamp})。检测频率与频谱帧率同步(约60Hz),避免重复触发(同一鼓点200ms内不重复广播)。
应用基础框架
应用窗口管理、全局设置、主题切换、快捷键、系统托盘、启动引导等基础能力。
主窗口与布局管理
主窗口默认1280x720,支持自由缩放和最大化。布局分为可视化主区域(占70%面积)和侧边控制面板(占30%,可折叠)。可视化主区域底部叠加歌词显示条(高度80-120px,半透明背景,显示当前行+下一行,可手动隐藏)。窗口标题显示当前播放歌曲名。窗口关闭时最小化到系统托盘而非退出。
系统托盘与后台运行
系统托盘显示应用图标,右键菜单提供:显示/隐藏主窗口、播放/暂停、上一曲/下一曲、退出。关闭主窗口时应用继续后台运行,托盘图标保持。双击托盘图标恢复主窗口。
全局快捷键系统
支持全局快捷键(即使应用在后台也生效):播放/暂停(Space)、上一曲(Left)、下一曲(Right)、音量+/-、显示/隐藏桌面歌词、显示/隐藏主窗口。快捷键可自定义,冲突时提示用户。快捷键配置持久化保存。
全局设置持久化
所有用户设置(预设选择、参数值、配色方案、音量、播放模式、窗口位置大小、快捷键配置)自动持久化到本地存储。应用启动时恢复上次状态。提供"恢复出厂设置"按钮(确认弹窗后重置所有设置)。
启动引导与首次体验
首次启动显示欢迎引导页:选择默认预设(3选1)、选择默认音源、设置桌面歌词开关。引导完成后进入主界面。非首次启动直接恢复上次状态。引导页可跳过,跳过则使用出厂默认配置。
可视化区域内容切换
可视化主区域支持3种内容模式:①粒子特效/流体城市(由FR-CONSOLE-004背景模式决定,随音乐实时律动);②3D歌单架(立体化浏览和管理歌单);③纯播放信息(专辑封面+歌词+进度,无3D渲染)。用户通过底部Tab栏或侧边按钮切换模式,切换时300ms淡入淡出过渡。3D歌单架模式下音频仍播放、桌面歌词仍显示,但主区域不渲染粒子/城市。模式选择持久化保存。
技术栈声明
应用基于 Electron 桌面框架构建,渲染进程使用 WebGL/Three.js 实现 3D 可视化(粒子系统、流体城市、歌单架),音频处理使用 Web Audio API(AnalyserNode FFT 频谱分析 + 音频解码播放)。主进程管理窗口、系统托盘、全局快捷键。渲染进程与主进程通过 IPC 通信,模块间通过事件总线(TR-EVENT-001)解耦。所有本地数据(设置、歌单、预设、歌词缓存)通过 electron-store 或等价方案持久化到用户数据目录。