成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用iPhone 播放 MIDI 文件方法

移動(dòng)開(kāi)發(fā) iOS
本文介紹的是如何使用iPhone 播放 midi 文件方法,很詳細(xì)的為友們介紹了實(shí)力步驟,我們先來(lái)看內(nèi)容。

iPhone 播放 midi 文件方法是本文要介紹的內(nèi)容,吸納來(lái)看內(nèi)容。iPhone 默認(rèn)不帶播放MIDI的框架,所以播放MIDI還得尋求第3方的庫(kù)幫忙。這里使用的庫(kù)就是大名鼎鼎的 FMOD ,許多火爆游戲使用的都是這個(gè)庫(kù)。開(kāi)發(fā)者可以免費(fèi)下載使用。

首先下載安裝 FMOD API FOR IPHONE:http://www.fmod.org/index.php/release/version/fmodapi42607iphone- installer.dmg。

安裝后可以在目錄中看到不少示范代碼,可惜沒(méi)有MIDI

自己寫(xiě)一個(gè):)感謝強(qiáng)大的api,寫(xiě)起來(lái)異常輕松。

新建一個(gè)基于view項(xiàng)目

修改項(xiàng)目屬性,添加 Other Linker Flags 為 -lfmodexL_$PLATFORM_NAME

添加 Header Search Paths :/Developer/FMOD Programmers API iPhone/api/inc (默認(rèn)是這個(gè)位置,修改成自己FMOD安裝的目錄)

添加 Library Search Paths :/Developer/FMOD Programmers API iPhone/api/lib (同上)

把 appDelegate 修改成 .mm 的后綴

MIDI 播放需要一個(gè) DLS 文件, 在osx 下沒(méi)找到,這里使用了xp 自帶的 gm.dls 文件(3M 有點(diǎn)大~),拷貝到項(xiàng)目中。

修改ViewController 代碼如下 ,隨便在xib文件中鏈接兩個(gè)按鈕action上即可

運(yùn)行(真機(jī)有效)

主要代碼

  1.   //  
  2.   // PlayMidiDemoViewController.m  
  3.   // PlayMidiDemo  
  4.   //  
  5.   // Created by xhan on 9/9/09.  
  6.   // Copyright In-Blue 2009. All rights reserved.  
  7.   //  
  8.   #import "PlayMidiDemoViewController.h"  
  9.   @implementation PlayMidiDemoViewController  
  10.   @synthesize status;  
  11.   @synthesize time;  
  12.   void ERRCHECK(FMOD_RESULT result)  
  13.   {  
  14.   if (result != FMOD_OK)  
  15.   {  
  16.   fprintf(stderr, "FMOD error! (%d) %s ", result, FMOD_ErrorString(result));  
  17.   exit(-1);  
  18.   }  
  19.   }  
  20.   - (void)viewDidLoad {  
  21.   [super viewDidLoad];  
  22.   system = NULL;  
  23.   sound1 = NULL;  
  24.   sound2 = NULL;  
  25.   channel = NULL;  
  26.   }  
  27.   - (void)didReceiveMemoryWarning {  
  28.   // Releases the view if it doesn't have a superview.  
  29.     
  30.   [super didReceiveMemoryWarning];  
  31.   // Release any cached data, images, etc that aren't in use.  
  32.   }  
  33.   - (void)viewDidUnload {  
  34.   // Release any retained subviews of the main view.  
  35.   // e.g. self.myOutlet = nil;  
  36.   }  
  37.   - (void)dealloc {  
  38.   [status release], status = nil;  
  39.   [time release], time = nil;  
  40.   [super dealloc];  
  41.   }  
  42.   - (void)viewWillAppear:(BOOL)animated  
  43.   {  
  44.   FMOD_RESULT result = FMOD_OK;  
  45.   char buffer[200] = {0};  
  46.   unsigned int version = 0;  
  47.   /*  
  48.   Create a System object and initialize  
  49.   */  
  50.   result = FMOD::System_Create(&system);  
  51.   ERRCHECK(result);  
  52.   result = system->getVersion(&version);  
  53.   ERRCHECK(result);  
  54.   if (version < FMOD_VERSION)  
  55.   {  
  56.   fprintf(stderr, "You are using an old version of FMOD %08x. This program requires %08x ", version, FMOD_VERSION);  
  57.   exit(-1);  
  58.   }  
  59.   result = system->init(32, FMOD_INIT_NORMAL | FMOD_INIT_ENABLE_PROFILE, NULL);  
  60.   ERRCHECK(result);  
  61.   // set up DLS file  
  62.   FMOD_CREATESOUNDEXINFO soundExInfo;  
  63.   memset(&soundExInfo, 0, sizeof(FMOD_CREATESOUNDEXINFO));  
  64.   soundExInfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);  
  65.   char dlsName[200] = {0};  
  66.   [[NSString stringWithFormat:@"%@/gm.dls", [[NSBundle mainBundle] resourcePath]] 
  67. getCString:dlsName maxLength:200 encoding:NSASCIIStringEncoding];  
  68.   soundExInfo.dlsname = dlsName;  
  69.   // midi one  
  70.   [[NSString stringWithFormat:@"%@/Bass_sample.mid", [[NSBundle mainBundle] resourcePath]] 
  71. getCString:buffer maxLength:200 encoding:NSASCIIStringEncoding];  
  72.   result = system->createSound(buffer, FMOD_SOFTWARE | FMOD_CREATESTREAM, &soundExInfo, &sound1);  
  73.   // ERRCHECK(result);  
  74.     
  75.   result = sound1->setMode(FMOD_LOOP_OFF);  
  76.   // ERRCHECK(result);  
  77.   // midi two  
  78.   [[NSString stringWithFormat:@"%@/Drum_sample.mid", [[NSBundle mainBundle] resourcePath]]
  79.  getCString:buffer maxLength:200 encoding:NSASCIIStringEncoding];  
  80.   result = system->createSound(buffer, FMOD_SOFTWARE | FMOD_CREATESTREAM, &soundExInfo, &sound2);  
  81.   result = sound2->setMode(FMOD_LOOP_OFF);  
  82.   // timer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(timerUpdate:) userInfo:nil repeats:YES];  
  83.   }  
  84.   - (IBAction)playSound1:(id)sender  
  85.   {  
  86.   FMOD_RESULT result = FMOD_OK;  
  87.   result = system->playSound(FMOD_CHANNEL_FREE, sound1, false, &channel);  
  88.   ERRCHECK(result);  
  89.   }  
  90.   - (IBAction)playSound2:(id)sender  
  91.   {  
  92.   FMOD_RESULT result = FMOD_OK;  
  93.   result = system->playSound(FMOD_CHANNEL_FREE, sound2, false, &channel);  
  94.   ERRCHECK(result);  
  95.   }  
  96.   - (void)timerUpdate:(NSTimer *)timer  
  97.   {  
  98.   }  
  99.   @end 

 

