專利名稱:伴唱歌詞自動(dòng)顯示方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種伴唱歌詞自動(dòng)顯示方法,尤其涉及一種包括有自動(dòng)標(biāo)示男女對(duì)唱 歌詞提示字、合唱歌詞提示字、自動(dòng)排列成多行交互顯示、歌詞預(yù)備拍自動(dòng)顯示以及歌詞自 動(dòng)掃描跑字的自動(dòng)顯示方法。
背景技術(shù):
卡拉OK (KARAOKE)的歌曲伴唱,往往需要伴隨著歌詞的顯示,才能讓一般歌唱者 把歌唱好,而歌詞的顯示,則必須配合音樂曲調(diào)的節(jié)拍同步顯示,以使得歌唱者能夠隨著音 樂輕松順利的跟唱。由于目前卡拉OK的歌詞顯示結(jié)果通常是通過人工后制排版程序,將屏幕上所要 顯現(xiàn)的態(tài)樣事先制作完成,并與伴唱音樂的影像結(jié)合為一,從而導(dǎo)致文字處理排版工作繁 雜,相當(dāng)?shù)睾馁M(fèi)人力時(shí)間及制作成本,從而提高了卡拉OK產(chǎn)業(yè)經(jīng)營(yíng)成本。然而,就現(xiàn)階段而言,仍舊欠缺一個(gè)自動(dòng)而有效率的方法,以將歌詞文字自動(dòng)轉(zhuǎn)換 成卡拉OK專用的歌詞顯示模式。
發(fā)明內(nèi)容
本發(fā)明的主要目的,提供一種伴唱歌詞自動(dòng)顯示方法,以自動(dòng)而有效率的顯示伴 唱歌詞、降低卡拉OK產(chǎn)業(yè)經(jīng)營(yíng)成本;本發(fā)明解決問題的技術(shù)特點(diǎn),大致包括先依據(jù)所對(duì)應(yīng)的伴唱歌詞自動(dòng)擷取一連串標(biāo)有時(shí)間標(biāo)記的歌詞序列,并將男生歌 詞或女生歌詞分別儲(chǔ)存于不同歌詞字序列中,當(dāng)所述歌詞字序列為男女對(duì)唱或合唱歌詞, 則依據(jù)男女歌詞變換情形,通過軟件程序自動(dòng)加入男或女提示字如“M: ”或“F: ”;依據(jù)歌詞字序列的時(shí)間標(biāo)記,判斷男女歌詞序列中有無合唱部份,所述判斷包括 以時(shí)間遞增方式檢查男與女的歌詞字序列,判斷出該男、女歌詞行的字是否完全相同,且 男、女歌詞字的唱出時(shí)間相差是否在預(yù)定容許誤差范圍內(nèi),若是即判斷為合唱部份,并通過 軟件程序自動(dòng)加入合唱的提示字如“C: ”;將歌詞依照伴唱歌詞兩行依序交替的方式自動(dòng)排列,包括調(diào)整換行字符的唱出 時(shí)間,若換行字符唱出時(shí)間與下一個(gè)歌詞唱出時(shí)間相差超過一默認(rèn)值時(shí),則修改換行字符 的唱出時(shí)間=原唱出時(shí)間+默認(rèn)值,否則令換行字符的唱出時(shí)間=下一個(gè)歌詞的唱出時(shí) 間,依照換行字符的標(biāo)記將歌詞字序列轉(zhuǎn)成歌詞行序列,依照歌詞行的序列中的歌詞行顯 示時(shí)間,依序指定該行顯示于第一行或第二行;計(jì)算每行歌詞應(yīng)顯示時(shí)間,依照每行標(biāo)示時(shí)間將歌詞依默認(rèn)值提前顯示;依據(jù)伴唱歌詞的間奏時(shí)間及拍點(diǎn)時(shí)間,通過軟件程序自動(dòng)加入預(yù)備拍,所述通過 軟件程序自動(dòng)加入預(yù)備拍包括以時(shí)間遞增方式依序檢查歌詞字的唱出時(shí)間,若目前歌詞 字的唱出時(shí)間與上一個(gè)歌詞字的唱出時(shí)間相差超過一默認(rèn)值時(shí)間長(zhǎng)度時(shí),則在當(dāng)前的時(shí)間 位置自動(dòng)加入歌詞預(yù)備拍;以及
通過定時(shí)器(Timer)將上述方法所產(chǎn)生的歌詞依歌曲實(shí)際播放時(shí)間顯示呈現(xiàn),歌 詞將依顯示時(shí)間自動(dòng)跑字掃描變換顏色。相比于現(xiàn)有技術(shù),本發(fā)明具有如下有益效果
本發(fā)明所述方法將能夠方便而有效率地依照一連串標(biāo)有時(shí)間標(biāo)記的歌詞字序列, 自動(dòng)將歌詞以兩行依序交替的方式提早顯示出來,并自動(dòng)做出男、女或合唱字的標(biāo)示以及 預(yù)備拍標(biāo)示,最后再以跑字掃描方式,以不同顏色同步顯示歌唱的正確歌詞位置;本方法能 實(shí)時(shí)以程序處理繁雜的文字排版及時(shí)間較準(zhǔn)等工作,不僅節(jié)省了人工后制排版的人力及時(shí) 間,有效加快伴唱歌曲的制作效率,達(dá)到讓歌唱者能輕松跟唱的效果,既適用于獨(dú)唱,又適 用于男女對(duì)唱。從而也降低了卡拉OK產(chǎn)業(yè)經(jīng)營(yíng)成本。
圖1為本發(fā)明整體歌詞自動(dòng)顯示方法文字方塊圖;圖2為本發(fā)明的加入男女提示字方法文字方塊圖;圖3為本發(fā)明的加入女提示字方法文字方塊圖;圖4為本發(fā)明的加入男提示字方法文字方塊圖;圖5為本發(fā)明的加入合唱提示字方法文字方塊圖;圖6為本發(fā)明的歌詞交互排列方法文字方塊圖;圖7為本發(fā)明的標(biāo)示歌詞行序列方法文字方塊圖;圖8為本發(fā)明的設(shè)定歌詞行序列應(yīng)顯示行數(shù)方法的文字方塊圖;圖9為本發(fā)明的加入歌詞預(yù)備拍方法的文字方塊圖;圖10為本發(fā)明的設(shè)定預(yù)備拍顯示時(shí)間的文字方塊圖;圖11為本發(fā)明的歌詞跑字掃描方法的文字方塊圖一;圖12為本發(fā)明的歌詞跑字掃描方法的文字方塊圖二 ;圖13為本發(fā)明應(yīng)用例的歌詞未調(diào)整狀態(tài)圖;圖14為本發(fā)明應(yīng)用例的歌詞已加入男女提示字狀態(tài)圖;圖15為本發(fā)明應(yīng)用例的歌詞已加入合唱提示字狀態(tài)圖;圖16為本發(fā)明應(yīng)用例的歌詞掃描結(jié)果示意圖。
具體實(shí)施例方式圖1為本發(fā)明伴唱歌詞自動(dòng)顯示方法的較佳實(shí)施例,,下述各實(shí)施例僅供說明之 用,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā) 明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明保護(hù)的范圍。參照?qǐng)D1,首先就本發(fā)明所述伴唱歌詞自動(dòng)顯示方法的主軸部份概略加以說明,其 主要包括先依據(jù)所對(duì)應(yīng)的伴唱歌詞自動(dòng)擷取一連串標(biāo)有時(shí)間標(biāo)記的歌詞序列,并將男生歌 詞或女生歌詞分別儲(chǔ)存于不同歌詞字序列中,當(dāng)所述歌詞字序列為男女對(duì)唱或合唱歌詞, 則依據(jù)男女歌詞變換情形,通過軟件程序自動(dòng)加入男或女提示字如“M: ”或“F: ”;依據(jù)歌詞字序列的時(shí)間標(biāo)記,判斷男女歌詞序列中有無合唱部份,該判斷包括以時(shí)間遞增方式檢查男與女的歌詞字序列,判斷出該男、女歌詞行的字是否完全相同,且男、 女歌詞字的唱出時(shí)間相差是否在預(yù)定容許誤差范圍內(nèi),若是即判斷為合唱部份,并通過軟 件程序自動(dòng)加入合唱的提示字如“C ,,;將歌詞依照伴唱歌詞兩行依序交替的方式自動(dòng)排列,其系調(diào)整換行字符的唱出時(shí) 間,若換行字符唱出時(shí)間與下一個(gè)歌詞唱出時(shí)間相差超過一默認(rèn)值時(shí),則修改換行字符的 唱出時(shí)間為原唱出時(shí)間與該默認(rèn)值之和,否則令換行字符的唱出時(shí)間為下一個(gè)歌詞的唱出 時(shí)間,依照換行字符的標(biāo)記將歌詞字序列轉(zhuǎn)成歌詞行序列,依照歌詞行的序列中的歌詞行 顯示時(shí)間,依序指定該行顯示于第一行或第二行;計(jì)算每行歌詞應(yīng)顯示時(shí)間,依照每行標(biāo)示時(shí)間將歌詞依默認(rèn)值提前顯示;以微調(diào)男女歌詞標(biāo)示的時(shí)間,其作法大致是將所述“M: ”、“F: ”、“C: ”插入字的唱出時(shí)間為與該 行第一個(gè)字的唱出時(shí)間相同,從而使“M: ”、“F: ”、“C: ”字的標(biāo)示在進(jìn)行歌詞跑字掃瞄時(shí) 可當(dāng)作預(yù)備一拍的提醒作用;即所述“M: ”、“F: ”、“C: ”字的標(biāo)示還用于提醒用戶一拍 后將進(jìn)行歌詞跑字掃瞄;依據(jù)伴唱歌詞的間奏時(shí)間及拍點(diǎn)時(shí)間,通過軟件程序自動(dòng)加入預(yù)備拍,所述通過 軟件程序自動(dòng)加入預(yù)備拍包括以時(shí)間遞增方式依序檢查歌詞字的唱出時(shí)間,若目前歌詞 字的唱出時(shí)間與上一個(gè)歌詞字的唱出時(shí)間相差超過一默認(rèn)值時(shí)間長(zhǎng)度時(shí),則于此時(shí)間位置 自動(dòng)加入歌詞預(yù)備拍;以及依據(jù)上述方法所產(chǎn)生的歌詞序列,并進(jìn)一步通過定時(shí)器(Timer)將歌詞依歌曲實(shí) 際播放時(shí)間顯示呈現(xiàn),即通過定時(shí)器(Timer)將上述方法所產(chǎn)生的歌詞依歌曲實(shí)際播放時(shí) 間顯示呈現(xiàn),歌詞將依顯示時(shí)間自動(dòng)跑字掃描變換顏色的形式顯示于屏幕上。接著,就本發(fā)明的各方法及其步驟分項(xiàng)說明如下(一 )擷取歌詞序列并加入男女標(biāo)記(請(qǐng)參照?qǐng)D2、圖3、圖4)),原理如下1、從媒體或檔案中擷取每個(gè)歌詞字序列,并將男生歌詞或女生歌詞分別儲(chǔ)存于不 同歌詞字序列中,該序列包含每一個(gè)歌詞的字及其字所對(duì)應(yīng)的歌曲時(shí)間,假設(shè)該字與時(shí)間 已經(jīng)以某種格式記錄于媒體或檔案中,該時(shí)間標(biāo)示表示該歌詞唱出的時(shí)間,其中該歌詞字 序列還可以進(jìn)一步包括換行的符號(hào)。2、若該首歌是男女對(duì)唱或合唱,在擷取歌詞字的過程中,判斷是否有男生歌詞與 女生歌詞交互出現(xiàn)的情況,若有則在該歌詞字所在行的最前面插入“M: ”或“F: ”的提 示字,且設(shè)置該字的歌詞唱出時(shí)間為與該行第一個(gè)字的唱出時(shí)間相同,所述判斷是否插入 "M ”或“F: ”提示字的方法及步驟如下a、令男與女的歌詞初始狀態(tài)變量分別為L(zhǎng)abel_M = 1,Labe 1_F = 1,以及已標(biāo)示 變量分別為Marked_M = 0,Marked_F = 0,并將時(shí)間從0開始;b、以時(shí)間遞增方式檢查下一個(gè)男或女的歌詞字序列;C、若是遇到男的歌詞字則判斷若Label_M = 1,則令Label_M = 2 ;若Label_F = 0,則令Label_F = 1 ;若歌詞字是換行字符,則令Marked_M = 0 ;d、若是遇到女的歌詞則判斷若Label_F = 1,則令Label_F = 2 ;若Label_M = 0,則令Label_M = 1 ;若歌詞字是換行字符,則令Marked_F = 0 ;e、若MarkecLM = 0且Labe 1_M = 2,且目前男的歌詞字不為換行字符,則在目前 男的歌詞字前插入字“M: ”,并設(shè)定其唱出時(shí)間等于目前男的歌詞字的唱出時(shí)間,并設(shè)定Marked_M = 1,Labe 1_M = O ; f、若Marked_F = 0且Label_F = 2,且目前女的歌詞字不為換行字符,則在目前 女的歌詞字前插入字“F: ”,并設(shè)定其唱出時(shí)間等于目前女的歌詞字的唱出時(shí)間,并設(shè)定 Marked_F = 1,Label_F = 0 ;g、回到步驟b,直到所有歌詞檢查完畢。( 二)判斷男女歌詞序列中有無合唱部份并加入合唱提示字若播放的歌曲為男 女對(duì)唱或合唱歌曲,則以時(shí)間遞增方式重新檢查男與女的歌詞字序列,判斷哪些歌詞是屬 于合唱的部份,其原理是判斷出某男生及女生的歌詞行的字是否完全相同,且男女歌詞字 的唱出時(shí)間相差是否在預(yù)設(shè)可容許誤差范圍內(nèi)(如0. 05秒),如圖5所示,其判斷的方法及 步驟如下1、設(shè)定初始狀態(tài),令兩組男女的歌詞字序列索引指針分別為idxl = 0,idx2 = 0 ; 及設(shè)定一變量first_ChorUs = 1,判斷是否是合唱歌詞行,并假設(shè)男女歌詞字的唱出時(shí)間 的可容許的誤差范圍為0. 05秒;2、找到男女歌詞字序列為“M ”或“F ”,且時(shí)間相差小于0. 05秒,直到所有歌詞 檢查完畢為止,并令first_Chorus = 1,表示第一句合唱歌詞,判斷原理如下a、若第idxl的歌詞字不為“Μ ”或“F ”則令idxl = idxl+1,并回到步驟1 ;b、若第idx2的歌詞字不為“Μ ”或“F ”則令idx2 = idx2+l,并回到步驟2 ;C、若第idxl的歌詞字時(shí)間小于第idx2的歌詞字時(shí)間-0. 05秒,則令idxl = idxl+1,并回到步驟1 ;d、若第idx2的歌詞字時(shí)間小于第idxl的歌詞字時(shí)間-0. 05秒,則令idx2 = idx2+l,并回到步驟2。3、比較目前男女歌詞字是否為“M: ”或“F: ”,且時(shí)間相差小于0.05秒,否則回到 步驟2,判斷原則如下a、若第idxl的歌詞字時(shí)間與第idx2的歌詞字時(shí)間誤差不在0. 05秒的內(nèi),則回到 步驟2 ;b、若第idxl的歌詞字是男女標(biāo)示“Μ: ”或“F”且第idx2的歌詞字是“Μ: ”或 “F”,則跳到步驟4,否則就回到步驟2 ;4、比較目前男女歌詞字是否相同,且時(shí)間相差小于0.05秒,直到遇到換行字符, 否則回到步驟2 ;5、修改男女標(biāo)示,若first_Ch0rus = 1,則將該男與女歌詞字的所在的歌詞行的 最前面的提示字“M: ”與“F: ”都改成“C”,且令firSt_ChorUS = 0,否則將“M: ”與“F: ” 都改成空字符“ ”,并記錄該行所有的歌詞字為合唱;6、回到步驟3,直到所有歌詞檢查完畢為止。(三)將歌詞行序列依照兩行依序交替的方式排列歌詞行序列是由歌詞字序列根 據(jù)其中換行字符所得來,在實(shí)際的歌唱時(shí),通常歌詞行需要提前顯示出來,以提醒歌手下一 段要唱的歌詞,其原理及步驟如圖6、圖7、圖8所示,說明如下1、調(diào)整換行字符的唱出時(shí)間,若換行字符的唱出時(shí)間與下一個(gè)歌詞的唱出時(shí)間, 相差超過某一默認(rèn)值時(shí)(例如一秒、一拍時(shí)間或一小節(jié)時(shí)間),則修改換行字符的唱出時(shí)間 =原唱出時(shí)間+默認(rèn)值,否則令換行字符的唱出時(shí)間=下一個(gè)歌詞的唱出時(shí)間;
2、依照換行字符的標(biāo)記,將歌詞字序列轉(zhuǎn)成歌詞行序列,而且每一行的開始顯示 時(shí)間為此行第一個(gè)字的開始顯示時(shí)間,每一行的結(jié)束顯示時(shí)間為此行最后一個(gè)“換行字符” 的顯示時(shí)間,從而得到歌詞行的序列,包含每行歌詞的開始顯示時(shí)間及結(jié)束顯示時(shí)間;3、依照歌詞行的序列中的歌詞行顯示時(shí)間,依序指定該行顯示在第一行或第二 行,其方法及步驟如下a、令時(shí)間T = 0,設(shè)定男生歌詞行的行數(shù)idxl = 0,女生歌詞行的行數(shù)idx2 = 0, 及歌詞第一行的狀態(tài)Linel = 0,歌詞第二行的狀態(tài)Line2 = 0,其中0表示此歌詞行是空 的,反之1表示此歌詞行正在顯示中;b、令此時(shí)間T以一個(gè)小的時(shí)間間隔(如0. 1秒,T = T+0. Isec)慢慢增加;
C、若為男女合唱歌詞,則跳過合唱的女生歌詞行,并令其顯示的行數(shù)為0 ;d、若T大于或等于男生歌詞行序列的第idxl行的顯示時(shí)間,則判斷原則如下(1)若Linel = 0且Line2 = 0,則若idxl大于0且第idxl_l行的結(jié)束顯示時(shí) 間與第idxl行的顯示時(shí)間的差值若小于某一默認(rèn)值(如音樂的兩個(gè)小節(jié)時(shí)間),則令該歌 詞行的顯示的行數(shù)為前一次歌詞顯示行數(shù)的另一行,(若前一次歌詞顯示行數(shù)為第一行,則 設(shè)該行歌詞的顯示行數(shù)為第二行,反之則為第一行),否則設(shè)定該行歌詞的顯示的行數(shù)為第 一行;(2)若Linel = 0且Line2 = 1,即第一行無正在顯示的歌詞,且第二行有正在顯 示的歌詞時(shí),令該行歌詞的顯示行數(shù)為第一行;(3)若Linel = 1且Line2 = 0,即第二行無正在顯示的歌詞,且第一行有正在顯 示的歌詞時(shí),令該行歌詞的顯示行數(shù)為第二行。e、重復(fù)步驟d,將男生歌詞行序列換作女生歌詞行序列,idxl改成idx2 ;f、若T大于或等于男生歌詞行序列的第idxl行的結(jié)束顯示時(shí)間,則若該歌詞行顯 示在第一行時(shí),令Linel = 0 ;否則令Line2 = 0 ;并令idxl = idxl+1 ;g、若T大于或等于女生歌詞行序列的第idx2行的結(jié)束顯示時(shí)間,則若該歌詞行顯 示在第一行,則令Linel = 0 ;否則令Line2 = 0 ;并令idx2 = idx2+l ;h、重復(fù)步驟(b)到(h),直到T大于最后一個(gè)歌詞行的結(jié)束顯示時(shí)間為止。4、調(diào)整所有歌詞行的序列中標(biāo)示為第一行的顯示時(shí)間,若某歌詞行顯示之前并沒 有其它歌詞正在顯示,則可將該歌詞行開始顯示時(shí)間略微提早,以方便歌唱者唱歌前能夠 先看到歌詞,依照下述方法可調(diào)整所有歌詞行的序列中標(biāo)示為第一行的顯示時(shí)間,方法如 下a、依照時(shí)間順序,依次檢查歌詞行的序列中標(biāo)示為第一行的開始顯示時(shí)間與結(jié)束 顯示時(shí)間;b、若目前歌詞行的顯示時(shí)間與前一歌詞行結(jié)束顯示時(shí)間的差值大于、等于某一默 認(rèn)值時(shí)(如音樂的一個(gè)小節(jié)時(shí)間),則將目前歌詞行的顯示時(shí)間往前提早一個(gè)上述默認(rèn)值 的時(shí)間長(zhǎng)度,否則,令目前歌詞行的顯示時(shí)間等于前一歌詞行的結(jié)束顯示時(shí)間加上一小段 微調(diào)時(shí)間(如0. 1秒)。5、調(diào)整所有歌詞行的序列中標(biāo)示為第二行的顯示時(shí)間。同步驟4所述的方法,調(diào)整所有歌詞行的序列中標(biāo)示為第二行的顯示時(shí)間。(四)加入歌詞預(yù)備拍;
加入歌詞預(yù)備拍的目的,通過預(yù)備拍的顯示,讓歌手可以用倒數(shù)節(jié)拍的方式,抓到 開始唱歌的拍子,而能輕松準(zhǔn)確地唱出歌曲,在一首歌曲中,可能會(huì)有許多變奏的地方,節(jié) 拍長(zhǎng)度會(huì)跟著改變,故采取如下做法首先記錄每個(gè)時(shí)間點(diǎn)節(jié)奏的變化,然后在適當(dāng)?shù)拈g奏 時(shí)間點(diǎn)加入歌詞預(yù)備拍,該歌詞預(yù)備拍的時(shí)間長(zhǎng)度為一拍時(shí)間,若曲調(diào)太快,則可調(diào)整該預(yù) 備拍的時(shí)間長(zhǎng)度為二拍時(shí)間,其設(shè)定預(yù)備拍的原理如圖9、圖10所示,步驟說明如下1、將音樂歌譜掃描一遍,記錄所有音樂拍點(diǎn)時(shí)間改變的時(shí)間點(diǎn)以及預(yù)備拍的時(shí)間 長(zhǎng)度于一個(gè)預(yù)備拍序列中;2、以時(shí)間遞增方式,依序檢查歌詞字的唱出時(shí)間,若目前歌詞字的唱出時(shí)間與上一個(gè)歌詞字的唱出時(shí)間相差超過某一默認(rèn)值時(shí)間長(zhǎng)度,如音樂的兩個(gè)小節(jié)時(shí)間,則在該時(shí) 間位置,加入預(yù)備拍;3、取得目前時(shí)間拍點(diǎn)分辨率,并計(jì)算該時(shí)間點(diǎn)的預(yù)備拍時(shí)間;4、設(shè)定預(yù)備拍顯示時(shí)間,假設(shè)一個(gè)小節(jié)有四拍,預(yù)備拍長(zhǎng)度為一拍,則a、若該預(yù)備拍開始的時(shí)間小于兩個(gè)小節(jié)時(shí)間,則設(shè)置時(shí)間0為倒數(shù)四個(gè)預(yù)備拍位 置(即將該預(yù)備拍的開始時(shí)間提早為0秒)并設(shè)置該時(shí)間為倒數(shù)四個(gè)預(yù)備拍位置,否則將 該加入預(yù)備拍的時(shí)間往前兩個(gè)小節(jié)時(shí)間,并設(shè)置該時(shí)間為倒數(shù)四個(gè)預(yù)備拍位置;b、然后往后一個(gè)小節(jié)時(shí)間,設(shè)置該時(shí)間為倒數(shù)三個(gè)預(yù)備拍位置;C、再往后一個(gè)預(yù)備拍時(shí)間,設(shè)置該時(shí)間為倒數(shù)二個(gè)預(yù)備拍位置;d、再往后一個(gè)預(yù)備拍時(shí)間設(shè)置該時(shí)間為倒數(shù)一個(gè)預(yù)備拍位置;e、最后往后一個(gè)預(yù)備拍時(shí)間,設(shè)置該時(shí)間為倒數(shù)0個(gè)預(yù)備拍位置。5、重復(fù)步驟2-4,直到所有歌詞字的時(shí)間檢查完畢為止;顯示預(yù)備拍時(shí),在倒數(shù)四 個(gè)預(yù)備拍位置時(shí)間點(diǎn),顯示四個(gè)燈號(hào),這個(gè)時(shí)間點(diǎn)是開始唱歌的前兩小節(jié)時(shí)間;在倒數(shù)三個(gè) 預(yù)備拍位置時(shí)間點(diǎn),顯示三個(gè)燈號(hào),表示開始熄滅一個(gè)燈號(hào),這個(gè)時(shí)間點(diǎn)是開始唱歌的前一 小節(jié)時(shí)間;在倒數(shù)兩個(gè)預(yù)備拍位置時(shí)間點(diǎn)顯示兩個(gè)燈號(hào),表示熄滅兩個(gè)燈號(hào),這個(gè)時(shí)間點(diǎn)是 開始唱歌的前三拍時(shí)間;在倒數(shù)一個(gè)預(yù)備拍位置時(shí)間點(diǎn)顯示一個(gè)燈號(hào),表示熄滅了三個(gè)燈 號(hào),這個(gè)時(shí)間點(diǎn)是開始唱歌的前兩拍時(shí)間;在倒數(shù)0個(gè)預(yù)備拍位置時(shí)間點(diǎn),顯示0個(gè)燈號(hào),表 示熄滅了所有燈號(hào),這個(gè)時(shí)間點(diǎn)是開始唱歌的前一拍時(shí)間;當(dāng)最后一個(gè)燈號(hào)熄滅時(shí)的下一 拍,即開始唱歌。(五)微調(diào)男女歌詞標(biāo)示的時(shí)間;上述的方法中,將插入的“M: ”、“F: ”及“C: ”字的唱出時(shí)間為與該行第一個(gè)字 的唱出時(shí)間相同,實(shí)際作法上,可以將該唱出時(shí)間往前調(diào)整一拍時(shí)間,若該行的歌詞顯示時(shí) 間與該字的唱出時(shí)間相差超過一拍時(shí)間以上時(shí),讓該唱出時(shí)間往前調(diào)整一拍時(shí)間,否則讓 它等于該行的歌詞顯示時(shí)間,這樣作法的好處是,這些“M: ”、“F: ”及“C: ”字的提示字, 在做歌詞跑字掃瞄時(shí),可以當(dāng)作預(yù)備一拍的提醒作用。(六)歌詞的跑字掃描方法;利用上述方法得到的歌詞字序列、歌詞行的序列及預(yù)備拍顯示提示,加上一組定 時(shí)器(Timer),再依照下述方法,我們就可以實(shí)現(xiàn)專業(yè)的KARAOKE歌詞顯示,如圖11所示,其 原理說明如下1、將所有歌詞字序列標(biāo)上字的結(jié)束歌唱時(shí)間,該時(shí)間為下一個(gè)字的唱出時(shí)間,若 該字的唱出時(shí)間與結(jié)束歌唱時(shí)間相差超過某一默認(rèn)值時(shí)(例如一秒、一拍時(shí)間或一小節(jié)時(shí)間),則取結(jié)束歌唱時(shí)間=唱出時(shí)間+默認(rèn)值;2、預(yù)設(shè)兩組字符串變量,儲(chǔ)存目前畫面上的兩行正在掃描的歌詞;3、設(shè)一組定時(shí)器以及定時(shí)器中斷服務(wù)程序,每隔一小段時(shí)間(如0.05秒)執(zhí)行該 中斷服務(wù)程序一次;4、在定時(shí)器中斷服務(wù)程序中取得音樂播放時(shí)間Tp ;5、在定時(shí)器中斷服務(wù)程序中,依序檢查歌詞行的序列及歌詞字序列,若音樂播放 時(shí)間Tp大于目前的歌詞行的開始顯示時(shí)間,則顯示該行歌詞于畫面上的第n行,其中n = 1或2,記錄于目前的歌詞行中的行數(shù)變量。6、在中斷服務(wù)程序中,依序檢查歌詞字序列,若音樂播放時(shí)間Tp大于目前的歌詞 字的開始唱出時(shí)間Tb,則將該字符串接于第n行的預(yù)設(shè)字符串變量中,然后依照目前的歌 詞字的結(jié)束顯示時(shí)間Te及時(shí)間比例,計(jì)算該歌詞字符串應(yīng)顯示的長(zhǎng)度,然后將該字符串畫 于畫面上的第n行,其中n = 1或2,n為當(dāng)前的歌詞字中的行數(shù),上述計(jì)算該歌詞字符串應(yīng) 顯示長(zhǎng)度的算法如下該字顯示長(zhǎng)度=該字長(zhǎng)度* (Tp-Tb) / (Te-Tb);在顯示時(shí),每到該字的開始顯示時(shí)間時(shí),可以先顯示該字的一部份(如1/3),上式 調(diào)整如下該字顯示長(zhǎng)度=該字長(zhǎng)度* (1/3+ (Tp-Tb) / (Te-Tb)),其中Te > Tb ;進(jìn)一步地,為使本發(fā)明所揭伴唱歌詞自動(dòng)顯示方法應(yīng)用于實(shí)際歌曲歌詞上的狀態(tài) 能夠更清楚呈現(xiàn)以利理解,以下將本發(fā)明提供的方法應(yīng)用于一首歌的歌詞中的作用原理以 及對(duì)該首歌詞的狀態(tài)的改變過程說明如下首先請(qǐng)參照?qǐng)D13,該圖包含時(shí)間及男生部份的歌詞內(nèi)容(圖中上部所示)、女生部 份的歌詞內(nèi)容(圖中下部所示);其中,圖中0D系為16進(jìn)位數(shù)字,代表換行字符;依照前述 加入男女標(biāo)記的規(guī)則,插入“M: ”與“F: ”提示字的運(yùn)作步驟如下1、令男與女的歌詞初始狀態(tài)變量分別為L(zhǎng)abel_M = 1,Label_F = 1,及已標(biāo)示變 量分別為Marked_M = 0,arked_F = 0,并將時(shí)間從0開始;2、以時(shí)間遞增方式檢查第一個(gè)歌詞“34405 :Where”,因?yàn)槭悄猩柙~,此時(shí) Label_M = 1,故令 Label_M = 2 ;3、因?yàn)榇藭r(shí)Marked_M = 0且Labe 1_M = 2,且目前男的歌詞字不為換行字符“ 0D ”, 所以在目前男的歌詞字前插入歌詞“34405 :F ”,并設(shè)定Marked_M = 1,Label_M = 0 ;4、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞,“34846 :is” 一直到“38816 :me”,此時(shí)各 變量狀態(tài)皆為 Label_M = 0,Label_F = 1,Marked_M = 1,Marked_F = 0 ;5、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“38816 :0D”,該0D為男生換行字符,各變 量狀態(tài)變?yōu)?Label_M = 0,Label_F = 1,Marked_M = 0,Marked_F = 0,一直到 59988 :0D, 各變量狀態(tài)維持不變;6、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“62635 :Where”,因?yàn)槭桥柙~,此時(shí) Label_F = 1,故令 Label_F = 2,且 Label_M = 0,故令 Label_M = 1 ;7、因?yàn)榇藭r(shí)Marked_F = 0且Label_F = 2,且目前女的歌詞字不為換行字符“0D, 所以在目前女的歌詞字前插入歌詞“62635 :F ,并設(shè)定Marked_F = 1,Label_F = 0 ;
10
8、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞,“63076 :is” 一直到“67046 :me”,此時(shí)各 變量狀態(tài)皆為 Label_M = 1,Label_F = 0,Marked_M = 0,Marked_F = 1 ;9、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“67046 :0D,該0D為女生換行字符,各變 量狀態(tài)變?yōu)?Label_M = 1,Label_F = 0,Marked_M = 0,Marked_F = 0,一直到 82925 :0D, 各變數(shù)狀態(tài)維持不變;10、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“85131 :We”,因?yàn)槭悄猩柙~,此時(shí) Label_M = 1,故令 Label_M = 2,且 Label_F = 0,故令 Label_F = 1 ;11、因?yàn)榇藭r(shí)Marked_M = 0且Label_M = 2,且目前男的歌詞字不為換行字符 “0D”,所以在目前男的歌詞字前插入歌詞“85131 :M: ”,并設(shè)定Marked_M = 1,Label_M = 0 ;12、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞,“85351 :haVe” 一直到“91747 Jong", 此時(shí)各變量狀態(tài)皆為 Label_M = 0,Label_F = 1,Marked_M = 1,Marked_F = 0 ;13、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“91747 :0D”,該0D為男生換行字符,各 變量狀態(tài)變?yōu)?Label_M = 0, Label_F = 1,Marked_M = 0, Marked_F = 0 ;14、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“97040 :But”,該歌詞為男生歌詞,各變 量狀態(tài)維持不變;15繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“97043 :But”,該歌詞為女生歌詞,各變 量狀態(tài)變?yōu)?Label_M = 1,Label_F = 2,Marked_M = 0,Marked_F = 0 ;16、因?yàn)榇藭r(shí)Marked_F = 0且Label_F = 2,且目前女的歌詞字不為換行字符 “0D”,所以在目前女的歌詞字前插入歌詞“97043 :F ”,并設(shè)定Marked_F = 1,Label_F = 0 ;17、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“97922 just”,該歌詞為男生歌詞,各 變量狀態(tài)變?yōu)?Label_M = 2,Label_F = 1,Marked_M = 0,Marked_F = 1 ;18、因?yàn)榇藭r(shí)Marked_M = 0且Label_M = 2,且目前男的歌詞字不為換行字符 “0D”,所以在目前男的歌詞行前的第一個(gè)字前“97040 :But”插入歌詞“97040 :M ”,并設(shè)定 Marked_M = 1,Label_M = 0 ;19、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“97925 just”,該歌詞為女生歌詞,各 變量狀態(tài)變?yōu)?Label_M = 2,Label_F = 2,Marked_M = 1,Marked_F = 1 ;20、一直到“100128 :0D”,該0D為男生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M= 2, Label_F = 2,Marked_M = 0,Marked_F = 1 ;21、接著直到“100131 :0D”,該0D為女生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M = 2, Label_F = 2,Marked_M = 0,Marked_F = 0 ;22、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“102333 :Hope”,該歌詞為男生歌詞,因 為此時(shí)Marked_M = 0且Label_M = 2,且目前男的歌詞字不為換行字符“0D”,所以在目前 男的歌詞前插入歌詞“102333 :M ”,并設(shè)定Marked_M = 1,Label_M = 0 ;23、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“102336 :Hope”,該歌詞為女生歌詞,因 為L(zhǎng)abel_M = 0,所以設(shè)定Label_M = 1,再因?yàn)榇藭r(shí)Marked_F = 0且Label_F = 2,且目前歌 詞字不為換行字符“0D”,所以在目前女的歌詞前插入歌詞“102336 :F ”,并設(shè)定Marked_F =1,Label_F = 0 ;
24、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“ 102774 i ”,該歌詞為男生歌詞,各變 量狀態(tài)變?yōu)?Label_M = 2,Label_F = 1,Marked_M = 1,Marked_F = 1 ;25、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“102777 :i”,該歌詞為女生歌詞,各變 量狀態(tài)變?yōu)?Label_M = 2,Label_F = 2,Marked_M = 1,Marked_F = 1 ;26、一直到“103657 :0D”,該0D為男生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M = 2, Label_F = 2,Marked_M = 0,Marked_F = 1 ;27、接著直到“103660 :0D”,該0D為女生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M = 2, Label_F = 2,Marked_M = 0,Marked_F = 0 ;28、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“104539 :but”,該歌詞為男生歌詞,因 為該時(shí)Marked_M = 0且Label_M = 2,且目前男的歌詞字不為換行字符“0D”,所以在目前 男的歌詞前插入歌詞“104539 :M ”,并設(shè)定Marked_M = 1 ;Label_M = 0 ;29、繼續(xù)以時(shí)間遞增方式檢查下一個(gè)歌詞“104542 :but”,該歌詞為女生歌詞,因 為L(zhǎng)abel_M = 0,所以設(shè)定Label_M = 1,再因?yàn)榇藭r(shí)Marked_F = 0且Label_F = 2,且目前歌 詞字不為換行字符“0D”,所以在目前女的歌詞前插入歌詞“104542 :F: ”,并設(shè)定Marked_F =1,Label_F = 0 ;30、一直到“106303 :0D”,該0D為男生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M = 2, Label_F = 2,Marked_M = 0,Marked_F = 1 ;31、接著直到“106306 :0D”,該為女生換行字符,各變量狀態(tài)變?yōu)長(zhǎng)abel_M = 2, Label_F = 2,Marked_M = 0,Marked_F = 0 ;32、結(jié)束。由以上說明可得到修改過的男、女生歌詞請(qǐng)參照?qǐng)D14,圖中上部所示為 修改過的男生歌詞、圖中下部所示為修改過的女生歌詞。接著,以時(shí)間遞增方式判斷那些歌詞屬于合唱部份的運(yùn)作步驟如下1、從時(shí)間0開始;2、以時(shí)間遞增方式比較男與女的歌詞字是否相同,且時(shí)間相差小于0.05秒,符合 該條件的歌詞位置是男生歌詞的“97040 :But”與女生歌詞的“97043 :But”;3、以步驟(2)的條件,繼續(xù)比較男女的下一個(gè)歌詞,一直到換行字符“0D”,男生歌 詞的“101128 :0D”與女生歌詞的“101131 :0D”,發(fā)現(xiàn)皆符合條件;4、將該行男生歌詞的第一個(gè)字“101128 :M: ”與該行女生歌詞的第一個(gè)字 “101131 :F ” 皆改為 “C ”;5、繼續(xù)步驟(2)_(3)直到換行字符“0D”,男生歌詞的“103657 :0D”與女生歌詞的 “103660 :0D”,發(fā)現(xiàn)皆符合條件;6、將該行男生歌詞的第一個(gè)字“103657 :M ”與該行女生歌詞第一個(gè)字“ 103660 F ”均改為空字符“”;7、重復(fù)步驟5-6直到不符合判斷條件;8、重復(fù)步驟2-7直到歌詞結(jié)束。由以上說明可得到修改過的男、女生歌詞請(qǐng)參照 圖15,圖中上部所示為修改過的男生歌詞、圖中下部所示為修改過的女生歌詞。接著,將歌詞行序列依照兩行依序交替的方式排列的運(yùn)作方式如下1、調(diào)整換行字符的唱出時(shí)間,若換行字符的唱出時(shí)間與下一個(gè)歌詞的唱出時(shí)間相 差超過一秒,則修改換行字符的唱出時(shí)間=原唱出時(shí)間+—秒時(shí)間,否則換行字符的唱出時(shí)間=下一個(gè)歌詞的唱出時(shí)間,經(jīng)過調(diào)整后狀態(tài)如下
0154]男生部份0155]388160D -39816:0D0156]427860D -43786:0D0157]458730D -46873:0D0158]529310D --53931:0D0159]569010D -57901:0D0160]599880D -60988:0D0161]882180D -89218:0D0162]917470D -92747:0D0163]100128:0D-101128 :0D0164]103657:0D-104539 :0D0165]106303:0D-107303 :0D0166]女生部份0167]670460D —68046:0D0168]710160D —72016:0D0169]741030D —75103:0D0170]789550D —79955:0D0171]829250D —83925:0D0172]100131:0D—101131 :0D0173]103660:0D-104542 :0D0174]106306:0D-107306 :0D 2、產(chǎn)生男女歌詞行序列依前述方法,將所有男女歌詞字序列,串接起來,變成一 行一行,若遇到換行字符,則換下一行,并設(shè)定每行歌詞的開始顯示時(shí)間為該行第一個(gè)字的 唱出時(shí)間及結(jié)束顯示時(shí)間為該行最后一個(gè)“換行字符”的唱出時(shí)間,可得到
0176]男生歌詞行序列如下0177]開始時(shí)間 .結(jié)束時(shí)間歌詞行0178]43440539816 :M Where is hope believe me0179]4146243786 :Hope is nowhere0180]4455046873 :but in your mind0181]4852053931 Where is sadness believe me0182]5469557901 Sadness is nowhere0183]5866560988 :but in your mind0184]8513189218 :M :ffe have sadness and fear0185]9042492747 :all the way long0186]97040101128 :C :But just show me hope0187]102333104539 :Hope is nowhere0188]104539107303 :but in your mind0189]女生歌詞行序列如下
13
14102246873but in your mind
15116757901Sadness is nowhere
15910768046FWhere is fear believe Me
16925275103but in your mind
17807483925though I always know
18689692747all the way long
198805104539:Hope is nowhere
同前述(4)步驟調(diào)整男女歌詞行的序列中標(biāo)示為第二行的開始顯示時(shí)間,可得
23793443786Hope is nowhere
24499253931Where is sadness believe me
25513760988but in your mind
26616472016fear is nowhere
27410479955Show me hope
28160389218M:ffe have sadness and fear
293512101128:C :But just show me hope
2101228107303 :but in your mind
接著,加入歌詞預(yù)備拍的運(yùn)作方式如下
假設(shè)本首歌的拍點(diǎn)長(zhǎng)度是固定的,且每拍為789. 5ms,由前述加入歌詞預(yù)備拍的方
法,加入預(yù)備拍的時(shí)間點(diǎn)如下預(yù)備拍時(shí)間點(diǎn)預(yù)備拍數(shù)(顯示燈號(hào)數(shù))27346 4 (倒數(shù)四個(gè)預(yù)備拍)30875 3 (倒數(shù)三個(gè)預(yù)備拍)31758 2(倒數(shù)二個(gè)預(yù)備拍)32640 1 (倒數(shù)一個(gè)預(yù)備拍)33522 0 (倒數(shù)0個(gè)預(yù)備拍)然后在一拍后時(shí)間點(diǎn)34405ms開始唱出歌詞“Where”接著,微調(diào)男女歌詞標(biāo)示的時(shí)間的運(yùn)作方式如下依照前述的方法,調(diào)整“M ”、“F ”及“C ”歌詞字的唱出時(shí)間,該唱出時(shí)間的意 思不是要唱出該字,而是歌詞開始掃描的時(shí)間,可當(dāng)作預(yù)備一拍的用途,調(diào)整后如下34405 :M ― 33523 :M62635 :F ― 61753 :F85131 :M ― 84249 :M97040 :C ― 96158 :C
例,可得
接著,歌詞的跑字掃描運(yùn)作方式如下(請(qǐng)配合參看圖12)
1、將所有男女歌詞字序列標(biāo)上字的結(jié)束歌唱時(shí)間如前述方法,以歌詞的前-
唱出時(shí)間結(jié)束時(shí)間歌詞字 33523 34405 :M 34405 34846 Where
為 行
34846 35287 :is35287 :37934 :hope37934 38154 :be38154 38816 :lieve38816 39816 :me39816 :0D2、設(shè)字符串變量LyricsTrackl,LyricsTrack2是第一行與第二行儲(chǔ)存正在顯示 的歌詞字符串,及wl、w2分別為第一行與第二行的跑字掃瞄長(zhǎng)度,該長(zhǎng)度每次換歌詞時(shí)從0 開始累加,以產(chǎn)生跑字掃瞄的效果,最長(zhǎng)為該行的歌詞長(zhǎng)度。3、設(shè)定定時(shí)器中斷時(shí)間為每0. 05秒;4、在定時(shí)器中斷服務(wù)例程中(ISR ;Interrupt Service Routine)讀取音樂播放的 時(shí)間Tp ;5、在該ISR中,檢查Tp是否大于目前行索引指針?biāo)傅母柙~行時(shí)間,若是則畫出 該歌詞行于其所記錄的顯示行數(shù)(第一或第二行)上,并將行索引指針移到下一個(gè)歌詞行 及令wl = 0,w2 = 0 ;此時(shí)可以預(yù)先畫出整行的跑字字幕于暫存內(nèi)存中,并可以將字幕稍作 修飾,例如以不同的顏色加字的外框等,在實(shí)際的字幕掃描時(shí),只需貼出該內(nèi)存的部份長(zhǎng)度 wl或w2于顯示器中;6、在該ISR中,檢查Tp是否大于目前男生字索引指針?biāo)傅母柙~字的唱出時(shí)間, 并計(jì)算及畫出該歌詞跑字應(yīng)該掃描的長(zhǎng)度wl或《2,若是,且該字的歌詞顯示行數(shù)在第一 行,則(1)檢查Tp是否大于該歌詞字的結(jié)束時(shí)間,若是則串接該歌詞字于字符串變量 LyricsTrackl中,并以與歌詞行不同的顏色,將LyricsTrackl顯示于第一行,并將索引指 針移到下一個(gè)歌詞字,令wl = LyricsTrackl的字符串長(zhǎng)度;(2)否則依照時(shí)間比例畫出該字,假設(shè)該字的唱出時(shí)間為Tb,結(jié)束時(shí)間為Te,時(shí)間 單位是ms (毫秒),且該字的長(zhǎng)度是W,則計(jì)算這個(gè)字每次掃描所增加的長(zhǎng)度K = ff* (1/3+50/ (Te_Tb)), wl = wl+K ;其中50 (ms)是定時(shí)器的時(shí)間間隔,且Te > Tb,若Te = Tb,則令:wl = wl+1 ;限制K的值,也可以限制歌詞掃描的速度,如避免歌詞掃描太慢,當(dāng)K < W/20時(shí), 則令K = W/20,當(dāng)K < 1時(shí),則令K = 1 ;(3)與歌詞行不同的顏色,并區(qū)分男女,畫出該行歌詞長(zhǎng)度wl于第一行;若該字的 歌詞顯示行數(shù)在第二行,則重復(fù)上述步驟(1)_(3),并以LyriCSTraCk2取代LyricsTrackl 及w2取代wl ;7、每隔0.05秒,重復(fù)步驟4至步驟6的步驟,直到播放完畢為止執(zhí)行結(jié)果說明1、當(dāng)Tp > = 30877 (ms)時(shí)(即Tp大于或等于30877),顯示歌詞行于顯示器第一 行(如圖16(a)所示);2、當(dāng)Tp >= 33523 (ms)時(shí),開始掃描歌詞“M ”一開始掃描1/3字(如圖16(b) 所示);3、當(dāng)Tp>= 34405(ms)時(shí),已經(jīng)掃描完畢歌詞“M ”,并準(zhǔn)備開始掃描歌詞
16“Where”(如圖 16(c)所示);4、當(dāng)Tp >= 34846 (ms)時(shí),已經(jīng)掃描完畢歌詞“Where”(如圖16(d)所示),并開 始掃描歌詞“is”的一部份“is”字掃描的長(zhǎng)度為W*(1/3+(Tp-Tb))/(Te_Tb) = W*(1/3+(35066-34846))/(35287-34846);其中W = “is”字的長(zhǎng)度。本發(fā)明的優(yōu)點(diǎn)本發(fā)明所述方法將能夠方便而有效率地依照一連串標(biāo)有時(shí)間標(biāo)記的歌詞字序列, 自動(dòng)將歌詞以兩行依序交替的方式提早顯示出來,并自動(dòng)做出男、女或合唱字的標(biāo)示以及 預(yù)備拍標(biāo)示,最后再以跑字掃描方式,以不同顏色同步顯示歌唱的正確歌詞位置;本方法能 實(shí)時(shí)以軟件程序處理繁雜的文字排版及時(shí)間較準(zhǔn)等工作,不僅節(jié)省了人工后制排版的人力 及時(shí)間,更能有效加快伴唱歌曲的制作效率,達(dá)到讓歌唱者能輕松跟唱的效果,且對(duì)獨(dú)唱或 男女對(duì)唱歌詞都能適用。降低了卡拉0K產(chǎn)業(yè)經(jīng)營(yíng)成本。另一方面,本發(fā)明提供的方法所顯示歌詞的時(shí)間是依據(jù)實(shí)際歌曲的播放時(shí)間而獲 得,因此只需在送出聲音數(shù)據(jù)到音訊輸出裝置之前記錄目前該段的歌曲時(shí)間,避免因?yàn)橐?樂合成過程所造成的顯示延遲現(xiàn)象,而且該歌詞時(shí)間的獲得是事先即處理完成的,因此,本 發(fā)明無須透過延遲調(diào)整裝置的增設(shè)來調(diào)校音樂合成波形時(shí)所造成的延遲,從而使伴唱設(shè)備 構(gòu)成上能更為簡(jiǎn)化。從而也降低了卡拉0K產(chǎn)業(yè)經(jīng)營(yíng)成本。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁 盤、光盤、只讀存儲(chǔ)記憶體或隨機(jī)存儲(chǔ)記憶體等。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
一種伴唱歌詞自動(dòng)顯示方法,其特征在于,包括先依據(jù)所對(duì)應(yīng)的伴唱歌詞自動(dòng)擷取一連串標(biāo)有時(shí)間標(biāo)記的歌詞序列,并將男生歌詞或女生歌詞分別儲(chǔ)存于不同歌詞字序列中,當(dāng)所述歌詞字序列為男女對(duì)唱或合唱歌詞,則依據(jù)男女歌詞變換情形,通過軟件程序自動(dòng)加入男或女提示字如“M”或“F”;依據(jù)歌詞字序列的時(shí)間標(biāo)記,判斷男女歌詞序列中有無合唱部份,所述判斷包括以時(shí)間遞增方式檢查男與女的歌詞字序列,判斷出該男、女歌詞行的字是否完全相同,且男、女歌詞字的唱出時(shí)間相差是否在預(yù)定容許誤差范圍內(nèi),若是即判斷為合唱部份,并通過軟件程序自動(dòng)加入合唱的提示字如“C”;將歌詞依照伴唱歌詞兩行依序交替的方式自動(dòng)排列,包括調(diào)整換行字符的唱出時(shí)間,若換行字符唱出時(shí)間與下一個(gè)歌詞唱出時(shí)間相差超過一默認(rèn)值時(shí),則修改換行字符的唱出時(shí)間為原唱出時(shí)間與該默認(rèn)值的和,否則令換行字符的唱出時(shí)間為下一個(gè)歌詞的唱出時(shí)間,依照換行字符的標(biāo)記將歌詞字序列轉(zhuǎn)成歌詞行序列,依照歌詞行的序列中的歌詞行顯示時(shí)間,依序指定該行顯示于第一行或第二行;計(jì)算每行歌詞應(yīng)顯示時(shí)間,依照每行標(biāo)示時(shí)間將歌詞依默認(rèn)值提前顯示;依據(jù)伴唱歌詞的間奏時(shí)間及拍點(diǎn)時(shí)間,通過軟件程序自動(dòng)加入預(yù)備拍,所述通過軟件程序自動(dòng)加入預(yù)備拍包括以時(shí)間遞增方式依序檢查歌詞字的唱出時(shí)間,若目前歌詞字的唱出時(shí)間與上一個(gè)歌詞字的唱出時(shí)間相差超過一默認(rèn)值時(shí)間長(zhǎng)度時(shí),則于此時(shí)間位置自動(dòng)加入歌詞預(yù)備拍;以及通過定時(shí)器(Timer)將上述方法所產(chǎn)生的歌詞依歌曲實(shí)際播放時(shí)間顯示呈現(xiàn),歌詞將依顯示時(shí)間自動(dòng)跑字掃描變換顏色。
2.根據(jù)權(quán)利要求1所述的伴唱歌詞自動(dòng)顯示方法,其特征在于,所述擷取一連串標(biāo)有 時(shí)間標(biāo)記的歌詞序列包括從媒體或檔案中擷取所述歌詞序列,且所述儲(chǔ)存于不同歌詞字序列中的男生歌詞或女 生歌詞的序列包含每一個(gè)歌詞的字及該字所對(duì)應(yīng)的歌曲時(shí)間,該時(shí)間標(biāo)示表示該歌詞唱出 的時(shí)間,該字與時(shí)間以預(yù)定格式記錄于所述媒體或檔案中,所述歌詞字序列中還包括換行 的符號(hào)。
3.根據(jù)權(quán)利要求1所述的伴唱歌詞自動(dòng)顯示方法,其特征在于,還包括微調(diào)男女歌詞標(biāo)示的時(shí)間;所述微調(diào)男女歌詞標(biāo)示的時(shí)間包括將所述“M: ”、“F: ”、“C: ”插入字的唱出時(shí)間為與該行第一個(gè)字的唱出時(shí)間相同,所 述“M: ”、“F: ”、“C: ”字的標(biāo)示還用于提醒用戶一拍后將進(jìn)行歌詞跑字掃瞄。
4.根據(jù)權(quán)利要求1所述的伴唱歌詞自動(dòng)顯示方法,其特征在于,所述促使歌詞依顯示 時(shí)間自動(dòng)跑字掃描的方法進(jìn)一步包括a、將所有歌詞字序列標(biāo)上字的結(jié)束歌唱時(shí)間,此時(shí)間為下一個(gè)字的唱出時(shí)間,若該字 唱出時(shí)間與結(jié)束歌唱時(shí)間相差超過一默認(rèn)值時(shí),則取結(jié)束歌唱時(shí)間為唱出時(shí)間與該默認(rèn)值 之和;b、預(yù)設(shè)兩組字符串變量,儲(chǔ)存目前畫面上的兩行正在掃描的歌詞;c、設(shè)一中斷服務(wù)程序,每隔一小段時(shí)間執(zhí)行此程序一次;d、從所述中斷服務(wù)程序中取得歌曲播放時(shí)間Tp;e、從所述中斷服務(wù)程序中依序檢查歌詞行的序列及歌詞字序列,若歌曲播放時(shí)間Tp 大于目前的歌詞行的開始顯示時(shí)間,則在畫面上的第n行顯示該行歌詞,其中n = 1或2,所 述n為當(dāng)前歌詞字中的行數(shù);f、從所述中斷服務(wù)程序中依序檢查歌詞字序列,若歌曲播放時(shí)間Tp大于目前的歌詞 字的開始顯示時(shí)間Tb,則將該字符串接于第n行的預(yù)設(shè)字符串變量中,然后依照當(dāng)前的歌 詞字的結(jié)束顯示時(shí)間Te及時(shí)間比例,計(jì)算該歌詞字符串應(yīng)顯示長(zhǎng)度,然后將此字符串畫于 畫面上的第n行,其中n = 1或2,所述n為當(dāng)前歌詞字中的行數(shù)。
全文摘要
本發(fā)明實(shí)施例提供一種伴唱歌詞自動(dòng)顯示方法,包括依據(jù)伴唱歌詞自動(dòng)擷取一連串標(biāo)有時(shí)間標(biāo)記的歌詞序列,并將男女生歌詞分別儲(chǔ)存于不同歌詞字序列中,當(dāng)歌詞字序列為男女對(duì)唱或合唱歌詞,則通過軟件程序自動(dòng)加入男或女或合唱提示字;將歌詞依照伴唱歌詞兩行依序交替的方式自動(dòng)排列;計(jì)算每行歌詞應(yīng)顯示時(shí)間,依照每行標(biāo)示時(shí)間將歌詞依默認(rèn)值提前顯示;依據(jù)伴唱歌詞的間奏時(shí)間及拍點(diǎn)時(shí)間自動(dòng)加入預(yù)備拍;依據(jù)上述所產(chǎn)生的歌詞序列并通過定時(shí)器將歌詞依歌曲實(shí)際播放時(shí)間顯示呈現(xiàn),歌詞將依顯示時(shí)間自動(dòng)跑字掃描變換顏色。
文檔編號(hào)G10H1/36GK101859561SQ200910132680
公開日2010年10月13日 申請(qǐng)日期2009年4月7日 優(yōu)先權(quán)日2009年4月7日
發(fā)明者林文信 申請(qǐng)人:林文信