音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置。所述方法包括:按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間;讀取所述音頻文件的播放時(shí)間;根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。所述裝置包括:時(shí)間提取模塊,用于按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間;播放時(shí)間讀取模塊,用于讀取所述音頻文件的播放時(shí)間;控制模塊,用于根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。采用本發(fā)明提高了落點(diǎn)控制的準(zhǔn)確性。
【專(zhuān)利說(shuō)明】音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及音頻處理技術(shù),特別是涉及一種音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置。
【背景技術(shù)】
[0002]隨著應(yīng)用軟件的日益豐富,越來(lái)越多的應(yīng)用軟件配合音頻文件為用戶提供各種功能。應(yīng)用軟件在運(yùn)行過(guò)程中,常常根據(jù)音頻文件的節(jié)奏在應(yīng)用軟件界面中布設(shè)多個(gè)落點(diǎn),進(jìn)而通過(guò)用戶對(duì)落點(diǎn)的點(diǎn)擊觸發(fā)用戶操作,向用戶提供較為豐富的應(yīng)用軟件使用環(huán)境。
[0003]例如,在配合各種音樂(lè)所實(shí)現(xiàn)的游戲軟件中,根據(jù)音樂(lè)的節(jié)奏在每一幀游戲畫(huà)面中布設(shè)落點(diǎn),以根據(jù)用戶對(duì)落點(diǎn)所進(jìn)行的點(diǎn)擊操作實(shí)現(xiàn)游戲軟件中的用戶輸入。
[0004]在控制音頻文件中落點(diǎn)下落的過(guò)程中,任一幀應(yīng)用軟件界面是與音頻文件中某些數(shù)據(jù)相對(duì)應(yīng)的,這些數(shù)據(jù)標(biāo)識(shí)了對(duì)應(yīng)的應(yīng)用軟件界面的節(jié)奏以及與節(jié)奏相匹配的落點(diǎn),每一個(gè)落點(diǎn)的下落是根據(jù)幀的累計(jì)使用時(shí)間控制的,即判斷幀的累計(jì)使用時(shí)間是否達(dá)到數(shù)據(jù)中記錄的下落時(shí)間,若是,則會(huì)在當(dāng)前幀的應(yīng)用軟件界面下落落點(diǎn)。然而,幀的累計(jì)使用時(shí)間是對(duì)當(dāng)前幀之前的每一幀進(jìn)行累計(jì)計(jì)算得到的,每一幀所存在的微小誤差將導(dǎo)致累計(jì)計(jì)算得到的累計(jì)使用時(shí)間和落點(diǎn)的下落存在較大的誤差,進(jìn)而使得落點(diǎn)將延遲數(shù)秒下落。
【發(fā)明內(nèi)容】
[0005]基于此,有必要針對(duì)音頻文件播放中落點(diǎn)延遲的問(wèn)題,提供一種能提高落點(diǎn)控制的準(zhǔn)確性的音頻文件的布點(diǎn)實(shí)現(xiàn)方法。
[0006]此外,還有必要提供一種能提高落點(diǎn)控制的準(zhǔn)確性的音頻文件的布點(diǎn)實(shí)現(xiàn)裝置。
[0007]一種音頻文件的布點(diǎn)實(shí)現(xiàn)方法,包括如下步驟:
[0008]按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間;
[0009]讀取所述音頻文件的播放時(shí)間;
[0010]根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
[0011]一種音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,包括:
[0012]時(shí)間提取模塊,用于按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間;
[0013]播放時(shí)間讀取模塊,用于讀取所述音頻文件的播放時(shí)間;
[0014]控制模塊,用于根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
[0015]上述音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置,分別獲取音頻文件中的事件觸發(fā)時(shí)間和播放時(shí)間,并根據(jù)事件觸發(fā)時(shí)間和播放時(shí)間來(lái)實(shí)現(xiàn)音頻文件所在界面中落點(diǎn)的控制,由于播放時(shí)間準(zhǔn)確地標(biāo)識(shí)了當(dāng)前音頻文件的播放位置,因此,根據(jù)播放時(shí)間和事件觸發(fā)時(shí)間落點(diǎn)的控制將避免了落點(diǎn)延遲的問(wèn)題,進(jìn)而提高落點(diǎn)控制的準(zhǔn)確性。【專(zhuān)利附圖】
【附圖說(shuō)明】
[0016]圖1為一個(gè)實(shí)施例中音頻文件的布點(diǎn)實(shí)現(xiàn)方法的流程圖;
[0017]圖2為一個(gè)實(shí)施例中從音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成音頻文件中事件的布點(diǎn)信息的方法流程圖;
[0018]圖3為一個(gè)實(shí)施例中音頻文件的布點(diǎn)實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0019]圖4為另一個(gè)實(shí)施例中音頻文件的布點(diǎn)實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0020]圖5為圖4中布點(diǎn)信息生成模塊的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0021]如圖1所示,在一個(gè)實(shí)施例中,一種音頻文件的布點(diǎn)實(shí)現(xiàn)方法,包括如下步驟:
[0022]步驟S110,按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
[0023]本實(shí)施例中,布點(diǎn)信息中記錄了音頻文件中每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間,每一事件是與音頻文件中的音符對(duì)應(yīng)的,事件觸發(fā)時(shí)間將標(biāo)識(shí)了某一音符的起始時(shí)間。
[0024]音頻文件播放時(shí),將在音頻文件所對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。具體的,布點(diǎn)信息中,按照時(shí)間的早晚順序?qū)γ恳皇录鶎?duì)應(yīng)的事件觸發(fā)時(shí)間進(jìn)行排序,進(jìn)而從排序的事件觸發(fā)時(shí)間中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。在優(yōu)選的實(shí)施例中,該預(yù)設(shè)數(shù)量是依據(jù)音頻文件中的音軌數(shù)量確定的。
[0025]在一個(gè)實(shí)施例中,上述步驟SllO的具體過(guò)程為:在當(dāng)前播放音頻文件的幀循環(huán)中逐幀按照時(shí)間的早晚順序從布點(diǎn)信息中提取當(dāng)前幀所對(duì)應(yīng)的預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
[0026]本實(shí)施例中,音頻文件的播放過(guò)程中,音頻文件所在界面也是逐幀循環(huán)播放的。在音頻文件的幀循環(huán)中從按照時(shí)間的早晚順序進(jìn)行排序所得到的事件觸發(fā)時(shí)間中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間,這些提取的事件觸發(fā)時(shí)間將是與當(dāng)前幀相對(duì)應(yīng)的。
[0027]在音頻文件的幀循環(huán)中,音頻文件所在界面逐幀進(jìn)行變換,每一幀的界面均配合了相應(yīng)的音符,并且由于音符是由若干個(gè)音軌分別對(duì)應(yīng)的事件形成的,因此,每一幀的界面是與若干個(gè)音軌分別對(duì)應(yīng)的事件相對(duì)應(yīng)的,進(jìn)而事件觸發(fā)時(shí)間也應(yīng)當(dāng)是與某一幀的界面相對(duì)應(yīng)即可實(shí)現(xiàn)音頻文件中的節(jié)奏與音頻文件所在界面的變換相符。
[0028]步驟S130,讀取音頻文件的播放時(shí)間。
[0029]本實(shí)施例中,播放時(shí)間為音頻文件的播放過(guò)程中所播放到的時(shí)間位置,用于表征音頻文件的已播放時(shí)長(zhǎng)。
[0030]步驟S150,根據(jù)播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
[0031]本實(shí)施例中,落點(diǎn)是根據(jù)事件觸發(fā)時(shí)間顯示于音頻文件所在界面的操作點(diǎn),用戶落點(diǎn)上觸發(fā)的操作事件將使得音頻文件所在界面發(fā)生一定的變換。例如,在游戲軟件中,根據(jù)事件觸發(fā)時(shí)間和游戲軟件所加載的音頻文件的播放時(shí)間將會(huì)在游戲界面中顯示若干個(gè)落點(diǎn),用戶通過(guò)點(diǎn)擊某一落點(diǎn)來(lái)觸發(fā)音頻文件中相應(yīng)音符的播放,進(jìn)而實(shí)現(xiàn)用戶彈奏的效果O
[0032]通過(guò)播放時(shí)間控制音頻文件所在界面中的落點(diǎn),由于播放時(shí)間是音頻文件的播放過(guò)程中當(dāng)前播放到的時(shí)間位置,是直接讀取到的,未經(jīng)過(guò)任何時(shí)間的計(jì)算,因此不存在誤差,而事件觸發(fā)時(shí)間是與音頻文件中的事件相對(duì)應(yīng)的,因此,播放時(shí)間和事件觸發(fā)時(shí)間這兩個(gè)參數(shù)都不存在誤差,保證了音頻文件所在界面中落點(diǎn)控制的準(zhǔn)確性。
[0033]在一個(gè)實(shí)施例中,上述步驟S150的具體過(guò)程為:
[0034]將事件觸發(fā)時(shí)間和播放時(shí)間進(jìn)行比對(duì),判斷事件觸發(fā)時(shí)間是否大于播放時(shí)間,若是,則在音頻文件所在界面中觸發(fā)落點(diǎn)的顯示控制,若否,則結(jié)束。
[0035]本實(shí)施例中,若判斷到事件觸發(fā)時(shí)間大于播放時(shí)間,則說(shuō)明在當(dāng)前幀中對(duì)相應(yīng)落點(diǎn)觸發(fā)顯示控制不會(huì)出現(xiàn)時(shí)間上的延遲,因此,可開(kāi)始在音頻文件所在界面中觸發(fā)該落點(diǎn)的顯示控制,例如,在游戲界面中,落點(diǎn)是以出現(xiàn)并下落的動(dòng)畫(huà)形式進(jìn)行顯示的,此時(shí),在當(dāng)前幀中判斷到事件觸發(fā)時(shí)間大于播放時(shí)間時(shí),將在游戲界面中出現(xiàn)該落點(diǎn),并播放下落的動(dòng)畫(huà)效果。
[0036]若判斷到事件觸發(fā)時(shí)間小于播放時(shí)間時(shí),說(shuō)明該事件觸發(fā)時(shí)間所對(duì)應(yīng)的事件以及落點(diǎn)已經(jīng)跳過(guò)或者錯(cuò)過(guò),將不進(jìn)行任何處理,不會(huì)運(yùn)行當(dāng)前幀所對(duì)應(yīng)的事件以及對(duì)相應(yīng)的落點(diǎn)進(jìn)行控制,以避免發(fā)出與音頻文件所在界面不匹配的音符,此時(shí),將進(jìn)入下一幀循環(huán)中,繼續(xù)讀取播放時(shí)間,并提取事件觸發(fā)時(shí)間,以實(shí)現(xiàn)下一幀循環(huán)中的落點(diǎn)控制。
[0037]在另一個(gè)實(shí)施例中,上述步驟SllO之前還包括:從音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成音頻文件中事件的布點(diǎn)信息。
[0038]本實(shí)施例中,音頻文件優(yōu)選為Mid (Musical Instrument Digital Interface,樂(lè)器數(shù)字接口)文件格式,音頻文件包括了標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),其中,標(biāo)頭數(shù)據(jù)中記錄了音頻文件的格式以及各種參數(shù),例如BPM (Beats Per Minute,節(jié)拍/分鐘)這一參數(shù)所對(duì)應(yīng)的數(shù)值,以用于表征節(jié)奏速度;音軌數(shù)據(jù)中記錄了用于實(shí)現(xiàn)音符播放的事件應(yīng)用的樂(lè)器種類(lèi)、音調(diào)、伴奏以及該事件的時(shí)間片信息等信息,通過(guò)將音軌數(shù)據(jù)輸入合成器接口即可實(shí)現(xiàn)某一音符的播放。
[0039]具體的,根據(jù)標(biāo)頭數(shù)據(jù)中記錄的參數(shù)以及音軌數(shù)據(jù)中每一事件的時(shí)間片信息進(jìn)行運(yùn)算得到音頻文件中每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間,進(jìn)而通過(guò)每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間生成布點(diǎn)信息。
[0040]進(jìn)一步的,音頻文件中事件的布點(diǎn)信息除了記錄了每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間之外,還記錄了該事件的時(shí)長(zhǎng)。該事件的時(shí)長(zhǎng)用于控制事件所對(duì)應(yīng)的音符播放時(shí)長(zhǎng)以及相應(yīng)落點(diǎn)在音頻文件所在界面的顯示時(shí)長(zhǎng)。從音軌數(shù)據(jù)中可以獲知事件終止時(shí)間,進(jìn)而根據(jù)事件觸發(fā)時(shí)間和事件終止時(shí)間即可得到該事件的時(shí)長(zhǎng)。
[0041]如圖2所示,在一個(gè)實(shí)施例中,上述從音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成音頻文件中事件的布點(diǎn)信息的具體過(guò)程為:
[0042]步驟S201,從音頻文件中讀取記錄的標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)。
[0043]步驟S203,獲取音軌數(shù)據(jù)中事件的時(shí)間片信息,根據(jù)標(biāo)頭數(shù)據(jù)和事件的時(shí)間片信息計(jì)算得到事件對(duì)應(yīng)的事件觸發(fā)時(shí)間。
[0044]本實(shí)施例中,時(shí)間片信息為音頻文件中最小時(shí)間單位(tick)的次數(shù),用于在某一時(shí)間點(diǎn)控制相應(yīng)事件的執(zhí)行,即經(jīng)歷了一定次數(shù)個(gè)最小時(shí)間單位之后開(kāi)始執(zhí)行相應(yīng)事件。
[0045]分別獲取音軌數(shù)據(jù)中事件的時(shí)間片信息和標(biāo)頭數(shù)據(jù)中記錄的參數(shù)進(jìn)行計(jì)算,通過(guò)標(biāo)頭數(shù)據(jù)中的BPM等參數(shù)計(jì)算得到該音頻文件的最小時(shí)間單位,進(jìn)而根據(jù)最小時(shí)間單位和時(shí)間片信息計(jì)算得到事件的觸發(fā)時(shí)間。
[0046]步驟S205,通過(guò)事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息。[0047]本實(shí)施例中,音頻文件中每一事件的事件觸發(fā)時(shí)間形成了布點(diǎn)信息,進(jìn)而通過(guò)布點(diǎn)信息在音頻文件的播放過(guò)程中對(duì)落點(diǎn)進(jìn)行控制。
[0048]在一個(gè)實(shí)施例中,上述通過(guò)事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息的具體過(guò)程為:根據(jù)事件對(duì)應(yīng)的音軌將事件觸發(fā)時(shí)間以二進(jìn)制的形式置于對(duì)應(yīng)的音軌布點(diǎn)集合中,該音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息。
[0049]本實(shí)施例中,以二進(jìn)制的形式對(duì)得到的事件觸發(fā)時(shí)間進(jìn)行存儲(chǔ),以最大限度地節(jié)省存儲(chǔ)空間,此時(shí),布點(diǎn)信息是以二進(jìn)制流的格式存在的。具體的,由于音頻文件中設(shè)置了若干個(gè)音軌,因此將二進(jìn)制形式的事件觸發(fā)時(shí)間放置于所在音軌對(duì)應(yīng)的音軌布點(diǎn)集合中,并由若干個(gè)音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息,實(shí)現(xiàn)了布點(diǎn)信息中的有序存儲(chǔ)和封裝。
[0050]下面結(jié)合一個(gè)具體的實(shí)施例來(lái)詳細(xì)闡述上述音頻文件的布點(diǎn)實(shí)現(xiàn)方法。該實(shí)施例中,音頻文件所在界面為音樂(lè)游戲界面,音頻文件為音樂(lè)游戲運(yùn)行過(guò)程中提供音樂(lè)。在用戶
運(yùn)行音樂(lè)游戲的過(guò)程中將按照時(shí)間的早晚順序從布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間,并讀取音頻文件的播放時(shí)間,進(jìn)而根據(jù)播放時(shí)間和事件觸發(fā)時(shí)間來(lái)控制音樂(lè)游戲顯示相應(yīng)的落點(diǎn),進(jìn)而根據(jù)用戶對(duì)落點(diǎn)的點(diǎn)擊發(fā)出相應(yīng)的首符。
[0051]如圖3所示,在一個(gè)實(shí)施例中,一種音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,包括時(shí)間提取模塊110、播放時(shí)間讀取模塊130以及控制模塊150。
[0052]時(shí)間提取模塊110,用于按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
[0053]本實(shí)施例中,布點(diǎn)信息中記錄了音頻文件中每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間,每一事件是與音頻文件中的音符對(duì)應(yīng)的,事件觸發(fā)時(shí)間將標(biāo)識(shí)了某一音符的起始時(shí)間。
[0054]音頻文件播放時(shí),時(shí)間提取模塊110將在音頻文件所對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。具體的,布點(diǎn)信息中,按照時(shí)間的早晚順序?qū)γ恳皇录鶎?duì)應(yīng)的事件觸發(fā)時(shí)間進(jìn)行排序,時(shí)間提取模塊110從排序的事件觸發(fā)時(shí)間中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。在優(yōu)選的實(shí)施例中,該預(yù)設(shè)數(shù)量是依據(jù)音頻文件中的音軌數(shù)量確定的。
[0055]在一個(gè)實(shí)施例中,上述時(shí)間提取模塊110還用于在當(dāng)前播放音頻文件的幀循環(huán)中逐幀按照時(shí)間的早晚順序從布點(diǎn)信息中提取當(dāng)前幀所對(duì)應(yīng)的預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
[0056]本實(shí)施例中,音頻文件的播放過(guò)程中,音頻文件所在界面也是逐幀循環(huán)播放的。時(shí)間提取模塊110在音頻文件的幀循環(huán)中從按照時(shí)間的早晚順序進(jìn)行排序所得到的事件觸發(fā)時(shí)間中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間,這些提取的事件觸發(fā)時(shí)間將是與當(dāng)前幀相對(duì)應(yīng)的。
[0057]在音頻文件的幀循環(huán)中,音頻文件所在界面逐幀進(jìn)行變換,每一幀的界面均配合了相應(yīng)的音符,并且由于音符是由若干個(gè)音軌分別對(duì)應(yīng)的事件形成的,因此,每一幀的界面是與若干個(gè)音軌分別對(duì)應(yīng)的事件相對(duì)應(yīng)的,進(jìn)而事件觸發(fā)時(shí)間也應(yīng)當(dāng)是與某一幀的界面相對(duì)應(yīng)即可實(shí)現(xiàn)音頻文件中的節(jié)奏與音頻文件所在界面的變換相符。
[0058]播放時(shí)間讀取模塊130,用于讀取音頻文件的播放時(shí)間。
[0059]本實(shí)施例中,播放時(shí)間為音頻文件的播放過(guò)程中所播放到的時(shí)間位置,用于表征音頻文件的已播放時(shí)長(zhǎng)。
[0060]控制模塊150,用于根據(jù)播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
[0061]本實(shí)施例中,落點(diǎn)是根據(jù)事件觸發(fā)時(shí)間顯示于音頻文件所在界面的操作點(diǎn),用戶落點(diǎn)上觸發(fā)的操作事件將使得音頻文件所在界面發(fā)生一定的變換。例如,在游戲軟件中,控制模塊150根據(jù)事件觸發(fā)時(shí)間和游戲軟件所加載的音頻文件的播放時(shí)間將會(huì)在游戲界面中顯示若干個(gè)落點(diǎn),用戶通過(guò)點(diǎn)擊某一落點(diǎn)來(lái)觸發(fā)音頻文件中相應(yīng)音符的播放,進(jìn)而實(shí)現(xiàn)用戶彈奏的效果。
[0062]控制模塊150通過(guò)播放時(shí)間控制音頻文件所在界面中的落點(diǎn),由于播放時(shí)間是音頻文件的播放過(guò)程中當(dāng)前播放到的時(shí)間位置,是直接讀取到的,未經(jīng)過(guò)任何時(shí)間的計(jì)算,因此不存在誤差,而事件觸發(fā)時(shí)間是與音頻文件中的事件相對(duì)應(yīng)的,因此,播放時(shí)間和事件觸發(fā)時(shí)間這兩個(gè)參數(shù)都不存在誤差,保證了音頻文件所在界面中落點(diǎn)控制的準(zhǔn)確性。
[0063]在一個(gè)實(shí)施例中,上述控制模塊150還用于將事件觸發(fā)時(shí)間和播放時(shí)間進(jìn)行比對(duì),判斷事件觸發(fā)時(shí)間是否大于播放時(shí)間,若是,則在音頻文件所在界面中觸發(fā)落點(diǎn)的顯示控制,若否,則停止執(zhí)行。
[0064]本實(shí)施例中,若控制模塊150判斷到事件觸發(fā)時(shí)間大于播放時(shí)間,則說(shuō)明在當(dāng)前幀中對(duì)相應(yīng)落點(diǎn)觸發(fā)顯示控制不會(huì)出現(xiàn)時(shí)間上的延遲,因此,可開(kāi)始在音頻文件所在界面中觸發(fā)該落點(diǎn)的顯示控制,例如,在游戲界面中,落點(diǎn)是以出現(xiàn)并下落的動(dòng)畫(huà)形式進(jìn)行顯示的,此時(shí),控制模塊150在當(dāng)前幀中判斷到事件觸發(fā)時(shí)間大于播放時(shí)間時(shí),將在游戲界面中出現(xiàn)該落點(diǎn),并播放下落的動(dòng)畫(huà)效果。
[0065]控制模塊150若判斷到事件觸發(fā)時(shí)間小于播放時(shí)間時(shí),說(shuō)明該事件觸發(fā)時(shí)間所對(duì)應(yīng)的事件以及落點(diǎn)已經(jīng)跳過(guò)或者錯(cuò)過(guò),將不進(jìn)行任何處理,不會(huì)運(yùn)行當(dāng)前幀所對(duì)應(yīng)的事件以及對(duì)相應(yīng)的落點(diǎn)進(jìn)行控制,以避免發(fā)出與音頻文件所在界面不匹配的音符,此時(shí),將進(jìn)入下一幀循環(huán)中,繼續(xù)讀取播放時(shí)間,并提取事件觸發(fā)時(shí)間,以實(shí)現(xiàn)下一幀循環(huán)中的落點(diǎn)控制。
[0066]如圖4所示,在另一個(gè)實(shí)施例中,上述音頻文件的布點(diǎn)實(shí)現(xiàn)裝置還包括布點(diǎn)信息生成模塊210。
[0067]布點(diǎn)信息生成模塊210,用于從音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成音頻文件中事件的布點(diǎn)信息。
[0068]本實(shí)施例中,音頻文件優(yōu)選為Mid文件格式,音頻文件包括了標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),其中,標(biāo)頭數(shù)據(jù)中記錄了音頻文件的格式以及各種參數(shù),例如BPM (Beats Per Minute,節(jié)拍/分鐘)這一參數(shù)所對(duì)應(yīng)的數(shù)值,以用于表征節(jié)奏速度;音軌數(shù)據(jù)中記錄了用于實(shí)現(xiàn)音符播放的事件應(yīng)用的樂(lè)器種類(lèi)、音調(diào)、伴奏以及該事件的時(shí)間片信息等信息,通過(guò)將音軌數(shù)據(jù)輸入合成器接口即可實(shí)現(xiàn)某一音符的播放。
[0069]具體的,布點(diǎn)信息生成模塊210根據(jù)標(biāo)頭數(shù)據(jù)中記錄的參數(shù)以及音軌數(shù)據(jù)中每一事件的時(shí)間片信息進(jìn)行運(yùn)算得到音頻文件中每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間,進(jìn)而通過(guò)每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間生成布點(diǎn)信息。
[0070]進(jìn)一步的,音頻文件中事件的布點(diǎn)信息除了記錄了每一事件所對(duì)應(yīng)的事件觸發(fā)時(shí)間之外,還記錄了該事件的時(shí)長(zhǎng)。該事件的時(shí)長(zhǎng)用于控制事件所對(duì)應(yīng)的音符播放時(shí)長(zhǎng)以及相應(yīng)落點(diǎn)在音頻文件所在界面的顯示時(shí)長(zhǎng)。從音軌數(shù)據(jù)中可以獲知事件終止時(shí)間,進(jìn)而根據(jù)事件觸發(fā)時(shí)間和事件終止時(shí)間即可得到該事件的時(shí)長(zhǎng)。[0071 ] 如圖5所示,在一個(gè)實(shí)施例中,上述布點(diǎn)信息生成模塊210包括數(shù)據(jù)讀取單元211、運(yùn)算單元213和信息生成單元215。
[0072]數(shù)據(jù)讀取單元211,用于從音頻文件中讀取記錄的標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)。
[0073]運(yùn)算單元213,用于獲取音軌中事件的時(shí)間片信息,根據(jù)標(biāo)頭數(shù)據(jù)和事件的時(shí)間片信息計(jì)算得到事件對(duì)應(yīng)的事件觸發(fā)時(shí)間。
[0074]本實(shí)施例中,時(shí)間片信息為音頻文件中最小時(shí)間單位(tick)的次數(shù),用于在某一時(shí)間點(diǎn)控制相應(yīng)事件的執(zhí)行,即經(jīng)歷了一定次數(shù)個(gè)最小時(shí)間單位之后開(kāi)始執(zhí)行相應(yīng)事件。
[0075]運(yùn)算單元213分別獲取音軌數(shù)據(jù)中事件的時(shí)間片信息和標(biāo)頭數(shù)據(jù)中記錄的參數(shù)進(jìn)行計(jì)算,通過(guò)標(biāo)頭數(shù)據(jù)中的BPM等參數(shù)計(jì)算得到該音頻文件的最小時(shí)間單位,進(jìn)而根據(jù)最小時(shí)間單位和時(shí)間片彳目息計(jì)算得到事件的觸發(fā)時(shí)間。
[0076]信息生成單元215,用于通過(guò)事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息。
[0077]本實(shí)施例中,信息生成單元215通過(guò)音頻文件中每一事件的事件觸發(fā)時(shí)間形成布點(diǎn)信息,進(jìn)而通過(guò)布點(diǎn)信息在音頻文件的播放過(guò)程中對(duì)落點(diǎn)進(jìn)行控制。
[0078]在一個(gè)實(shí)施例中,上述信息生成單元215還用于根據(jù)事件對(duì)應(yīng)的音軌將事件觸發(fā)時(shí)間以二進(jìn)制的形式置于對(duì)應(yīng)的音軌布點(diǎn)集合中,該音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息。
[0079]本實(shí)施例中,信息生成單元215以二進(jìn)制的形式對(duì)得到的事件觸發(fā)時(shí)間進(jìn)行存儲(chǔ),以最大限度地節(jié)省存儲(chǔ)空間,此時(shí),布點(diǎn)信息是以二進(jìn)制流的格式存在的。具體的,由于音頻文件中設(shè)置了若干個(gè)音軌,因此信息生成單元215將二進(jìn)制形式的事件觸發(fā)時(shí)間放置于所在音軌對(duì)應(yīng)的音軌布點(diǎn)集合中,并由若干個(gè)音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息,實(shí)現(xiàn)了布點(diǎn)信息中的有序存儲(chǔ)和封裝。
[0080]上述音頻文件的布點(diǎn)實(shí)現(xiàn)方法和裝置,分別獲取音頻文件中的事件觸發(fā)時(shí)間和播放時(shí)間,并根據(jù)事件觸發(fā)時(shí)間和播放時(shí)間來(lái)實(shí)現(xiàn)音頻文件所在界面中落點(diǎn)的控制,由于播放時(shí)間準(zhǔn)確地標(biāo)識(shí)了當(dāng)前音頻文件的播放位置,因此,根據(jù)播放時(shí)間和事件觸發(fā)時(shí)間落點(diǎn)的控制將避免了落點(diǎn)延遲的問(wèn)題,進(jìn)而提高落點(diǎn)控制的準(zhǔn)確性。
[0081]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。
[0082]以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專(zhuān)利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專(zhuān)利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1.一種音頻文件的布點(diǎn)實(shí)現(xiàn)方法,包括如下步驟: 按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間; 讀取所述音頻文件的播放時(shí)間; 根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
2.根據(jù)權(quán)利要求1所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間的步驟為: 在所述當(dāng)前播放音頻文件的幀循環(huán)中逐幀按照時(shí)間的早晚順序從所述布點(diǎn)信息中提取當(dāng)前幀所對(duì)應(yīng)的預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
3.根據(jù)權(quán)利要求1所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)的步驟為: 將所述事件觸發(fā)時(shí)間和播放時(shí)間進(jìn)行比對(duì),判斷所述事件觸發(fā)時(shí)間是否大于播放時(shí)間,若是,則在所述音頻文件所在界面中觸發(fā)所述落點(diǎn)的顯示控制。
4.根據(jù)權(quán)利要求1所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間的步驟之前還包括: 從所述音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)所述標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成所述音頻文件中事件的布點(diǎn)信息。
5.根據(jù)權(quán)利要求4所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述從所述音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)所述標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成所述音頻文件中事件的布點(diǎn)信息的步驟為: 從所述音頻文件中讀取記錄的標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù); 獲取音軌數(shù)據(jù)中事件的時(shí)間片信息,根據(jù)所述標(biāo)頭數(shù)據(jù)和事件的時(shí)間片信息計(jì)算得到所述事件對(duì)應(yīng)的事件觸發(fā)時(shí)間; 通過(guò)所述事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息。
6.根據(jù)權(quán)利要求5所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述通過(guò)所述事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息的具體過(guò)程為: 根據(jù)所述事件對(duì)應(yīng)的音軌將所述事件觸發(fā)時(shí)間以二進(jìn)制的形式置于對(duì)應(yīng)的音軌布點(diǎn)集合中,所述音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息。
7.一種音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,其特征在于,包括: 時(shí)間提取模塊,用于按照時(shí)間的早晚順序從當(dāng)前播放的音頻文件對(duì)應(yīng)的布點(diǎn)信息中提取預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間; 播放時(shí)間讀取模塊,用于讀取所述音頻文件的播放時(shí)間; 控制模塊,用于根據(jù)所述播放時(shí)間和事件觸發(fā)時(shí)間控制音頻文件所在界面中的落點(diǎn)。
8.根據(jù)權(quán)利要求7所述的音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,其特征在于,所述時(shí)間提取模塊還用于在所述當(dāng)前播放音頻文件的幀循環(huán)中逐幀按照時(shí)間的早晚順序從所述布點(diǎn)信息中提取當(dāng)前幀所對(duì)應(yīng)的預(yù)設(shè)數(shù)量的事件觸發(fā)時(shí)間。
9.根據(jù)權(quán)利7所述的音頻文件的布點(diǎn)實(shí)現(xiàn)方法,其特征在于,所述控制模塊還用于將所述事件觸發(fā)時(shí)間和播放時(shí)間進(jìn)行比對(duì),判斷所述事件觸發(fā)時(shí)間是否大于播放時(shí)間,若是,則在所述音頻文件所在界面中觸發(fā)落點(diǎn)的顯示控制。
10.根據(jù)權(quán)利要求7所述的音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,其特征在于,還包括: 布點(diǎn)信息生成模塊,用于從所述音頻文件中讀取標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù),并根據(jù)所述標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù)生成音頻文件中事件的布點(diǎn)信息。
11.根據(jù)權(quán)利要求10所述的音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,其特征在于,所述布點(diǎn)信息生成模塊包括: 數(shù)據(jù)讀取單元,用于從所述音頻文件中讀取記錄的標(biāo)頭數(shù)據(jù)和音軌數(shù)據(jù); 運(yùn)算單元,用于獲取音軌數(shù)據(jù)中事件的時(shí)間片信息,根據(jù)所述標(biāo)頭數(shù)據(jù)和事件的時(shí)間片信息計(jì)算得到所述事件對(duì)應(yīng)的事件觸發(fā)時(shí)間; 信息生成單元,用于通過(guò)所述事件觸發(fā)時(shí)間生成事件的布點(diǎn)信息。
12.根據(jù)權(quán)利要求11所述的音頻文件的布點(diǎn)實(shí)現(xiàn)裝置,其特征在于,所述信息生成單元還用于根據(jù)所述事件對(duì)應(yīng)的音軌將所述事件觸發(fā)時(shí)間以二進(jìn)制的形式置于對(duì)應(yīng)的音軌布點(diǎn)集合中,所述音軌布點(diǎn)集合形成音頻文件中事件的布點(diǎn)信息。
【文檔編號(hào)】G11B27/10GK103680562SQ201210321561
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2012年9月3日 優(yōu)先權(quán)日:2012年9月3日
【發(fā)明者】孫煥文, 溫雨凝 申請(qǐng)人:騰訊科技(深圳)有限公司