小結(jié):關(guān)于如何使用iPhone 播放 MIDI 文件方法介紹完了,希望本文讀你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-22 15:59:15

iPhone 聲音 文件

2011-08-17 14:57:31

iPhone應(yīng)用視頻播放

2011-08-02 16:58:15

iPhone AVAudioPla 音頻播放

2022-04-22 17:07:21

MIDI傳輸協(xié)議音樂(lè)技術(shù)

2009-06-14 21:47:14

MIDIJava程序

2011-08-10 15:58:58

iPhone視頻

2011-08-08 10:23:41

iPhone 流播放 文件

2011-07-18 15:32:14

iPhone 錄音 播放

2011-08-10 16:08:02

iPhoneProtocol協(xié)議

2011-07-21 15:05:14

iPhone 數(shù)據(jù)庫(kù)

2011-08-18 13:37:57

iPhone項(xiàng)目靜態(tài)庫(kù)

2011-07-20 16:21:20

iPhone 視頻 播放器

2011-08-08 18:19:09

iPhone音頻播放

2011-07-27 09:50:31

iPhone AVAudioPla 音頻

2009-08-25 14:26:28

C#播放AVI文件

2011-08-15 09:58:25

iPhoneXib文件UITableView

2011-07-26 16:33:56

iPhone Delegate

2011-08-03 17:27:40

iPhone UIScrollVi

2011-08-08 14:07:49

iPhone開(kāi)發(fā) 字體

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费在线a视频 | 欧美成ee人免费视频 | 欧产日产国产精品国产 | 国产精品一区在线观看 | 成人区精品一区二区婷婷 | 成人国产精品一级毛片视频毛片 | 中文字幕在线播放第一页 | 91久久久久久久 | 国产黄色av网站 | 国产在线精品一区二区三区 | 狠狠干影院 | 二区三区视频 | 亚洲一区二区三区四区在线观看 | 天堂av中文 | 国产午夜精品一区二区三区嫩草 | xxxcom在线观看 | 九七午夜剧场福利写真 | 久久久美女 | 精品美女久久久 | 亚洲国产专区 | avmans最新导航地址 | 91精品国产综合久久婷婷香蕉 | 精品欧美激情在线观看 | 欧美嘿咻| 国产一区二区三区在线 | 国产高清视频 | 91精品国产综合久久久动漫日韩 | 成人一区二区在线 | 久久狠狠 | 天天操妹子 | 久久国内精品 | 久久国产精品一区二区三区 | 欧美日本高清 | www.色婷婷 | 色综合天天天天做夜夜夜夜做 | 成人免费观看男女羞羞视频 | 国产电影一区二区 | 精品国产乱码久久久久久影片 | 国产在线97 | 99爱国产| 夜夜夜夜夜夜曰天天天 |