帮助练习钢琴视奏的应用SightReading
参考SightReading获取应用代码和详细使用方法。
类图和数据结构
标签保存在UserDefault里面,数据格式如下:
1 2 3 4 5 6 |
|
对于乐谱“天空之城1”,保存的文件名如下:
- 乐谱图片:天空之城1.png
- 笔记图片:天空之城1&-note.png
- 每小节位置和大小文件:天空之城1.json
其中json文件格式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
数据备份
- 百度云盘下载(/MyDocument/歌谱简谱五线谱/SightReading应用数据备份20211207/mstr.SightReading.2021-12-07.xcappdata.zip)
- 解压得到.xcappdata文件,Mac右键“Show Package Content”。
- /App/Data/Documents/目录下保存着上面说的图片和json文件,/App/Library/Preferences/目录下保存着UserDefault对应的plist文件。
- xcode连接ipad,点击window->Devices and Simulators,选中iPad和SightReading应用。
- 点击下面的齿轮按钮,选择Replace container…,将解压出来的.xcappdata文件替换一下就可以了。
一些其它问题
移动Mask时换页的逻辑
在前一页最后一些节需要显示Mask的时候直接换页到下一页,因为这个时候演奏者已经看完了前一页的最后一小节,并且需要预读下一页的第一小节。
TODOs
- 笔记页面不能改变图片大小,比如转屏、全屏等,因为绘制等path坐标没有做相应的更改,会错位。
- 笔记页面的橡皮擦功能还不支持。现在的橡皮擦功能实际上就是不同颜色的画笔功能,需要真正实现橡皮擦功能,需要对所有的
ATShapeLayer
进行修改,添加一个完全透明的橡皮擦的path。 - 标签本身不支持编辑功能,比如修改标签名称、删除标签。
- 界面只支持英文,需要翻译成中文。
- 对于变节拍的乐曲还不支持。如果某些小节拍数会变化,那么节拍器和Mask显示逻辑需要重新考虑。