XMIDI是一款IOS上的MIDI播放引擎。
XMIDI是一款IOS上的MIDI文件播放引擎。
2.0版本与之前1.0相比最大的变化在于播放模式的变更,由原来的OpenAL改为了AudioUnit。
2.0版本支持多种乐器,可以自己定义和添加乐器。
本引擎使用OC编写,项目示例为Swift语言。
使用上有问题可以联系我。
邮件:watarux@qq.com
QQ:56809958
交流群:334533178
1.更新2.1,增加播放控制方法。
//Midi当前标准时间点(秒)(标准时间)
@property (nonatomic) float timeStamp;
//跳转到某个音符开始播放
-(void)gotoNoteByTrackIndex:(int)trackIndex NodeIndex:(int)noteIndex;
1.初次版本发布。
//初始化。
XMidiPlayer.xInit()
//资源释放。
XMidiPlayer.xDispose()
//读取文件
var filePath = NSBundle.mainBundle().pathForResource("midiFileName", ofType: "mid")
//根据URL播放MIDI
var url = NSURL(fileURLWithPath: filePath!)
var midiPlayer:XMidiPlayer = XMidiPlayer()
midiPlayer.initMidi(url!)
midiPlayer.play()
//根据Data播放MIDI
var data = NSFileManager.defaultManager().contentsAtPath(filePath!)
var midiPlayer:XMidiPlayer = XMidiPlayer()
midiPlayer.initMidiWithData(data)
midiPlayer.play()
//Midi总播放时间(秒)(真实时间)
@property (nonatomic,readonly) float totalTime;
//Midi当前播放时间点(秒)(真实时间)
@property (nonatomic) float time;
//Midi当前标准时间点(秒)(标准时间)
@property (nonatomic) float timeStamp;
//当前播放进度 返回一个0~1的一个小数,代表进度百分比
@property (nonatomic) float progress;
//初始化MIDI URL
-(void)initMidi:(NSURL*)midiUrl;
//初始化MIDI Data
-(void)initMidiWithData:(NSData*)data;
//暂停
-(void)pause;
//播放、继续播放
-(void)play;
//重播
-(void)replay;
//关闭播放器
-(void)closePlayer;
//跳转到某个音符开始播放
-(void)gotoNoteByTrackIndex:(int)trackIndex NodeIndex:(int)noteIndex;
//Midi信息
- (NSString *)midiDescription;
//播放进度变化 progress是一个0~1的一个小数,代表进度百分比
+ (void)progressChanged:(double)progress;
字典文件使用.aupreset文件,可以使用Apple的AU Lab生成。
可以在Xcode->Open Developer Tool->More Developer Tools中下载Audio Tools for Xcode。
乐器有两级分类,第一级17个大类,第二级128个子类。
每个大类有一种默认乐器,然后每个子类对应一种乐器。
其实还可以再细分,有兴趣的朋友可以看这里https://en.wikipedia.org/wiki/General_MIDI_Level_2
我添加的不全,缺少的大家可以自己添加,可在XAudioPlayer.h文件中修改乐器字典。
第一级
InstrumentFirstType_Piano “Yamaha Grand Piano”
InstrumentFirstType_ChromaticPercussion “Celesta”
InstrumentFirstType_Organ ”Full Organ“
InstrumentFirstType_Guitar “Classical Acoustic Guitar”
InstrumentFirstType_Bass “Muted Electric Bass”
InstrumentFirstType_OrchestraSolo “String Ensemble”
InstrumentFirstType_OrchestraEnsemble “String Ensemble”
InstrumentFirstType_Brass “French Horns”
InstrumentFirstType_Reed ”Alto Sax“
InstrumentFirstType_Wind “Flutes”
第二级
InstrumentSecondType_OrchestralKit “Orchestral Kit”