CN101859561B - 伴唱歌词自动显示方法 - Google Patents
伴唱歌词自动显示方法 Download PDFInfo
- Publication number
- CN101859561B CN101859561B CN 200910132680 CN200910132680A CN101859561B CN 101859561 B CN101859561 B CN 101859561B CN 200910132680 CN200910132680 CN 200910132680 CN 200910132680 A CN200910132680 A CN 200910132680A CN 101859561 B CN101859561 B CN 101859561B
- Authority
- CN
- China
- Prior art keywords
- lyrics
- time
- word
- sequence
- singing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Reverberation, Karaoke And Other Acoustics (AREA)
Abstract
本发明实施例提供一种伴唱歌词自动显示方法,包括:依据伴唱歌词自动撷取一连串标有时间标记的歌词序列,并将男女生歌词分别储存于不同歌词字序列中,当歌词字序列为男女对唱或合唱歌词,则通过软件程序自动加入男或女或合唱提示字;将歌词依照伴唱歌词两行依序交替的方式自动排列;计算每行歌词应显示时间,依照每行标示时间将歌词依默认值提前显示;依据伴唱歌词的间奏时间及拍点时间自动加入预备拍;依据上述所产生的歌词序列并通过定时器将歌词依歌曲实际播放时间显示呈现,歌词将依显示时间自动跑字扫描变换颜色。
Description
技术领域
本发明涉及一种伴唱歌词自动显示方法,尤其涉及一种包括有自动标示男女对唱歌词提示字、合唱歌词提示字、自动排列成多行交互显示、歌词预备拍自动显示以及歌词自动扫描跑字的自动显示方法。
背景技术
卡拉OK(KARAOKE)的歌曲伴唱,往往需要伴随着歌词的显示,才能让一般歌唱者把歌唱好,而歌词的显示,则必须配合音乐曲调的节拍同步显示,以使得歌唱者能够随着音乐轻松顺利的跟唱。
由于目前卡拉OK的歌词显示结果通常是通过人工后制排版程序,将屏幕上所要显现的态样事先制作完成,并与伴唱音乐的影像结合为一,从而导致文字处理排版工作繁杂,相当地耗费人力时间及制作成本,从而提高了卡拉OK产业经营成本。
然而,就现阶段而言,仍旧欠缺一个自动而有效率的方法,以将歌词文字自动转换成卡拉OK专用的歌词显示模式。
发明内容
本发明的主要目的,提供一种伴唱歌词自动显示方法,以自动而有效率的显示伴唱歌词、降低卡拉OK产业经营成本;
本发明解决问题的技术特点,大致包括:
先依据所对应的伴唱歌词自动撷取一连串标有时间标记的歌词序列,并将男生歌词或女生歌词分别储存于不同歌词字序列中,当所述歌词字序列为男女对唱或合唱歌词,则依据男女歌词变换情形,通过软件程序自动加入男或女提示字如:“M:”或“F:”;
依据歌词字序列的时间标记,判断男女歌词序列中有无合唱部份,所述判断包括以时间递增方式检查男与女的歌词字序列,判断出该男、女歌词行的字是否完全相同,且男、女歌词字的唱出时间相差是否在预定容许误差范围内,若是即判断为合唱部份,并通过软件程序自动加入合唱的提示字如:“C:”;
将歌词依照伴唱歌词两行依序交替的方式自动排列,包括:调整换行字符的唱出时间,若换行字符唱出时间与下一个歌词唱出时间相差超过一默认值时,则修改换行字符的唱出时间=原唱出时间+默认值,否则令换行字符的唱出时间=下一个歌词的唱出时间,依照换行字符的标记将歌词字序列转成歌词行序列,依照歌词行的序列中的歌词行显示时间,依序指定该行显示于第一行或第二行;
计算每行歌词应显示时间,依照每行标示时间将歌词依默认值提前显示;
依据伴唱歌词的间奏时间及拍点时间,通过软件程序自动加入预备拍,所述通过软件程序自动加入预备拍包括:以时间递增方式依序检查歌词字的唱出时间,若目前歌词字的唱出时间与上一个歌词字的唱出时间相差超过一默认值时间长度时,则在当前的时间位置自动加入歌词预备拍;以及
通过定时器(Timer)将上述方法所产生的歌词依歌曲实际播放时间显示呈现,歌词将依显示时间自动跑字扫描变换颜色。
相比于现有技术,本发明具有如下有益效果:
本发明所述方法将能够方便而有效率地依照一连串标有时间标记的歌词字序列,自动将歌词以两行依序交替的方式提早显示出来,并自动做出男、女或合唱字的标示以及预备拍标示,最后再以跑字扫描方式,以不同颜色同步显示歌唱的正确歌词位置;本方法能实时以程序处理繁杂的文字排版及时间较准等工作,不仅节省了人工后制排版的人力及时间,有效加快伴唱歌曲的制作效率,达到让歌唱者能轻松跟唱的效果,既适用于独唱,又适用于男女对唱。从而也降低了卡拉OK产业经营成本。
附图说明
图1为本发明整体歌词自动显示方法文字方块图;
图2为本发明的加入男女提示字方法文字方块图;
图3为本发明的加入女提示字方法文字方块图;
图4为本发明的加入男提示字方法文字方块图;
图5为本发明的加入合唱提示字方法文字方块图;
图6为本发明的歌词交互排列方法文字方块图;
图7为本发明的标示歌词行序列方法文字方块图;
图8为本发明的设定歌词行序列应显示行数方法的文字方块图;
图9为本发明的加入歌词预备拍方法的文字方块图;
图10为本发明的设定预备拍显示时间的文字方块图;
图11为本发明的歌词跑字扫描方法的文字方块图一;
图12为本发明的歌词跑字扫描方法的文字方块图二;
图13为本发明应用例的歌词未调整状态图;
图14为本发明应用例的歌词已加入男女提示字状态图;
图15为本发明应用例的歌词已加入合唱提示字状态图;
图16为本发明应用例的歌词扫描结果示意图。
具体实施方式
图1为本发明伴唱歌词自动显示方法的较佳实施例,,下述各实施例仅供说明之用,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,首先就本发明所述伴唱歌词自动显示方法的主轴部份概略加以说明,其主要包括:
先依据所对应的伴唱歌词自动撷取一连串标有时间标记的歌词序列,并将男生歌词或女生歌词分别储存于不同歌词字序列中,当所述歌词字序列为男女对唱或合唱歌词,则依据男女歌词变换情形,通过软件程序自动加入男或女提示字如:“M:”或“F:”;
依据歌词字序列的时间标记,判断男女歌词序列中有无合唱部份,该判断包括以时间递增方式检查男与女的歌词字序列,判断出该男、女歌词行的字是否完全相同,且男、女歌词字的唱出时间相差是否在预定容许误差范围内,若是即判断为合唱部份,并通过软件程序自动加入合唱的提示字如:“C:”;
将歌词依照伴唱歌词两行依序交替的方式自动排列,其系调整换行字符的唱出时间,若换行字符唱出时间与下一个歌词唱出时间相差超过一默认值时,则修改换行字符的唱出时间为原唱出时间与该默认值之和,否则令换行字符的唱出时间为下一个歌词的唱出时间,依照换行字符的标记将歌词字序列转成歌词行序列,依照歌词行的序列中的歌词行显示时间,依序指定该行显示于第一行或第二行;
计算每行歌词应显示时间,依照每行标示时间将歌词依默认值提前显示;以微调男女歌词标示的时间,其作法大致是将所述“M:”、“F:”、“C:”***字的唱出时间为与该行第一个字的唱出时间相同,从而使“M:”、“F:”、“C:”字的标示在进行歌词跑字扫瞄时可当作预备一拍的提醒作用;即所述“M:”、“F:”、“C:”字的标示还用于提醒用户:一拍后将进行歌词跑字扫瞄;
依据伴唱歌词的间奏时间及拍点时间,通过软件程序自动加入预备拍,所述通过软件程序自动加入预备拍包括:以时间递增方式依序检查歌词字的唱出时间,若目前歌词字的唱出时间与上一个歌词字的唱出时间相差超过一默认值时间长度时,则于此时间位置自动加入歌词预备拍;以及
依据上述方法所产生的歌词序列,并进一步通过定时器(Timer)将歌词依歌曲实际播放时间显示呈现,即通过定时器(Timer)将上述方法所产生的歌词依歌曲实际播放时间显示呈现,歌词将依显示时间自动跑字扫描变换颜色的形式显示于屏幕上。
接着,就本发明的各方法及其步骤分项说明如下:
(一)撷取歌词序列并加入男女标记(请参照图2、图3、图4)),原理如下:
1、从媒体或档案中撷取每个歌词字序列,并将男生歌词或女生歌词分别储存于不同歌词字序列中,该序列包含每一个歌词的字及其字所对应的歌曲时间,假设该字与时间已经以某种格式记录于媒体或档案中,该时间标示表示该歌词唱出的时间,其中该歌词字序列还可以进一步包括换行的符号。
2、若该首歌是男女对唱或合唱,在撷取歌词字的过程中,判断是否有男生歌词与女生歌词交互出现的情况,若有则在该歌词字所在行的最前面***“M:”或“F:”的提示字,且设置该字的歌词唱出时间为与该行第一个字的唱出时间相同,所述判断是否***“M:”或“F:”提示字的方法及步骤如下:
a、令男与女的歌词初始状态变量分别为Label_M=1,Label_F=1,以及已标示变量分别为Marked_M=0,Marked_F=0,并将时间从0开始;
b、以时间递增方式检查下一个男或女的歌词字序列;
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、若Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符,则在目前男的歌词字前***字“M:”,并设定其唱出时间等于目前男的歌词字的唱出时间,并设定Marked_M=1,Label_M=0;
f、若Marked_F=0且Label_F=2,且目前女的歌词字不为换行字符,则在目前女的歌词字前***字“F:”,并设定其唱出时间等于目前女的歌词字的唱出时间,并设定Marked_F=1,Label_F=0;
g、回到步骤b,直到所有歌词检查完毕。
(二)判断男女歌词序列中有无合唱部份并加入合唱提示字:若播放的歌曲为男女对唱或合唱歌曲,则以时间递增方式重新检查男与女的歌词字序列,判断哪些歌词是属于合唱的部份,其原理是判断出某男生及女生的歌词行的字是否完全相同,且男女歌词字的唱出时间相差是否在预设可容许误差范围内(如0.05秒),如图5所示,其判断的方法及步骤如下:
1、设定初始状态,令两组男女的歌词字序列索引指针分别为idx1=0,idx2=0;及设定一变量first_Chorus=1,判断是否是合唱歌词行,并假设男女歌词字的唱出时间的可容许的误差范围为0.05秒;
2、找到男女歌词字序列为“M:”或“F:”,且时间相差小于0.05秒,直到所有歌词检查完毕为止,并令first_Chorus=1,表示第一句合唱歌词,判断原理如下:
a、若第idx1的歌词字不为“M:”或“F:”则令idx1=idx1+1,并回到步骤1;
b、若第idx2的歌词字不为“M:”或“F:”则令idx2=idx2+1,并回到步骤2;
c、若第idx1的歌词字时间小于第idx2的歌词字时间-0.05秒,则令idx1=idx1+1,并回到步骤1;
d、若第idx2的歌词字时间小于第idx1的歌词字时间-0.05秒,则令idx2=idx2+1,并回到步骤2。
3、比较目前男女歌词字是否为“M:”或“F:”,且时间相差小于0.05秒,否则回到步骤2,判断原则如下:
a、若第idx1的歌词字时间与第idx2的歌词字时间误差不在0.05秒的内,则回到步骤2;
b、若第idx1的歌词字是男女标示“M:”或“F”且第idx2的歌词字是“M:”或“F”,则跳到步骤4,否则就回到步骤2;
4、比较目前男女歌词字是否相同,且时间相差小于0.05秒,直到遇到换行字符,否则回到步骤2;
5、修改男女标示,若first_Chorus=1,则将该男与女歌词字的所在的歌词行的最前面的提示字“M:”与“F:”都改成“C”,且令first_Chorus=0,否则将“M:”与“F:”都改成空字符“ ”,并记录该行所有的歌词字为合唱;
6、回到步骤3,直到所有歌词检查完毕为止。
(三)将歌词行序列依照两行依序交替的方式排列歌词行序列是由歌词字序列根据其中换行字符所得来,在实际的歌唱时,通常歌词行需要提前显示出来,以提醒歌手下一段要唱的歌词,其原理及步骤如图6、图7、图8所示,说明如下:
1、调整换行字符的唱出时间,若换行字符的唱出时间与下一个歌词的唱出时间,相差超过某一默认值时(例如一秒、一拍时间或一小节时间),则修改换行字符的唱出时间=原唱出时间+默认值,否则令换行字符的唱出时间=下一个歌词的唱出时间;
2、依照换行字符的标记,将歌词字序列转成歌词行序列,而且每一行的开始显示时间为此行第一个字的开始显示时间,每一行的结束显示时间为此行最后一个“换行字符”的显示时间,从而得到歌词行的序列,包含每行歌词的开始显示时间及结束显示时间;
3、依照歌词行的序列中的歌词行显示时间,依序指定该行显示在第一行或第二行,其方法及步骤如下:
a、令时间T=0,设定男生歌词行的行数idx1=0,女生歌词行的行数idx2=0,及歌词第一行的状态Line1=0,歌词第二行的状态Line2=0,其中0表示此歌词行是空的,反之1表示此歌词行正在显示中;
b、令此时间T以一个小的时间间隔(如0.1秒,T=T+0.1sec)慢慢增加;
c、若为男女合唱歌词,则跳过合唱的女生歌词行,并令其显示的行数为0;
d、若T大于或等于男生歌词行序列的第idx1行的显示时间,则判断原则如下:
(1)若Line1=0且Line2=0,则:若idx1大于0且第idx1-1行的结束显示时间与第idx1行的显示时间的差值若小于某一默认值(如音乐的两个小节时间),则令该歌词行的显示的行数为前一次歌词显示行数的另一行,(若前一次歌词显示行数为第一行,则设该行歌词的显示行数为第二行,反之则为第一行),否则设定该行歌词的显示的行数为第一行;
(2)若Line1=0且Line2=1,即第一行无正在显示的歌词,且第二行有正在显示的歌词时,令该行歌词的显示行数为第一行;
(3)若Line1=1且Line2=0,即第二行无正在显示的歌词,且第一行有正在显示的歌词时,令该行歌词的显示行数为第二行。
e、重复步骤d,将男生歌词行序列换作女生歌词行序列,idx1改成idx2;
f、若T大于或等于男生歌词行序列的第idx1行的结束显示时间,则若该歌词行显示在第一行时,令Line1=0;否则令Line2=0;并令idx1=idx1+1;
g、若T大于或等于女生歌词行序列的第idx2行的结束显示时间,则若该歌词行显示在第一行,则令Line1=0;否则令Line2=0;并令idx2=idx2+1;
h、重复步骤(b)到(h),直到T大于最后一个歌词行的结束显示时间为止。
4、调整所有歌词行的序列中标示为第一行的显示时间,若某歌词行显示之前并没有其它歌词正在显示,则可将该歌词行开始显示时间略微提早,以方便歌唱者唱歌前能够先看到歌词,依照下述方法可调整所有歌词行的序列中标示为第一行的显示时间,方法如下:
a、依照时间顺序,依次检查歌词行的序列中标示为第一行的开始显示时间与结束显示时间;
b、若目前歌词行的显示时间与前一歌词行结束显示时间的差值大于、等于某一默认值时(如音乐的一个小节时间),则将目前歌词行的显示时间往前提早一个上述默认值的时间长度,否则,令目前歌词行的显示时间等于前一歌词行的结束显示时间加上一小段微调时间(如0.1秒)。
5、调整所有歌词行的序列中标示为第二行的显示时间。
同步骤4所述的方法,调整所有歌词行的序列中标示为第二行的显示时间。
(四)加入歌词预备拍;
加入歌词预备拍的目的,通过预备拍的显示,让歌手可以用倒数节拍的方式,抓到开始唱歌的拍子,而能轻松准确地唱出歌曲,在一首歌曲中,可能会有许多变奏的地方,节拍长度会跟着改变,故采取如下做法:首先记录每个时间点节奏的变化,然后在适当的间奏时间点加入歌词预备拍,该歌词预备拍的时间长度为一拍时间,若曲调太快,则可调整该预备拍的时间长度为二拍时间,其设定预备拍的原理如图9、图10所示,步骤说明如下:
1、将音乐歌谱扫描一遍,记录所有音乐拍点时间改变的时间点以及预备拍的时间长度于一个预备拍序列中;
2、以时间递增方式,依序检查歌词字的唱出时间,若目前歌词字的唱出时间与上一个歌词字的唱出时间相差超过某一默认值时间长度,如音乐的两个小节时间,则在该时间位置,加入预备拍;
3、取得目前时间拍点分辨率,并计算该时间点的预备拍时间;
4、设定预备拍显示时间,假设一个小节有四拍,预备拍长度为一拍,则:
a、若该预备拍开始的时间小于两个小节时间,则设置时间0为倒数四个预备拍位置(即将该预备拍的开始时间提早为0秒)并设置该时间为倒数四个预备拍位置,否则将该加入预备拍的时间往前两个小节时间,并设置该时间为倒数四个预备拍位置;
b、然后往后一个小节时间,设置该时间为倒数三个预备拍位置;
c、再往后一个预备拍时间,设置该时间为倒数二个预备拍位置;
d、再往后一个预备拍时间设置该时间为倒数一个预备拍位置;
e、最后往后一个预备拍时间,设置该时间为倒数0个预备拍位置。
5、重复步骤2-4,直到所有歌词字的时间检查完毕为止;显示预备拍时,在倒数四个预备拍位置时间点,显示四个灯号,这个时间点是开始唱歌的前两小节时间;在倒数三个预备拍位置时间点,显示三个灯号,表示开始熄灭一个灯号,这个时间点是开始唱歌的前一小节时间;在倒数两个预备拍位置时间点显示两个灯号,表示熄灭两个灯号,这个时间点是开始唱歌的前三拍时间;在倒数一个预备拍位置时间点显示一个灯号,表示熄灭了三个灯号,这个时间点是开始唱歌的前两拍时间;在倒数0个预备拍位置时间点,显示0个灯号,表示熄灭了所有灯号,这个时间点是开始唱歌的前一拍时间;当最后一个灯号熄灭时的下一拍,即开始唱歌。
(五)微调男女歌词标示的时间;
上述的方法中,将***的“M:”、“F:”及“C:”字的唱出时间为与该行第一个字的唱出时间相同,实际作法上,可以将该唱出时间往前调整一拍时间,若该行的歌词显示时间与该字的唱出时间相差超过一拍时间以上时,让该唱出时间往前调整一拍时间,否则让它等于该行的歌词显示时间,这样作法的好处是,这些“M:”、“F:”及“C:”字的提示字,在做歌词跑字扫瞄时,可以当作预备一拍的提醒作用。
(六)歌词的跑字扫描方法;
利用上述方法得到的歌词字序列、歌词行的序列及预备拍显示提示,加上一组定时器(Timer),再依照下述方法,我们就可以实现专业的KARAOKE歌词显示,如图11所示,其原理说明如下:
1、将所有歌词字序列标上字的结束歌唱时间,该时间为下一个字的唱出时间,若该字的唱出时间与结束歌唱时间相差超过某一默认值时(例如一秒、一拍时间或一小节时间),则取结束歌唱时间=唱出时间+默认值;
2、预设两组字符串变量,储存目前画面上的两行正在扫描的歌词;
3、设一组定时器以及定时器中断服务程序,每隔一小段时间(如0.05秒)执行该中断服务程序一次;
4、在定时器中断服务程序中取得音乐播放时间Tp;
5、在定时器中断服务程序中,依序检查歌词行的序列及歌词字序列,若音乐播放时间Tp大于目前的歌词行的开始显示时间,则显示该行歌词于画面上的第n行,其中n=1或2,记录于目前的歌词行中的行数变量。
6、在中断服务程序中,依序检查歌词字序列,若音乐播放时间Tp大于目前的歌词字的开始唱出时间Tb,则将该字符串接于第n行的预设字符串变量中,然后依照目前的歌词字的结束显示时间Te及时间比例,计算该歌词字符串应显示的长度,然后将该字符串画于画面上的第n行,其中n=1或2,n为当前的歌词字中的行数,上述计算该歌词字符串应显示长度的算法如下:
该字显示长度=该字长度*(Tp-Tb)/(Te-Tb);
在显示时,每到该字的开始显示时间时,可以先显示该字的一部份(如1/3),上式调整如下:
该字显示长度=该字长度*(1/3+(Tp-Tb)/(Te-Tb)),
其中Te>Tb;
进一步地,为使本发明所揭伴唱歌词自动显示方法应用于实际歌曲歌词上的状态能够更清楚呈现以利理解,以下将本发明提供的方法应用于一首歌的歌词中的作用原理以及对该首歌词的状态的改变过程说明如下:
首先请参照图13,该图包含时间及男生部份的歌词内容(图中上部所示)、女生部份的歌词内容(图中下部所示);其中,图中0D系为16进位数字,代表换行字符;依照前述加入男女标记的规则,***“M:”与“F:”提示字的运作步骤如下:
1、令男与女的歌词初始状态变量分别为Label_M=1,Label_F=1,及已标示变量分别为Marked_M=0,arked_F=0,并将时间从0开始;
2、以时间递增方式检查第一个歌词“34405:Where”,因为是男生歌词,此时Label_M=1,故令Label_M=2;
3、因为此时Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符“0D”,所以在目前男的歌词字前***歌词“34405:F:”,并设定Marked_M=1,Label_M=0;
4、继续以时间递增方式检查下一个歌词,“34846:is”一直到“38816:me”,此时各变量状态皆为Label_M=0,Label_F=1,Marked_M=1,Marked_F=0;
5、继续以时间递增方式检查下一个歌词“38816:0D”,该0D为男生换行字符,各变量状态变为Label_M=0,Label_F=1,Marked_M=0,Marked_F=0,一直到59988:0D,各变量状态维持不变;
6、继续以时间递增方式检查下一个歌词“62635:Where”,因为是女生歌词,此时Label_F=1,故令Label_F=2,且Label_M=0,故令Label_M=1;
7、因为此时Marked_F=0且Label_F=2,且目前女的歌词字不为换行字符“0D,所以在目前女的歌词字前***歌词“62635:F:,并设定Marked_F=1,Label_F=0;
8、继续以时间递增方式检查下一个歌词,“63076:is”一直到“67046:me”,此时各变量状态皆为Label_M=1,Label_F=0,Marked_M=0,Marked_F=1;
9、继续以时间递增方式检查下一个歌词“67046:0D,该0D为女生换行字符,各变量状态变为Label_M=1,Label_F=0,Marked_M=0,Marked_F=0,一直到82925:0D,各变数状态维持不变;
10、继续以时间递增方式检查下一个歌词“85131:We”,因为是男生歌词,此时Label_M=1,故令Label_M=2,且Label_F=0,故令Label_F=1;
11、因为此时Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符“0D”,所以在目前男的歌词字前***歌词“85131:M:”,并设定Marked_M=1,Label_M=0;
12、继续以时间递增方式检查下一个歌词,“85351:have”一直到“91747:long”,此时各变量状态皆为Label_M=0,Label_F=1,Marked_M=1,Marked_F=0;
13、继续以时间递增方式检查下一个歌词“91747:0D”,该0D为男生换行字符,各变量状态变为Label_M=0,Label_F=1,Marked_M=0,Marked_F=0;
14、继续以时间递增方式检查下一个歌词“97040:But”,该歌词为男生歌词,各变量状态维持不变;
15 继续以时间递增方式检查下一个歌词“97043:But”,该歌词为女生歌词,各变量状态变为Label_M=1,Label_F=2,Marked_M=0,Marked_F=0;
16、因为此时Marked_F=0且Label_F=2,且目前女的歌词字不为换行字符“0D”,所以在目前女的歌词字前***歌词“97043:F:”,并设定Marked_F=1,Label_F=0;
17、继续以时间递增方式检查下一个歌词“97922:just”,该歌词为男生歌词,各变量状态变为Label_M=2,Label_F=1,Marked_M=0,Marked_F=1;
18、因为此时Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符“0D”,所以在目前男的歌词行前的第一个字前“97040:But”***歌词“97040:M:”,并设定Marked_M=1,Label_M=0;
19、继续以时间递增方式检查下一个歌词“97925:just”,该歌词为女生歌词,各变量状态变为Label_M=2,Label_F=2,Marked_M=1,Marked_F=1;
20、一直到“100128:0D”,该0D为男生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=1;
21、接着直到“100131:0D”,该0D为女生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=0;
22、继续以时间递增方式检查下一个歌词“102333:Hope”,该歌词为男生歌词,因为此时Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符“0D”,所以在目前男的歌词前***歌词“102333:M:”,并设定Marked_M=1,Label_M=0;
23、继续以时间递增方式检查下一个歌词“102336:Hope”,该歌词为女生歌词,因为Label_M=0,所以设定Label_M=1,再因为此时Marked_F=0且Label_F=2,且目前歌词字不为换行字符“0D”,所以在目前女的歌词前***歌词“102336:F:”,并设定Marked_F=1,Label_F=0;
24、继续以时间递增方式检查下一个歌词“102774:i”,该歌词为男生歌词,各变量状态变为Label_M=2,Label_F=1,Marked_M=1,Marked_F=1;
25、继续以时间递增方式检查下一个歌词“102777:i”,该歌词为女生歌词,各变量状态变为Label_M=2,Label_F=2,Marked_M=1,Marked_F=1;
26、一直到“103657:0D”,该0D为男生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=1;
27、接着直到“103660:0D”,该0D为女生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=0;
28、继续以时间递增方式检查下一个歌词“104539:but”,该歌词为男生歌词,因为该时Marked_M=0且Label_M=2,且目前男的歌词字不为换行字符“0D”,所以在目前男的歌词前***歌词“104539:M:”,并设定Marked_M=1;Label_M=0;
29、继续以时间递增方式检查下一个歌词“104542:but”,该歌词为女生歌词,因为Label_M=0,所以设定Label_M=1,再因为此时Marked_F=0且Label_F=2,且目前歌词字不为换行字符“0D”,所以在目前女的歌词前***歌词“104542:F:”,并设定Marked_F=1,Label_F=0;
30、一直到“106303:0D”,该0D为男生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=1;
31、接着直到“106306:0D”,该为女生换行字符,各变量状态变为Label_M=2,Label_F=2,Marked_M=0,Marked_F=0;
32、结束。由以上说明可得到修改过的男、女生歌词请参照图14,图中上部所示为修改过的男生歌词、图中下部所示为修改过的女生歌词。
接着,以时间递增方式判断那些歌词属于合唱部份的运作步骤如下:
1、从时间0开始;
2、以时间递增方式比较男与女的歌词字是否相同,且时间相差小于0.05秒,符合该条件的歌词位置是男生歌词的“97040:But”与女生歌词的“97043:But”;
3、以步骤(2)的条件,继续比较男女的下一个歌词,一直到换行字符“0D”,男生歌词的“101128:0D”与女生歌词的“101131:0D”,发现皆符合条件;
4、将该行男生歌词的第一个字“101128:M:”与该行女生歌词的第一个字“101131:F:”皆改为“C:”;
5、继续步骤(2)-(3)直到换行字符“0D”,男生歌词的“103657:0D”与女生歌词的“103660:0D”,发现皆符合条件;
6、将该行男生歌词的第一个字“103657:M:”与该行女生歌词第一个字“103660:F:”均改为空字符“ ”;
7、重复步骤5-6直到不符合判断条件;
8、重复步骤2-7直到歌词结束。由以上说明可得到修改过的男、女生歌词请参照图15,图中上部所示为修改过的男生歌词、图中下部所示为修改过的女生歌词。
接着,将歌词行序列依照两行依序交替的方式排列的运作方式如下:
1、调整换行字符的唱出时间,若换行字符的唱出时间与下一个歌词的唱出时间相差超过一秒,则修改换行字符的唱出时间=原唱出时间+一秒时间,否则换行字符的唱出时间=下一个歌词的唱出时间,经过调整后状态如下:
男生部份:
38816:0D→39816:0D
42786:0D→43786:0D
45873:0D→46873:0D
52931:0D→53931:0D
56901:0D→57901:0D
59988:0D→60988:0D
88218:0D→89218:0D
91747:0D→92747:0D
100128:0D→101128:0D
103657:0D→104539:0D
106303:0D→107303:0D
女生部份:
67046:0D→68046:0D
71016:0D→72016:0D
74103:0D→75103:0D
78955:0D→79955:0D
82925:0D→83925:0D
100131:0D→101131:0D
103660:0D→104542:0D
106306:0D→107306:0D
2、产生男女歌词行序列:依前述方法,将所有男女歌词字序列,串接起来,变成一行一行,若遇到换行字符,则换下一行,并设定每行歌词的开始显示时间为该行第一个字的唱出时间及结束显示时间为该行最后一个“换行字符”的唱出时间,可得到:
男生歌词行序列如下:
开始时间:结束时间:歌词行
434405:39816:M:Where is hope believe me
41462:43786:Hope is nowhere
44550:46873:but in your mind
48520:53931:Where is sadness believe me
54695:57901:Sadness is nowhere
58665:60988:but in your mind
85131:89218:M:We have sadness and fear
90424:92747:all the way long
97040:101128:C:But just show me hope
102333:104539:Hope is nowhere
104539:107303:but in your mind
女生歌词行序列如下:
62635:68046:F:Where is fear believe Me
69692:72016:fear is nowhere
72780:75103:but in your mind
77632:79955:Show me hope
81602:83925:though I always know
97043:101131:C:But just show me hope
102336:104542:Hope is nowhere
104542:107306:but in your mind
3、依照歌词行的序列中的歌词行显示时间,依序指定该行显示在第一行或第二行,依照前述方法,可以得到歌词行的设定结果如下:
男生歌词行序列:
显示行数:开始显示时间:结束显示时间:歌词行
1:34405:39816:M:Where is hope believe me
2:41462:43786:Hope is nowhere
1:44550:46873:but in your mind
2:48520:53931:Where is sadness believe me
1:54695:57901:Sadness is nowhere
2:58665:60988:but in your mind
2:85131:89218:M:We have sadness and fear
1:90424:92747:all the way long
2:97040:101128:C:But just show me hope
1:102333:104539:Hope is nowhere
2:104539:107303:but in your mind
女生歌词行序列
1:62635:68046:F:Where is fear believe Me
2:69692:72016:fear is nowhere
1:72780:5103:but in your mind
2:77632:79955:Show me hope
1:81602:83925:though I always know
0:97043:101131:C:But just show me hope
0:102336:04542:Hope is nowhere
0:104542:107306:but in your mind
其中,行数0表示该行不需显示;
4、调整男女歌词行的序列中标示为第一行的开始显示时间,如前所述方法,若前一歌词行的结束显示时间与目前歌词行的开始显示时间差超过一个小节时间,则将目前歌词行的开始显示时间提早一个小节时间开始显示,否则将目前歌词行的开始显示时间提早为前一歌词行的结束显示时间加0.1秒(=100ms),其中假设该歌曲一小节有4拍,每拍时间789.5ms,由上可得:
1:30877:39816:M:Where is hope believe me
1:41022:46873:but in your mind
1:51167:57901:Sadness is nowhere
1:59107:68046:F:Where is fear believe Me
1:69252:75103:but in your mind
1:78074:83925:though I always know
1:86896:92747:all the way long
1:98805:104539:Hope is nowhere
同前述(4)步骤调整男女歌词行的序列中标示为第二行的开始显示时间,可得:
2:37934:43786:Hope is nowhere
2:44992:53931:Where is sadness believe me
2:55137:60988:but in your mind
2:66164:72016:fear is nowhere
2:74104:79955:Show me hope
2:81603:89218:M:We have sadness and fear
2:93512:101128:C:But just show me hope
2:101228:107303:but in your mind
接着,加入歌词预备拍的运作方式如下:
假设本首歌的拍点长度是固定的,且每拍为789.5ms,由前述加入歌词预备拍的方法,加入预备拍的时间点如下:
预备拍时间点:预备拍数(显示灯号数)
27346:4(倒数四个预备拍)
30875:3(倒数三个预备拍)
31758:2(倒数二个预备拍)
32640:1(倒数一个预备拍)
33522:0(倒数0个预备拍)
然后在一拍后时间点34405ms开始唱出歌词“Where”
接着,微调男女歌词标示的时间的运作方式如下:
依照前述的方法,调整“M:”、“F:”及“C:”歌词字的唱出时间,该唱出时间的意思不是要唱出该字,而是歌词开始扫描的时间,可当作预备一拍的用途,调整后如下:
34405:M:→33523:M:
62635:F:→61753:F:
85131:M:→84249:M:
97040:C:→96158:C:
接着,歌词的跑字扫描运作方式如下:(请配合参看图12)
1、将所有男女歌词字序列标上字的结束歌唱时间如前述方法,以歌词的前一行为例,可得:
唱出时间:结束时间:歌词字
33523:34405:M:
34405:34846:Where
34846:35287:is
35287:37934:hope
37934:38154:be
38154:38816:lieve
38816:39816:me
39816:0D
2、设字符串变量LyricsTrack1,LyricsTrack2是第一行与第二行储存正在显示的歌词字符串,及w1、w2分别为第一行与第二行的跑字扫瞄长度,该长度每次换歌词时从0开始累加,以产生跑字扫瞄的效果,最长为该行的歌词长度。
3、设定定时器中断时间为每0.05秒;
4、在定时器中断服务例程中(ISR;Interrupt Service Routine)读取音乐播放的时间Tp;
5、在该ISR中,检查Tp是否大于目前行索引指针所指的歌词行时间,若是则画出该歌词行于其所记录的显示行数(第一或第二行)上,并将行索引指针移到下一个歌词行及令w1=0,w2=0;此时可以预先画出整行的跑字字幕于暂存内存中,并可以将字幕稍作修饰,例如以不同的颜色加字的外框等,在实际的字幕扫描时,只需贴出该内存的部份长度w1或w2于显示器中;
6、在该ISR中,检查Tp是否大于目前男生字索引指针所指的歌词字的唱出时间,并计算及画出该歌词跑字应该扫描的长度w1或w2,若是,且该字的歌词显示行数在第一行,则:
(1)检查Tp是否大于该歌词字的结束时间,若是则串接该歌词字于字符串变量LyricsTrack1中,并以与歌词行不同的颜色,将LyricsTrack1显示于第一行,并将索引指针移到下一个歌词字,令w1=LyricsTrack1的字符串长度;
(2)否则依照时间比例画出该字,假设该字的唱出时间为Tb,结束时间为Te,时间单位是ms(毫秒),且该字的长度是W,则计算这个字每次扫描所增加的长度:
K=W*(1/3+50/(Te-Tb)),w1=w1+K;
其中50(ms)是定时器的时间间隔,且Te>Tb,
若Te=Tb,则令:w1=w1+1;
限制K的值,也可以限制歌词扫描的速度,如避免歌词扫描太慢,当K<W/20时,则令K=W/20,当K<1时,则令K=1;
(3)与歌词行不同的颜色,并区分男女,画出该行歌词长度w1于第一行;若该字的歌词显示行数在第二行,则重复上述步骤(1)-(3),并以LyricsTrack2取代LyricsTrack1及w2取代w1;
7、每隔0.05秒,重复步骤4至步骤6的步骤,直到播放完毕为止执行结果说明:
1、当Tp>=30877(ms)时(即Tp大于或等于30877),显示歌词行于显示器第一行(如图16(a)所示);
2、当Tp>=33523(ms)时,开始扫描歌词“M:”一开始扫描1/3字(如图16(b)所示);
3、当Tp>=34405(ms)时,已经扫描完毕歌词“M:”,并准备开始扫描歌词“Where”(如图16(c)所示);
4、当Tp>=34846(ms)时,已经扫描完毕歌词“Where”(如图16(d)所示),并开始扫描歌词“is”的一部份“is”字扫描的长度为:
W*(1/3+(Tp-Tb))/(Te-Tb)=W*(1/3+(35066-34846))/(35287-34846);
其中W=“is”字的长度。
本发明的优点:
本发明所述方法将能够方便而有效率地依照一连串标有时间标记的歌词字序列,自动将歌词以两行依序交替的方式提早显示出来,并自动做出男、女或合唱字的标示以及预备拍标示,最后再以跑字扫描方式,以不同颜色同步显示歌唱的正确歌词位置;本方法能实时以软件程序处理繁杂的文字排版及时间较准等工作,不仅节省了人工后制排版的人力及时间,更能有效加快伴唱歌曲的制作效率,达到让歌唱者能轻松跟唱的效果,且对独唱或男女对唱歌词都能适用。降低了卡拉OK产业经营成本。
另一方面,本发明提供的方法所显示歌词的时间是依据实际歌曲的播放时间而获得,因此只需在送出声音数据到音讯输出装置之前记录目前该段的歌曲时间,避免因为音乐合成过程所造成的显示延迟现象,而且该歌词时间的获得是事先即处理完成的,因此,本发明无须透过延迟调整装置的增设来调校音乐合成波形时所造成的延迟,从而使伴唱设备构成上能更为简化。从而也降低了卡拉OK产业经营成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (3)
1.一种伴唱歌词自动显示方法,其特征在于,包括:
先依据所对应的伴唱歌词自动撷取一连串标有时间标记的歌词序列,并将男生歌词和女生歌词分别储存于不同歌词字序列中,当所述歌词字序列为男女对唱或合唱歌词,则依据男女歌词变换情形,通过软件程序自动加入男或女提示字:“M:”或“F:”;
依据歌词字序列的时间标记,判断男女歌词序列中有无合唱部份,所述判断包括:以时间递增方式检查男与女的歌词字序列,判断出男、女歌词行的字是否完全相同,且男、女歌词字的唱出时间相差是否在预定容许误差范围内,若是即判断为合唱部份,并通过软件程序自动加入合唱的提示字:“C:”;
将歌词依照伴唱歌词两行依序交替的方式自动排列,包括:调整换行字符的唱出时间,若换行字符唱出时间与下一个歌词唱出时间相差超过一默认值时,则修改换行字符的唱出时间为原唱出时间与该默认值的和,否则令换行字符的唱出时间为下一个歌词的唱出时间,依照换行字符的标记将歌词字序列转成歌词行序列,依照歌词行序列中的歌词行显示时间,依序指定该行显示于第一行或第二行;
计算每行歌词应显示时间,依照每行标示时间将歌词依默认值提前显示;
依据伴唱歌词的间奏时间及拍点时间,通过软件程序自动加入预备拍,所述通过软件程序自动加入预备拍包括:以时间递增方式依序检查歌词字的唱出时间,若目前歌词字的唱出时间与上一个歌词字的唱出时间相差超过一默认值时间长度时,则于此时间位置自动加入歌词预备拍;以及
通过定时器(Timer)将以上步骤所产生的歌词依歌曲实际播放时间显示,歌词将依显示时间自动跑字扫描变换颜色;该步骤进一步包括:
a、将所有歌词字序列标上字的结束歌唱时间,此时间为下一个字的唱出时间,若该字唱出时间与结束歌唱时间相差超过一默认值时,则取结束歌唱时间为唱出时间与该默认值之和;
b、预设两组字符串变量,储存目前画面上的两行正在扫描的歌词;
c、设一中断服务程序,每隔一小段时间执行此程序一次;
d、从所述中断服务程序中取得歌曲播放时间Tp;
e、从所述中断服务程序中依序检查歌词行的序列及歌词字序列,若歌曲播放时间Tp大于目前的歌词行的开始显示时间,则在画面上的第n行显示该行歌词,其中n=1或2,所述n为当前歌词字中的行数;
f、从所述中断服务程序中依序检查歌词字序列,若歌曲播放时间Tp大于目前的歌词字的开始显示时间Tb,则将歌词字符串接于第n行的预设字符串变量中,然后依照当前的歌词字的结束显示时间Te及时间比例,计算该歌词字符串应显示长度,然后将此字符串显示于画面上的第n行,其中n=1或2,所述n为当前歌词字中的行数。
2.根据权利要求1所述的伴唱歌词自动显示方法,其特征在于,所述撷取一连串标有时间标记的歌词序列包括:
从媒体或档案中撷取所述歌词序列,且所述储存于不同歌词字序列中的男生歌词和女生歌词的序列包含每一个歌词的字及该字所对应的歌曲时间,时间标示表示该歌词唱出的时间,该字与时间以预定格式记录于所述媒体或档案中,所述歌词字序列中还包括换行的符号。
3.根据权利要求1所述的伴唱歌词自动显示方法,其特征在于,还包括:
微调男女歌词标示的时间;
所述微调男女歌词标示的时间包括:
将所述“M:”、“F:”、“C:”***字的唱出时间与***字所在行第一个字的唱出时间设为相同,所述“M:”、“F:”、“C:”字的标示还用于提醒用户:一拍后将进行歌词跑字扫瞄。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910132680 CN101859561B (zh) | 2009-04-07 | 2009-04-07 | 伴唱歌词自动显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910132680 CN101859561B (zh) | 2009-04-07 | 2009-04-07 | 伴唱歌词自动显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101859561A CN101859561A (zh) | 2010-10-13 |
CN101859561B true CN101859561B (zh) | 2012-12-26 |
Family
ID=42945417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910132680 Expired - Fee Related CN101859561B (zh) | 2009-04-07 | 2009-04-07 | 伴唱歌词自动显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101859561B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180012800A (ko) | 2015-05-27 | 2018-02-06 | 광저우 쿠고우 컴퓨터 테크놀로지 컴퍼니, 리미티드 | 오디오 처리 방법, 장치 및 시스템 |
CN105023559A (zh) * | 2015-05-27 | 2015-11-04 | 腾讯科技(深圳)有限公司 | K歌处理方法及*** |
CN104966527B (zh) * | 2015-05-27 | 2017-04-19 | 广州酷狗计算机科技有限公司 | K歌处理方法、装置以及k歌处理*** |
CN106502967B (zh) * | 2016-09-12 | 2018-11-02 | 广州酷狗计算机科技有限公司 | 歌词处理的方法和装置 |
CN107610726A (zh) * | 2017-10-10 | 2018-01-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 多媒体提示字符显示方法、装置、存储介质以及终端 |
CN107993637B (zh) * | 2017-11-03 | 2021-10-08 | 厦门快商通信息技术有限公司 | 一种卡拉ok歌词分词方法与*** |
CN112150997A (zh) * | 2020-09-24 | 2020-12-29 | 腾讯音乐娱乐科技(深圳)有限公司 | 确定合唱歌词分配信息的方法、装置、设备及存储介质 |
CN113329258B (zh) * | 2021-06-10 | 2023-02-17 | 王之华 | 一种歌曲视频合成的方法及播放器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570858A (zh) * | 2003-07-16 | 2005-01-26 | 英业达股份有限公司 | 伴唱字幕的编辑***及其编辑与显示的方法 |
CN1684507A (zh) * | 2004-04-16 | 2005-10-19 | 清华同方股份有限公司 | 一种移动式实时卡拉ok字幕显示方法及其装置 |
CN101197944A (zh) * | 2006-12-06 | 2008-06-11 | 中兴通讯股份有限公司 | 利用媒体服务器实现视频和文字同步的方法 |
-
2009
- 2009-04-07 CN CN 200910132680 patent/CN101859561B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570858A (zh) * | 2003-07-16 | 2005-01-26 | 英业达股份有限公司 | 伴唱字幕的编辑***及其编辑与显示的方法 |
CN1684507A (zh) * | 2004-04-16 | 2005-10-19 | 清华同方股份有限公司 | 一种移动式实时卡拉ok字幕显示方法及其装置 |
CN101197944A (zh) * | 2006-12-06 | 2008-06-11 | 中兴通讯股份有限公司 | 利用媒体服务器实现视频和文字同步的方法 |
Non-Patent Citations (1)
Title |
---|
JP特开平8-254986A 1996.10.01 |
Also Published As
Publication number | Publication date |
---|---|
CN101859561A (zh) | 2010-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101859561B (zh) | 伴唱歌词自动显示方法 | |
US10347229B2 (en) | Electronic musical instrument, method of controlling the electronic musical instrument, and recording medium | |
US7663044B2 (en) | Musical performance self-training apparatus | |
US8513511B2 (en) | Apparatus for practicing playing music | |
JP4626307B2 (ja) | 演奏練習装置及びプログラム | |
US7041888B2 (en) | Fingering guide displaying apparatus for musical instrument and computer program therefor | |
Sharon et al. | A cappella arranging | |
JP2006195021A (ja) | 演奏練習装置及びプログラム | |
US20150310876A1 (en) | Raw sound data organizer | |
Shinn | Instant musescore | |
JP6803294B2 (ja) | カラオケ装置 | |
Chacko | Unheard Complexities in Lou Harrison's Main Bersama-sama and Bubaran Robert | |
JP7158331B2 (ja) | カラオケ装置 | |
JP2008180794A (ja) | データ再生装置 | |
Lucier | Keyboard Hero | |
Egozy | Approaches to musical expression in Harmonix video games | |
JP2007316416A (ja) | カラオケ装置およびカラオケ処理プログラム | |
JP2004184590A (ja) | 演奏練習装置、演奏練習方法および演奏練習プログラム | |
JP2007086572A (ja) | 画像表示装置及びプログラム | |
Rowland | William Kraft's Encounters II for Solo Tuba: A Performer's Guide and Annotated Bibliography of Unaccompanied Works Written for Roger Bobo | |
Magness | The character pieces of Carter Pann for piano | |
Garcia | A SCHOLARLY EDITION OF LATIN JAZZ | |
Matsushita | 3. Creative Music Activity Based on the Music of Jo Kondo | |
JP2005010639A (ja) | カラオケ装置 | |
Werry | AQA AoS2: Pop music |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 Termination date: 20210407 |