浅谈midi与cocos的交互
2016-03-24 10:23
423 查看
最近在做智能钢琴。
听说公司抱上了海伦的大腿,整个cocos的游戏部分都得我来做,压力还是蛮大的。
IOS原生那边已经把midi通信写好的, 但是是oc的底层,做混编比较困难。
所以只能找到了一个C++的库,下面我来说下midi通信的基本要点。
注意这是个深坑,所以你没法用win底层的midi通信去和ios搞对接。
win下是用的winmm.dll这个类库
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层时发现某些问题,所以我也用观察者模式从新对回调函数进行封装。
本来想用线程去做异步发送消息,但是后来尝试失败,只能用容器去管理,来实现异步的加载(这里具体功能是实现了,但是整个原理我自己还比较懵,属于运气好,试出来了)
听说公司抱上了海伦的大腿,整个cocos的游戏部分都得我来做,压力还是蛮大的。
IOS原生那边已经把midi通信写好的, 但是是oc的底层,做混编比较困难。
所以只能找到了一个C++的库,下面我来说下midi通信的基本要点。
平台
对于不同平台的midi通信的机制是完全不同的。注意这是个深坑,所以你没法用win底层的midi通信去和ios搞对接。
win下是用的winmm.dll这个类库
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层时发现某些问题,所以我也用观察者模式从新对回调函数进行封装。
本来想用线程去做异步发送消息,但是后来尝试失败,只能用容器去管理,来实现异步的加载(这里具体功能是实现了,但是整个原理我自己还比较懵,属于运气好,试出来了)
相关文章推荐
- cocos2dx之伪3D,2D平面图片按比例缩放实例
- cocos ide 出现lua语句不执行的bug
- 搭建 Cocos2d-html5环境与webstorm的配置
- cocos2d-x 自定义动态特效背景
- Cocos2dx Shader 使用系列之一:OpenGL Shader Language介绍
- cocos2d-x的安装
- 学习Cocos2d的博客 --推荐
- cocospod 安装和使用
- xcode 把cocos2d-x 以源码的形式包含进自己的项目适合, 性能分析问题的错误
- Windows下Cocos2dx-3.10的Android交叉编译环境搭建
- eclipse编译下cocos2dx3.x
- 我所理解的cocos2dx屏幕适配
- cocos2dx 坐标系相关知识总结
- cocos2d-x-3.9,js对ccs的Listview的item的Button如果有setEnabled 操作,在android手机的微信里面打开会出现上下滑动变卡
- 如何在Windows 7平台搭建Android Cocos2d-x3.2alpha0开发环境
- 在Windows7上搭建Cocos2d-x 3.2alpha0开发环境
- 战火引擎~完爆cocos2d
- cocos2dx遇到的坑2
- cocos2dx遇到的坑1
- Cocos2dx.3x入门三部曲-Hello Game项目解析(三)