# 交互音乐播放器 **Repository Path**: Liuzhi_G/interactive-music-player ## Basic Information - **Project Name**: 交互音乐播放器 - **Description**: 一个交互音乐播放器: 现已支持安卓与Windows双平台 现在你只需要点击两下,就可以完成音乐的无缝循环。你甚至可以编写简单的脚本或者套个脚本预设让音乐自动按照你的想法来运行,甚至可以动态交互控制你播放的音乐。 无论是无缝循环、步进循环、交互式无缝循环还是你能想到的,基本都可以。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2022-06-05 - **Last Updated**: 2024-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 音乐, dotNET, Csharp, WPF, MAUI ## README # 交互音乐播放器 版本号:1.0.0 | 最后更新:2022.6.5 | 该版本与新版本配置文件不兼容,且设置方式不一,请查看项目分支1.0.0 版本号:2.1.9 | 最后更新:2023.10.26 (当前的长期支持版本) 平台版本:Windows平台 2.1.9 | Android平台 2.1.9 Beta 1 若有使用疑问,请[点击这里,查看软件使用手册](%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/Home.md) ## 介绍 ------ ![Windows平台](%E5%9B%BE%E7%89%87/Windows%E5%B9%B3%E5%8F%B0%E5%B1%95%E7%A4%BA.PNG) ![Android平台](%E5%9B%BE%E7%89%87/Android%E5%B9%B3%E5%8F%B0%E5%B1%95%E7%A4%BA.PNG) ![输入图片说明](%E5%9B%BE%E7%89%87/1%E7%89%88%E6%9C%AC.png) 支持当下主流音乐播放模式(永续(无缝循环)、无缝章节切换、无缝步进)的音乐播放器,软件使用Win11的亚克力透明设计风格,用户体验较好。 通过调整选项,可以实现模拟任意游戏、影视剧中的音乐呈现模式。可以用于游戏音乐测试、日常欣赏等。 **支持的操作系统:** Windows平台: Win8 - Win11 (Win7用户需要安装框架支持包) Android平台: Android8.1 以上版本 即使在不同平台,配置文件、脚本也是互通的。编辑好的配置文件、脚本文件无论是在桌面环境,还是放入你的安卓设备均可获得一致性体验。 当前有两个版本,一个为 1.0.0 另一个为 2.1.9。 1.0.0 版本请查看项目的子分支,该版本配置较简单,无需编辑播放脚本文件,直接把文件放好就可以使用,简介请查看1.0.0的分支,此版本功能均可使用。若无重大故障,不再维护。 2.1.9 版本是当前的最新版本,该版本除了简单的配置之外,还可以随心所欲地配置自己的播放脚本,达到更多的播放效果。 近期更新 音量控制条、WAV、FLAC支持、脚本报告逻辑更新 以下为2.1.9 Windows版本的简介 ## 二次开发提示 ------ 如果你要使用当前项目进行开发,请记得还原NuGet程序包 若你要对安卓平台的MAUI实现包进行开发,除了还原NuGet包之外,你还需要注意,路径不可以有中文。 ## 软件架构 ------ 软件是使用 .Net6 的WPF/MAUI应用 内部使用常规三层架构,播放逻辑/控制/界面已经做了解藕处理。界面与播放逻辑可互不干扰运行。 > 界面层 <> 音乐控制中间件 <> 播放逻辑 需要注意的是,由于当前的版本功能还在完善过程中,代码结构并未完全分离。 ## 软件说明 需要注意的是,虽然大部分功能使用都没有问题,但软件并未完全开发完毕。 如果没有特殊的播放需求,仍然建议你使用只需要把文件丢进去,点两个选项就可以使用的 1.0.0 版本。 以下是桌面端的介绍,因为手机端暂为Demo阶段,功能可能变动,暂不提供说明。 ![输入图片说明](%E5%9B%BE%E7%89%87/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8.PNG) ![输入图片说明](%E5%9B%BE%E7%89%87/%E6%96%87%E4%BB%B6.png) ![输入图片说明](%E5%9B%BE%E7%89%87/%E6%AD%8C%E8%AF%8D.png) ![输入图片说明](%E5%9B%BE%E7%89%87/%E8%84%9A%E6%9C%AC%E6%B5%8F%E8%A7%88%E5%99%A8.PNG) ![输入图片说明](%E5%9B%BE%E7%89%87/%E8%84%9A%E6%9C%AC%E6%B5%8F%E8%A7%88%E5%99%A82.PNG) ![输入图片说明](%E5%9B%BE%E7%89%87/%E8%84%9A%E6%9C%AC%E7%BC%96%E8%BE%91%E6%8F%90%E7%A4%BA.PNG) ![输入图片说明](%E5%9B%BE%E7%89%87/%E8%84%9A%E6%9C%AC%E7%BC%96%E8%BE%91%E6%8F%90%E7%A4%BA2.PNG) 对于MP3文件,可以支持的播放处理操作 1. 常规播放 1. 常规循环 1. 播放列表循环(2.1.1)版本暂未实现,可尝试 1.0.0 版本 对于OGG、WAV、Flac文件,可以支持的播放处理操作 1. 从头到尾的无缝循环(一般的Loop模式) >> 例子 >> 1. 播放一段音乐然后立刻从头开始播放 >> 2. 几乎所有游戏都会用的一直播放背景音乐的模式 1. 播放到某一毫秒或者某个节拍的无缝循环(进阶的Loop模式) >> 例子 >> 1. 播放一段音乐后立刻跳转到本文件的某个位置开始播放或循环 >> 1. 播放一段音乐后立刻从另一文件的某个位置开始播放或循环 1. 多文件的起始段与循环段无缝循环 > 通过识别仅编号不同(xx 1.ogg、xx 2.ogg)的音频文件为一组音频文件,通过修改配置选项对该组文件选择性地进行循环播放 >> 例子 >> 1. 播放第一段至到最后一段,然后循环最后一段(默认操作) >> 1. 除了设置的循环音频文件,其他全部按顺序播放(在配置窗口中,激活音频文件后的循环按钮即可) >> 1. 除了以上的播放方法,你还可以通过编辑脚本动态切换段落,在点击按钮时,停止循环进入下一段。 1. 多文件的无缝即时音乐切换 > 通过识别仅编号不同(xx 1.ogg、xx 2.ogg)的音频文件为一组音频文件,通过修改配置选项对该组文件选择性地进行选择性无缝即时切换音乐 >> 例子 >> 1. 播放第一段至到设置的循环段落,然后通过切换章节按钮,自动无缝过渡到下一段落(在播放脚本设置中,应用预设的“交互式永续”脚本,简单修改你的文件章节名称以及段落信息即可。) >> 1. 可参考八方旅人在角色主题音乐与Boss主题音乐的音乐切换模式,通过配置后可达到几乎一致的效果。(与1.0.0版本不同的是,现在你不需要提前对音频进行任何处理了,只要需要将时间以及文件配置好,通过简单修改脚本就可以实现这样的效果。) 1. 多文件的步进音乐切换 > 通过识别仅编号不同(xx 1.ogg、xx 2.ogg)的音频文件为一组音频文件,通过修改配置选项对该组文件选择性地进行选择性无缝即时切换音乐 >> 例子 >> 1. 播放这组音频文件,通过切换章节按钮立刻将音乐步进到下一个部分(在播放脚本设置中,选择预设的“步进循环”,简单修改你的文件章节名称以及段落信息即可。) >> 1. 可参考当前大部分游戏在日常状态与战斗状态的音乐切换模式(如最终幻想15中的陆行鸟跑动与行走时的音乐切换、东方ProJect神灵庙中灵界音乐与普通音乐的切换),通过配置后可达到几乎一致的效果。 ## 使用说明 ------ 软件开启时,将默认导航到您的音乐文件夹 你可以通过在程序自带的文件浏览器中浏览音乐,或者点击右上角的文件夹按钮,来打开一个文件夹。 你可以右键点击文件浏览器上的音乐 1. 定位到文件所在位置 1. 定位到配置文件的所在路径 在选择好音乐后,你可以通过点击左侧的脚本编辑图标 1. 修改文件的显示别名、作者、显示BPM信息 1. 手动测试音乐的BPM 1. 简单的为文件或文件组配置段落、循环信息 1. 为你的音乐使用预设的或者自己编写的播放脚本。(脚本在编写时有完整的文档提示) 在你使用该播放器的任意模式时,都可以通过界面上的按钮调整播放音乐的基本内容 1. 播放/暂停/停止 2. 进度调整 3. 音量大小与静音 4. 播放进度 在你播放歌曲,想显示桌面歌词时,可以通过实时管理器打开桌面歌词显示 1. 切换单双行 2. 设置明暗 3. 鼠标穿透 如果你编辑了脚本时,你可以通过软件界面下方的按钮对播放中的音乐运行脚本操作。 ## 参与贡献 ------- 提交代码 1. Fork本仓库 2. 新建分支 3. 提交代码 4. 新建你的PullRequest 提交建议 1. 在Issue中提出你的观点看法,我将可能在下一版本改进 ## 开源项目使用 ------ 感谢项目作者 Naudio PanuonUI