【资源】MIDI播放器(Free Pascal)
pascal吧
全部回复
仅看楼主
level 9
ax_pokl 楼主
Free Pascal Midi播放器
下载地址:
http://axpokl.com/midiplayer.zip
https://github.com/axpokl/midiplayer
文件特性:
支持拖放文件播放
支持命令行播放(可设默认应用程序)
支持mid及rmi文件格式(支持非标准midi文件)
支持循环播放(不循环,单曲循环以及文件夹循环)
支持播放进度自动保存
播放特性:
支持暂停
支持快进快退
支持变速播放
支持音量控制
支持简单鼠标弹奏
支持软硬件重置
可视化窗口:
支持钢琴黑白键显示
支持音符颜色音高或声道
支持方块长度调整
支持和弦显示(颜色自动调整)
支持和弦数字显示(可调为字母)
支持显示节拍速度
支持显示节拍线
支持帧率调整
2017年12月17日 16点12分 1
level 9
ax_pokl 楼主
新版midiplayer,支持大文件播放
http://axpokl.com/midiplayer2.zip
midiplayer2:支持16M以内文件。
1,更改滑条mult,F9或者窗口大小改变->刷新缓冲区
2,将坐标计算部分移动到绘制之前加快运算速度
3,增加或重写keybdc判定(如果已有颜色则不设定琴键)加快琴键判定速度
4,调整scrtime加快琴键判定速度
5a,重写setmiditime加快seek后绘制速度
5b,解决seek后卡顿导致的鼠标无法释放bug
6,尝试解决之前提到的逆序绘图不一致问题
7,尝试64位增加或使用动态内存
8,解决loading时绘制到缓冲区线程不一致问题(loading时误将缓冲区内容输出到屏幕)
9,重写messure/chordline(初始化messure/chordline事件数组)
10,直接使用midi事件判定琴键
11,分离messure/chordline事件
12,重写initbnote,加快缓冲区刷新速度
13,修正initbnote的bug
14,左seek重新msglong
15,滑条总长度太大,缓存拆分数组
16,loading bug(巴赫)
17,msgbufn,溢出
http://axpokl.com/midiplayer3.zip
midiplayer3:支持1G以内文件。
1,使用文件缓存代替内存缓存,进一步加大了可播放文件大小。
1a,写了fevent0.inc,其中包括了Flush系列函数。
1b,写了fevent.inc。
1c,对fevet.inc的缓存使用了数组以加快排序速度。
1d,写了fnote.inc。
2,使用二分法,对setmiditime以及各种seek类函数进行了大优化。
3,更改double->single,减小了内存的使用。
4,重写了多线程cs,现在线程之间绘图/音频播放变得更安全了。
5,为小节线/和弦线添加了eventm,分离了这部分事件。
6a,重写了Drawall绘图函数,添加了FlushBar函数。
6b,重写了Bar系列函数,现在Bar会使用图像缓存数组分开绘制。
6c,修改了Bar的样式和颜色,修正了一个因图像缓存数组拼接导致的边界错误。
7,重写了DrawBNote系列函数,重写了InitBnote系列函数,FlushFNote等函数。
8,修改了midiOut的方式,现在ShortMsg和LongMsg会交替进行,防止小文件没声音但大文件声音跟不上。
9,删除了notemapl系列数组变量,现在对于长滑条会强制在创建图像缓存时绘制。
10,重写了SetTitle函数,添加并重写了DrawR函数。
11,修改了IsNextMsg函数的操作方法,现在连续seek或连续打开文件不会导致消息卡顿。
12,修改了主函数,将cs系列函数分离并添加了文件处理。
2018年01月12日 18点01分 7
啊丧心病狂[惊哭]
2018年01月20日 08点01分
@生若梦青丝绕 嗯,前几天测试了一下一个一亿个音符的文件(大约1G)没问题,这几天正在尝试用DirectX。
2018年01月21日 15点01分
2018年01月25日 12点01分
1