项目作者: Lugia123

项目描述 :
XMIDI是一款IOS上的MIDI播放引擎。
高级语言: Objective-C
项目地址: git://github.com/Lugia123/XMIDI-2.0.git
创建时间: 2015-06-23T02:07:10Z
项目社区:https://github.com/Lugia123/XMIDI-2.0

开源协议:Other

下载


XMIDI

简介

  1. XMIDI是一款IOS上的MIDI文件播放引擎。
  2. 2.0版本与之前1.0相比最大的变化在于播放模式的变更,由原来的OpenAL改为了AudioUnit
  3. 2.0版本支持多种乐器,可以自己定义和添加乐器。
  4. 本引擎使用OC编写,项目示例为Swift语言。
  5. 使用上有问题可以联系我。
  6. 邮件:watarux@qq.com
  7. QQ:56809958
  8. 交流群:334533178

更新履历

2015-07-09

1.更新2.1,增加播放控制方法。

  1. //Midi当前标准时间点(秒)(标准时间)
  2. @property (nonatomic) float timeStamp;
  3. //跳转到某个音符开始播放
  4. -(void)gotoNoteByTrackIndex:(int)trackIndex NodeIndex:(int)noteIndex;

2015-05-22

1.初次版本发布。

使用方法

1.初始化API

  1. //初始化。
  2. XMidiPlayer.xInit()

2.资源释放API

  1. //资源释放。
  2. XMidiPlayer.xDispose()

3.播放MIDI示例

  1. //读取文件
  2. var filePath = NSBundle.mainBundle().pathForResource("midiFileName", ofType: "mid")
  3. //根据URL播放MIDI
  4. var url = NSURL(fileURLWithPath: filePath!)
  5. var midiPlayer:XMidiPlayer = XMidiPlayer()
  6. midiPlayer.initMidi(url!)
  7. midiPlayer.play()
  8. //根据Data播放MIDI
  9. var data = NSFileManager.defaultManager().contentsAtPath(filePath!)
  10. var midiPlayer:XMidiPlayer = XMidiPlayer()
  11. midiPlayer.initMidiWithData(data)
  12. midiPlayer.play()

4.XMidiPlayer播放控制API

  1. //Midi总播放时间(秒)(真实时间)
  2. @property (nonatomic,readonly) float totalTime;
  3. //Midi当前播放时间点(秒)(真实时间)
  4. @property (nonatomic) float time;
  5. //Midi当前标准时间点(秒)(标准时间)
  6. @property (nonatomic) float timeStamp;
  7. //当前播放进度 返回一个0~1的一个小数,代表进度百分比
  8. @property (nonatomic) float progress;
  9. //初始化MIDI URL
  10. -(void)initMidi:(NSURL*)midiUrl;
  11. //初始化MIDI Data
  12. -(void)initMidiWithData:(NSData*)data;
  13. //暂停
  14. -(void)pause;
  15. //播放、继续播放
  16. -(void)play;
  17. //重播
  18. -(void)replay;
  19. //关闭播放器
  20. -(void)closePlayer;
  21. //跳转到某个音符开始播放
  22. -(void)gotoNoteByTrackIndex:(int)trackIndex NodeIndex:(int)noteIndex;
  23. //Midi信息
  24. - (NSString *)midiDescription;

5.XMidiPlayer委托事件

  1. //播放进度变化 progress是一个0~1的一个小数,代表进度百分比
  2. + (void)progressChanged:(double)progress;

6.关于乐器字典

  1. 字典文件使用.aupreset文件,可以使用AppleAU Lab生成。
  2. 可以在Xcode->Open Developer Tool->More Developer Tools中下载Audio Tools for Xcode
  3. 乐器有两级分类,第一级17个大类,第二级128个子类。
  4. 每个大类有一种默认乐器,然后每个子类对应一种乐器。
  5. 其实还可以再细分,有兴趣的朋友可以看这里https://en.wikipedia.org/wiki/General_MIDI_Level_2

7.默认乐器字典

  1. 我添加的不全,缺少的大家可以自己添加,可在XAudioPlayer.h文件中修改乐器字典。
  2. 第一级
  3. InstrumentFirstType_Piano Yamaha Grand Piano
  4. InstrumentFirstType_ChromaticPercussion Celesta
  5. InstrumentFirstType_Organ Full Organ
  6. InstrumentFirstType_Guitar Classical Acoustic Guitar
  7. InstrumentFirstType_Bass Muted Electric Bass
  8. InstrumentFirstType_OrchestraSolo String Ensemble
  9. InstrumentFirstType_OrchestraEnsemble String Ensemble
  10. InstrumentFirstType_Brass French Horns
  11. InstrumentFirstType_Reed Alto Sax
  12. InstrumentFirstType_Wind Flutes
  13. 第二级
  14. InstrumentSecondType_OrchestralKit Orchestral Kit