TooLongLink Video Watcher AI
Watch:
العربية - Arabic
Bahasa Indonesia
বাংলা - Bengali
български - Bulgarian
简体中文 - Chinese Simplified
繁體中文 - Chinese Traditional
Hrvatski - Croatian
Čeština - Czech
Dansk - Danish
Nederlands - Dutch
English
Eesti - Estonian
فارسی - Farsi
Suomi - Finnish
Français - French
Deutsch - German
Ελληνικά - Greek
ગુજરાતી - Gujarati
עברית - Hebrew
हिन्दी - Hindi
Magyar - Hungarian
Italiano - Italian
日本語 - Japanese
ಕನ್ನಡ - Kannada
한국어 - Korean
Latviešu - Latvian
Lietuvių - Lithuanian
മലയാളം - Malayalam
मराठी - Marathi
Norsk - Norwegian
Polski - Polish
Português - Portuguese
Română - Romanian
Русский - Russian
Српски - Serbian
Slovenčina - Slovak
Slovenščina - Slovenian
Español - Spanish
Kiswahili - Swahili
Svenska - Swedish
தமிழ் - Tamil
తెలుగు - Telugu
ไทย - Thai
Türkçe - Turkish
Українська - Ukrainian
اردو - Urdu
Tiếng Việt - Vietnamese
Submit
MuseScore 4 制作历程:音乐应用设计的挑战与创新
Tantacrul
总结:
MuseScore 4的开发历时两年半,旨在解决其前身(V3)存在的结构性缺陷和技术债务。
团队从零开始重构了应用的核心架构和用户界面(UI),放弃了受限的Qt Widgets,转而使用更灵活的QML,大大提高了开发速度和能力。
重新设计了用户体验,特别是乐谱设置向导和分谱编辑流程,将其简化至两步,并支持实时预览和定制。
创新性地引入了“Muse Sounds”回放系统,突破了传统MIDI和VST的局限,能够理解乐谱上下文并进行音乐性演绎,显著提升了乐谱播放的真实感。
彻底改进了乐谱雕刻质量,包括连线、连音符、符杠的自动调整,以及Leland字体和横向间距的优化,使乐谱更具美观性和可读性。
开发过程中,团队克服了专业人才招聘、疫情导致的远程工作以及数千个bug的修复等挑战,最终实现了这次“史上最重要的乐谱应用更新”。
视频强调了开源社区在测试、修复bug和编写文档方面发挥的关键作用,以及GPL许可证对项目长期可持续性的重要性。
MuseScore 4 启动画面 [
00:01:50
]
引言 [
00:00:00
]
视频旨在揭示创意软件开发背后不为人知的真实过程、挑战和成功经验,而非市场宣传式的空泛承诺。
以Microsoft Paint 3D的开发经验为例,说明创意软件开发往往充满: - 意想不到的技术限制。 - 无休止的外部压力。 - 对产品整体目的的持续分歧。
作者作为MuseScore 4的首席设计师,分享了为期两年半的庞大开发过程,包括: - 重新设计应用外观和可用性。 - 彻底革新乐谱记谱系统。 - 全面升级回放系统。
这次更新是作者职业生涯中经历过的最庞大、最耗时的项目,但并非麻烦不断,只是极其漫长。
MuseScore的背景与挑战 [
02:56
]
MuseScore 3的开源特性
- 由Werner Schweer、Thomas Bonte和Nicolas Froment等无偿社区贡献者创建。 - 开发过程:创始人Werner首先完成记谱系统的核心重构,然后开放给社区进行完善和细节打磨,通过聊天室和论坛讨论。 - 社区贡献通常是小范围的调整,以减少对其他代码的影响,适合兼职贡献者的节奏。 - 数千个微小改进和建议经过大量测试和修订后,形成了稳定的新版本。
主要挑战:架构不稳定(“技术债务”)
- Musescore 3的架构被比作“休斯顿”而非“新加坡”,即无序发展,新功能需在现有低效结构上打补丁。 - 导致了数千个零散改进的复杂混合体,任何一处修改都可能破坏其他不相关的功能。 - 这是许多无法承担全职开发者和经验丰富设计师的开源应用所固有的问题,专业公司也常遇到“面条式代码”问题。 - 为解决此问题,MuseScore 4开发的第一年主要目标是建立正确的技术基础。
通过城市规划隐喻,解释MuseScore 3混乱的代码架构 [
00:04:50
]
团队组建挑战
- 核心工作量巨大,社区难以承担,需要扩充内部团队(最初仅作者和开发者Vasily)。 - 招聘难题:寻找具备乐谱经验的设计师、开发者和测试人员极其困难,如同“寻找拥有犯罪学学位的狗”。 - 疫情影响:原定伦敦办公室计划取消,转为全球远程团队,扩大了人才搜索范围,尽管组建完整团队花了近两年时间。 - 团队成员:
Vasily组建了核心开发团队,引入了三位曾合作过的开发者。
作者通过社交媒体和面试找到了Jessica(视觉设计师)、Peter(可访问性专家,后加入内部团队)、Bradley(UX设计师,拥有音乐表演博士学位)。
技术与设计挑战 [
07:54
]
UI组件限制
- MuseScore 3的界面主要基于Qt Widgets,该组件功能有限,常需在设计上做出妥协。 - 示例:Qt Widgets无法实现复杂的弹出窗口,导致团队尝试使用QML重写部分面板并取得成功。
UI重构
- MuseScore 4决定完全放弃Qt Widgets,使用QML从零开始重构整个界面。 - 这意味着每个交互和视觉元素(按钮、滚动条、标签、下拉菜单、滑块、上下文菜单、对话框、弹出窗口、搜索框、复选框等)都需重新构建。 - 还需处理颜色样式、文本样式、约400个图标、悬停状态、禁用状态及可访问性功能(如焦点状态、屏幕阅读器支持)。 - 所有这些功能必须在MacOS、Linux和PC上都能正常工作。 - 尽管从零开始风险很高,但完成后QML系统比Qt Widgets更灵活、更强大,显著提高了开发速度。 - 该组件库开源,计划用于Audacity界面的重制。
MuseScore 4中重新设计的乐谱设置界面 [
00:09:29
]
设计原则与体验改进
- 核心原则:始终关注新用户的体验,使其无需教程即可理解应用工作方式。 -
乐谱设置向导
:
MuseScore 3:开始时询问乐谱标题、作曲者等信息,但用户可能此时并无定论;乐器选择页面逻辑混乱,模板与手动选择混合;设置步骤多(5步)。
MuseScore 4:启动时直接进入乐器选择,模板作为独立标签页可供选择;界面更简洁,每个乐器都有描述性提示;将MuseScore 3的3个页面合并为1个,最大步骤从5步减少到2步。
如果用户未填写标题,MuseScore 4会自动添加默认标题,方便随时编辑或删除。
MuseScore 4中更简洁直观的新乐谱创建流程 [
00:12:29
]
MuseScore 4的新乐谱向导,步骤大大减少 [
00:16:28
]
-
分谱(Part Scores)管理
:
MuseScore 3:分谱对话框隐藏在菜单中,操作流程复杂(需手动生成、无法关闭、编辑顺序困难且需删除重建)。
MuseScore 4:在主界面放置显眼的“分谱”按钮,可随时开关分谱标签页。新的“乐器”面板允许用户快速增减或重新排列分谱中的乐器,并即时在乐谱上看到更改。
MuseScore 3中复杂且不直观的分谱设置对话框 [
00:16:58
]
MuseScore 4中简化的乐器管理和分谱编辑面板 [
00:18:28
]
-
界面冗余与合并
:
MuseScore 3有多个重复功能的播放面板和文本编辑面板,导致bug和用户困惑。
MuseScore 4合并了这些面板,并解决了相关bug。
混音器(Mixer):MuseScore 3的混音器窗口大且停靠不便。MuseScore 4将其放置在应用底部,并提供快速切换按钮。
MuseScore 3的混音器,一个笨重且难以停靠的窗口 [
00:12:09
]
颜色系统与可访问性
- 建立了12种颜色定义,用于背景、文本、按钮等,并强制所有界面元素使用这些定义。 - 颜色定义可根据上下文(如明暗主题)自动切换,实现“一次设计,两种主题”。 - 特别的“ACCENT_COLOUR”定义允许用户选择主题颜色。 - 可访问性:提供了可自定义的高对比度模式,以支持低视力、对比度感知差或色盲用户。社区成员Arjun Tunasia贡献了这一设计。 - Peter(社区成员,后加入团队)与作者共同设计了新的键盘导航系统,扩展了屏幕阅读器支持,并支持盲文导出,使MuseScore 4对盲人用户更加友好。 - 架构师Igor在幕后进行了大量的代码重构工作,为这些改进提供了坚实的基础。
MuseScore 4的12种颜色定义,支持明暗主题和自定义 [
00:18:58
]
MuseScore 4的可自定义高对比度模式 [
00:19:28
]
UI开发团队
- 设计师Jessica负责视觉设计,包括新的混音器界面。 - 开发者Roman和Elnur承担了绝大部分界面构建工作,包括大量可访问性功能。 - 社区成员Casper、Hemant Anthony和Dylan Nicholson在界面打磨上投入了大量时间。
回放系统革新 [
21:21
]
早期目标:支持VST乐器
- VST在DAW(数字音频工作站)中表现出色,能实现逼真的管弦乐音效。 - 但在记谱应用中,管弦乐VST使用起来非常笨拙,通常效果不佳。
MIDI与VST的局限性
-
MIDI协议的不足
:
MIDI是记谱应用向VST发送音乐指令的协议,但它不理解乐谱记号(如连音、跳音、重音、颤音)。
记谱应用必须将乐谱信息“翻译”成MIDI指令,但这一过程信息损失严重。
例如,MIDI只能发送“音符开始”和“音符结束”事件,无法告知VST何时播放连音、跳音或颤音的特定音色。
这就像演奏者只能看到瞬间指令,无法预知乐句走向,导致无法进行音乐性演绎。
MIDI协议的局限性是传统乐谱应用播放质量低下的原因 [
00:22:27
]
MIDI事件的简单性,无法传递丰富的音乐表情信息 [
00:23:17
]
-
VST乐器缺乏标准化
:
即使是同一制造商的VST乐器,也缺乏标准化。
这意味着记谱应用需要为每个VST插件单独提供支持,这是一个巨大的开发负担。
结果是,用户不得不手动将抽象的MIDI参数与乐谱符号关联起来,过程复杂且缓慢。 -
VST的实时性限制
:
VST是实时格式,MIDI无法“提前”传递乐谱信息(如乐句何时结束)。
这限制了VST开发者创建能进行音乐性演绎的智能系统,包括应用机器学习。
因此,即使最昂贵的VST音色库在记谱应用中也显得平淡无奇、机械化。
NotePerformer的解决方案
- NotePerformer是唯一能规避MIDI和VST限制的方案。 - 它通过与Sibelius等记谱应用直接集成,发送双方约定的音乐指令,从而理解乐谱上下文。 - 它还通过故意延迟播放一秒来“预读”乐谱,计算音乐性演绎。 - 然而,这种解决方案难以扩展,因为需要与多个记谱应用进行双向专门支持,市场壁垒高,导致市面上只有NotePerformer一个选项。
NotePerformer通过与乐谱应用直接集成来规避MIDI的限制 [
00:25:47
]
MuseScore 4的播放系统
- 最初计划在MuseScore 5中实现,但公司创始人Eugenie Nadianov决定在MuseScore 4中推出。 - Vasily(早期开发者)领导开发了全新的播放系统,历时两年:
能够发送丰富的记谱上下文信息。
能够持续处理乐谱并提前发送给采样器,使采样器能够计算出音乐性演奏。
同时保留了MIDI兼容性,确保外部键盘、音色库和VST仍能完美工作。 -
Muse Sounds
:StaffPad团队录制了全新的管弦乐音色,并开发了新的采样器技术,作为MuseScore的外部插件。 - 测试过程极其艰巨,需检查数百种技巧、乐器、速度组合。 - 结合新播放系统与Muse Sounds插件后,播放质量获得了惊人的提升。
Muse Sounds,MuseScore 4中全新的管弦乐音色插件 [
00:30:56
]
-
播放效果对比 (MuseScore 3 vs 4)
《天鹅湖》第1幕第10节 (柴可夫斯基):MuseScore 4的演奏更富动态和表现力。
《第八弦乐四重奏》 (肖斯塔科维奇):MuseScore 4的弦乐声音更真实,细节更丰富。
Allegri《求主怜悯》:MuseScore 4引入了渐变速度变化,使合唱听起来更自然。
MuseScore 4播放《天鹅湖》第1幕第10节片段 [
00:31:26
]
MuseScore 4播放肖斯塔科维奇《第八弦乐四重奏》片段 [
00:31:56
]
MuseScore 4播放肖斯塔科维奇《第八弦乐四重奏》片段(特写) [
00:32:26
]
MuseScore 4播放Allegri《求主怜悯》片段(注意逐渐变化的节奏) [
00:33:06
]
乐谱雕刻革新 [
33:22
]
目标
:实现最高的易读性和美观性,二者相辅相成。关键在于找到完美的平衡,避免“视觉噪音”。
连线和延音线(Slurs and Ties)
- MuseScore 3的问题:连线和延音线经常出现碰撞、穿透音符、相互交叉、与谱线重叠等问题,导致乐谱难以辨认和不美观。 - MuseScore 4的改进:
由雕刻专家Simon和工程师Aaron重写了算法。
解决了所有碰撞问题,弧线的峰值不再与谱线碰撞。
考虑到了增值符点和临时升降号,确保连线不会遮挡它们。
当和弦间距改变时,连线会自动调整到最佳位置。
MuseScore 3中连音线和延音线的碰撞与重叠问题 [
00:35:25
]
MuseScore 4中修正后的连音线和延音线,无碰撞且优雅 [
00:36:25
]
符杠(Beaming)
- Aaron开发了新的符杠算法,遵循Ted Ross《音乐雕刻与处理艺术》中的原则。 - MuseScore 3的问题:存在“楔形”和不必要的符杠与谱线交叉,增加了视觉噪音。 - MuseScore 4的改进:消除了所有视觉噪音,符杠更严谨、逻辑化,尤其在处理大型总谱时,清除了数百甚至数千个分散注意力的视觉元素。
MuseScore 3中符杠造成的视觉噪音,有“楔形”和交叉 [
00:37:15
]
MuseScore 4中改进的符杠,减少了视觉噪音 [
00:37:35
]
Leland 字体
- 新增了约200个符号,并重新设计了现有符号。 - 重新设计了音符旗帜,使其更直观、优雅。 - 社区贡献者Nick Mazuk改进了符杆长度的显示方式,确保音符旗帜无论出现在谱表何处都能完美贴合。
横向间距(Horizontal Spacing)
- 这是乐谱雕刻中最棘手的问题之一,要求在有限空间内进行持续的平衡。 - 最初因复杂性高而计划推迟,但社区成员Michele(物理学博士)的意外提交解决了这一难题,他甚至为此放弃了博士学位。 - MuseScore 3的问题:倾向于为所有元素创建过多额外空间,一致性差,例如不同音符持续时间却有不一致的间距,临时升降号会不必要地拉长小节。 - MuseScore 4的改进:Michele的算法完美解决了这些问题,重新平衡了所有元素,确保了间距的一致性,大大节省了空间,使得多乐器总谱排版更紧凑。
MuseScore 3中因音符持续时间导致的不一致横向间距 [
00:39:45
]
MuseScore 4中修正后的横向间距,完美对齐 [
00:40:04
]
MuseScore 3中混乱的连音符间距 [
00:40:44
]
MuseScore 4中改进的连音符间距,更加整齐 [
00:40:54
]
碰撞避免
- MuseScore 3:碰撞避免机制笨拙,导致符号间出现不必要的巨大空隙。 - MuseScore 4:更智能地处理碰撞,例如,尖锐音和琶音线能够巧妙地“收拢”,避免了不雅的空隙。
其他雕刻改进
- 页脚现在有统一的填充,不再与乐谱重叠。 - 系统(System)现在总是在相同位置开始,不受乐器名称长度影响。 - 动态符号的居中现在基于“光学中心”而非外框宽度,解决了MuseScore 3中动态符号(通常是斜体)看起来偏离中心的问题。 - 系统末端的线(如八度记号、歌词、颤音、连线)不再与最终小节线重叠。 - 嵌套连音符不再相互交叉。 - 连音符作为符杠组的一部分时,有更智能的括号显示。 - Simon的博客文章(链接在视频描述中)详细列出了所有更改。
MuseScore 3中动态符号因非光学中心对齐导致略微偏离 [
00:41:44
]
MuseScore 4中通过光学中心对齐的动态符号 [
00:41:54
]
MuseScore 4在线手册列出了所有雕刻改进 [
00:42:14
]
社区反馈
- 作者在Twitter上分享更新时,用户指出了许多细节问题,帮助团队进一步改进。 - 雕刻改进仍在进行中。
最后的冲刺... [
42:42
]
Bug修复
- 大规模代码重构不可避免地引入了数千个bug。GitHub上MuseScore 4有近3000个报告bug,加上内部测试则更多。 - 管理如此庞大的bug数量是一项巨大的组织挑战:需要调查、重现、确认、分类、优先级排序。 - 测试团队:Dmitry(作曲家,十年乐谱软件测试经验)和Borys(音乐与作曲背景)加入团队。 - 他们在2022年乌克兰战火期间,在极其恶劣的环境下,不知疲倦地测试Mac、PC和Linux版本,报告、确认、优先处理和测试修复。他们的贡献对MuseScore 4的发布至关重要。
MuseScore 4大规模重构的代码库 [
00:42:44
]
GitHub上的MuseScore 4 bug报告页面 [
00:43:04
]
MuseScore 4的测试专家Dmitry [
00:43:34
]
- 社区也积极参与bug报告和解决。
文档和教程
- MuseScore 4的发布使得现有所有文档和教程过时。 - 新的在线手册:由Bradley、Peter和长期社区贡献者Marc Sabatella领导创建,并开放社区贡献和翻译。 - 新的视频教程系列:针对现有用户和新用户,由Bradley和作者共同制作,并在应用内新增了“学习”部分。
MuseScore 4全新的在线手册,由团队和社区共同构建 [
00:44:24
]
发布前的压力
- 发布前三四个月,多项功能尚未完成,约500个关键bug待修复。 - 这是一个疯狂的瓶颈期,团队承受着巨大压力,为了这个庞大的项目投入了所有精力。 - 最终的发布带来了自豪感,但更多的是一种巨大的解脱。
开源的重要性 [
45:17
]
长期价值
- 作者回顾自己职业生涯中许多开发的专有软件最终被淘汰,代码永久锁定,无法被后人看到或利用。 - MuseScore作为开源项目,所有工作成果将永远可用,供未来的人们在此基础上继续构建。 - 只要有用户和社区成员投入,项目就能持续发展,为未来不可预测的创新提供跳板。
GPL许可证
- MuseScore使用GPL许可证,这是一种开源专利。 - 根据GPL构建的代码,只能被同样使用GPL许可证的应用重用。 - 这不断巩固了自由软件相对于专有软件的优势。
对所有为MuseScore做出贡献的社区成员和每天使用它创作乐谱的数百万用户表示感谢。
Copied!
Why didn’t you like it?
Inaccurate / wrong facts
Missing important points
Took too much time to load
Article too long / verbose
Article too short / not enough detail
Article hard to read / bad formatting
Images irrelevant / broken
Language / translation issues
Offensive / inappropriate
Other
Submit
Thank you for your feedback!
×