浅谈midi与cocos的交互

最近在做智能钢琴。

听说公司抱上了海伦的大腿,整个cocos的游戏部分都得我来做,压力还是蛮大的。

IOS原生那边已经把midi通信写好的, 但是是oc的底层,做混编比较困难。

所以只能找到了一个C++的库,下面我来说下midi通信的基本要点。


平台

对于不同平台的midi通信的机制是完全不同的。

注意这是个深坑,所以你没法用win底层的midi通信去和ios搞对接。

win下是用的winmm.lib这个类库

Ios以及mac下都是用的自带的coremidi这个库

android用的什么库我还不清楚,主要不做android机


方法

其实方法也不多,就两种。
1.结合oc库做混编
2.找个C++跨平台的库


其实这两种我都试过,而且都成功了。

这里我推荐两个库

1.ios :https://github.com/mixedinkey-opensource/MIKMIDI


2.跨平台 :https://github.com/thestk/rtmidi


做混编呢,就是两个代码都得熟悉下,这个是先决条件。

重点讲下Rtmidi.其实他是不支持IOS,

他是支持Macintosh OS X,所以我在这个基础上重写了底层的一些方法,然后删除了一点Macintosh OS X里面的东西。

Rtmidi的回调函数对于cocos也有点问题,他的回调是个异步方法,在我封装model层时发现某些问题,所以我也用观察者模式从新对回调函数进行封装。

本来想用线程去做异步发送消息,但是后来尝试失败,只能用容器去管理,来实现异步的加载(这里具体功能是实现了,但是整个原理我自己还比较懵,属于运气好,试出来了)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值