技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1852|回复: 13
收起左侧

【VB】VB编写的基于midiOut系列API实现的MIDI文件播放器

[复制链接]

995

主题

2207

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
197
威望
261 点
宅币
16463 个
贡献
32443 次
宅之契约
0 份
在线时间
1565 小时
注册时间
2014-1-26
发表于 2014-7-20 00:04:12 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
原帖:http://www.0xaa55.com/thread-720-1-1.html
转载请注明出处。

原理就是通过直接读MIDI文件的内容,然后把其中的消息通过midiOutShortMsg进行发送,实现MIDI文件的播放。
经测试,这个程序能完美播放各种MIDI文件。
想要了解MIDI文件结构的可以来看看。

有关MIDI文件结构的上一篇帖子请参看这里:http://www.0xaa55.com/thread-717-1-1.html
有关midiOut系列API有关的资料,请自行查找MSDN。

这个程序是用VB写的。因为VB对于界面的处理比较方便。

BIN: MIDIFile.exe (52 KB, 下载次数: 14, 售价: 2 个宅币)

本帖被以下淘专辑推荐:

995

主题

2207

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
197
威望
261 点
宅币
16463 个
贡献
32443 次
宅之契约
0 份
在线时间
1565 小时
注册时间
2014-1-26
 楼主| 发表于 2014-7-23 12:19:50 | 显示全部楼层
2014.7.23 更新:更改了时间方面的算法,播放效果更好了,但是,重新设置播放位置变得很麻烦。
          这次更新使播放效果完全超出了你用mciSendCommand播放的效果。保证完全没有漏音了。
          漏音是因为计时器的不精确性导致有些时间非常接近的MIDI事件以错误的顺序播放了。这次采取的方式是每个音轨独立计算播放位置。保证MIDI事件的顺序正确输出。

995

主题

2207

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
197
威望
261 点
宅币
16463 个
贡献
32443 次
宅之契约
0 份
在线时间
1565 小时
注册时间
2014-1-26
 楼主| 发表于 2014-7-24 19:14:28 | 显示全部楼层
2014.7.24 更新:添加了新的视图样式,可以看音高了。
          修改了窗口的加载函数,现在可以设置文件关联了。

0

主题

1

帖子

2

积分

用户组: 初·技术宅

UID
474
精华
0
威望
0 点
宅币
1 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2014-9-5
发表于 2014-9-5 21:26:45 | 显示全部楼层
大神~~~膜拜给跪了

0

主题

13

帖子

18

积分

用户组: 初·技术宅

UID
606
精华
0
威望
2 点
宅币
1 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2014-12-21
发表于 2014-12-21 06:30:02 | 显示全部楼层
我正在使用vb操作midi文件,对这个主题很感兴趣

0

主题

1

帖子

9

积分

用户组: 初·技术宅

UID
2247
精华
0
威望
0 点
宅币
8 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-2-13
发表于 2017-2-13 17:18:23 | 显示全部楼层
太好了,真是技术高手

1

主题

22

帖子

106

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
80 个
贡献
0 次
宅之契约
0 份
在线时间
13 小时
注册时间
2017-10-24
发表于 2017-10-25 01:54:19 | 显示全部楼层
看上去很强大

1

主题

22

帖子

106

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
80 个
贡献
0 次
宅之契约
0 份
在线时间
13 小时
注册时间
2017-10-24
发表于 2017-10-25 02:24:10 | 显示全部楼层
我在做钢琴卷帘窗

1

主题

22

帖子

106

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
80 个
贡献
0 次
宅之契约
0 份
在线时间
13 小时
注册时间
2017-10-24
发表于 2017-11-16 20:35:10 | 显示全部楼层
我写了自定义格式的文件,参照这里的代码写出了程序实现播放。我想实现从中间任一位置开始播放,请问站长该怎么设置?

0

主题

1

帖子

6

积分

用户组: 初·技术宅

UID
3113
精华
0
威望
1 点
宅币
3 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2017-11-20
发表于 2017-11-20 19:33:48 | 显示全部楼层
谢谢 楼主,我看看

1

主题

22

帖子

106

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
80 个
贡献
0 次
宅之契约
0 份
在线时间
13 小时
注册时间
2017-10-24
发表于 2018-1-2 15:18:32 | 显示全部楼层
如果MIDI文件4分音符的TICK数是480就播放不了。

0

主题

9

帖子

35

积分

用户组: 初·技术宅

UID
3290
精华
0
威望
0 点
宅币
26 个
贡献
0 次
宅之契约
0 份
在线时间
4 小时
注册时间
2018-1-3
发表于 2018-1-4 16:32:21 | 显示全部楼层
谢谢 楼主,我看看

1

主题

22

帖子

106

积分

用户组: 小·技术宅

UID
3003
精华
0
威望
2 点
宅币
80 个
贡献
0 次
宅之契约
0 份
在线时间
13 小时
注册时间
2017-10-24
发表于 2018-1-5 11:10:40 | 显示全部楼层
请问站长: GetTimerValue = (T_Current - T_BeginTime) * T_Velocity / T_Freq
这里所得结果的单位是什么?

0

主题

1

帖子

17

积分

用户组: 初·技术宅

UID
3562
精华
0
威望
2 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2018-3-13
发表于 2018-3-13 09:22:05 | 显示全部楼层
支持楼主的软件

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2018-9-24 00:50 , Processed in 0.137391 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表