sudo apt-get安装cmake-doxygen库{boost-{program-options,test},fluidsynth,icu}-dev
红宝石-e " $( 卷曲-fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
xcode-select--安装 brew安装cmake lame pkg-config python3 qt5胆怯xerces-c xsd pip3安装狮身人面像 brew安装木桶室/木桶/brew-cask 啤酒桶安装lilypond brew安装boost--使用python brew安装boost-python
git克隆--安静 https://github.com/mlang/bmc.git git子模块--静默更新--初始化--递归
光盘 骨基质细胞 克马克 .
制作
进行检查
msbuild bmc.sln/t:bmc-ui/p:Configuration=发布
将当前代码库移植到Windows: 了解如何模仿当前使用的FluidSynth功能 Windows下的Linux。 理想情况下,为实时MIDI创建一个通用类 独立于平台的回放,并实现FluidSynth(Linux)和 Windows后端在此之上。 调查编码兼容性:BMC尝试在内部基于Unicode。 在UNIX上,wchar_t是32位宽的,可以实现完全的Unicode兼容性。 在Windows上,它是16位宽的隐式UTF16编码(这是我当前的 理解)。 找出我们需要的编码 Windows并以最灵活的方式处理它们。 Unicode码 总是在内部被优先考虑。 是否支持Unicode盲文 在Windows上的命令提示符下? 当前单元测试输入数据为 全部采用UTF-8编码。 确定这是否是Windows上的问题。
改进解析期间的错误报告:一些有用的诊断 已经打印,但在许多其他情况下,解析器不会生成 有用的错误消息。 开始一首盲文音乐可能很难 如果你不知道为什么BMC不接受它,那就从头开始。 实现标准MIDI文件(SMF)写入:除了实时播放外, 音乐乐谱也应该可以导出到磁盘上的MIDI文件,以便 它们可以与其他程序一起播放或导入。 注意,电流 回放代码只是概念验证,需要更多的工作 最好编写一些将bmc::midi::evenetqueue转换为 一个合适的磁盘表示,以便在实时 可以共享播放和文件导出。 正确处理绑定注释回放:与原型一样,回放 代码目前确实采用快捷方式。 转换时的一个典型问题 性能数据的注释材料是对(通常是直观的) 如何演奏音乐的提示。 铰接是一个(更高级的)实例 这一点。 一个更基本的是对联系的解释。 如果一个音符与另一个音调绑定,则应该同时使用这两个音符 添加了注释持续时间。 目前,播放代码忽略了这一点 播放并列音符,就像它们是两个独立的音符一样。 这需要修复。 请注意,关系可以跨越度量边界:一个度量末尾的注释 可以绑定到下一个度量的第一个音符之一。 设计一种方法来指定要回放的解析笔记材料的子集 或导出。 例如,用户可能希望从某个 在多段音乐中测量,或只听某一根棍子(手)。 设计处理展开的必要组件:布莱叶盲文音乐代码 允许以更精细的粒度规范重复的注释材料 视觉音乐符号所允许的方式。 相似的符号可以用来重复 完整的措施,特定的声音,甚至声音的一部分。 布莱叶盲文 重复可以用来表示任意范围测量的重复 现有员工人数。 这意味着我们必须处理 这两种表达方式:有一个处理阶段,所有这些 重复指令存在(一旦解析阶段成功),我们 将希望展开给定的抽象语法树,这样我们就可以看到 这些缩写实际上暗示了所有的音符。 我们显然需要一个 展开“视图”以导出到除布莱叶盲文音乐代码以外的任何其他代码,因为 大多数其他格式似乎缺乏这些压缩功能。 例如, 在生成MIDI消息时,我们需要将所有缩写扩展为 我们知道需要生成的注释。 然而,LilyPond输入数据 允许一种特殊的重复,基本上起到类似的作用 如盲文音乐,即减少重复的音符材料。 如果我们有机会 到了LilyPond出口的阶段,我们可能想使用一些盲文 作为提示重复以生成更多人类可读的LilyPond文件。 可可港触摸: iOS可以按照预期处理Unicode盲文。 它显示在屏幕上 使用合适的字体,并与外部布莱叶盲文显示器配合使用 好。 考虑到这一点,建立一个通往Cocoa Touch的港口似乎是可行的。