[lyric] lyric歌词文件格式--转载以及我的看法

本文介绍了LRC歌词格式,一种包含时间标签和标识标签的纯文本格式,支持歌词与声音/影像档案同步处理,适用于卡拉OK功能实现。文章详细解释了时间标签和标识标签的具体用法。

 LRC 歌词格式介绍
        LRC是一种歌词档案格式,含有用作将歌词与声音/影像档案作同步处理的时间
标签time tag。

        LRC 歌词是一种包含着"[*:*]"形式的“标签(tag)”的、基于纯文本的歌词专用格式。
最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来
实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,
实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。以下具体介绍LRC格
式中的"标签"。

时间标签(Time-tag)

形式为"[mm:ss]"或"[mm:ss.fff]"(分钟数:秒数)。
数字须为非负整数,比如"[12:34.5]"是有效的,而"[0x0C:-34.5]"无效。 它可以
位于某行歌词中的任意位置。一行歌词可以包含多个时间标签(比如歌词中的迭句
部分)。
根据这些时间标签,用户端程序会按顺序依次高亮显示歌词,从而实现卡拉OK功能。
另外,标签无须排序。

标识标签(ID-tags)

其格式为"[标识名:值]"。大小写等价。以下是预定义的标签.

[ar:艺人名]
[ti:曲名]
[al:专辑名]
[by:编者(指编辑LRC歌词的人)]
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。

 

       简单的说,就是时间和歌词的组合。parse出来之后就容易了。

本来在做项目,看到音乐盒的歌词显示挺有趣的,模仿做了一个不完整的。 (只有滚动显示,没有节奏显示)。 原理: (1)定义一个派生自CStatic类的CKaraokeLyricCtrl类(歌词控件),自绘制风格 ; (2)准备一个背景位图(保存在CKaraokeLyricCtrl::m_dcBK中); (3)设置两个计数器(ID分别为1和2),启动自绘制,1用来显示节奏(未实现,只 有框架),2用来滚动歌词; (4)自绘制函数中,将绘制的滚动歌词和背景位图混合,然后输出到屏幕上。滚动 歌词的绘制使用GDI+的Graphics::DrawString函数,歌词文本的大小、位置、字体和 透明度均自动计算和变化,模仿音乐盒的形式。 以上功能均封闭实现在CKaraokeLyricCtrl类中。该类可以直接使用(见下边的使用步骤)。 使用步骤: (1)CKaraokeLyric::InitInstance中启动GDI+; (2)在CKaraokeLyricView::OnInitialUpdate中,创建歌词控件 (CKaraokeLyricCtrl类),其大小和CKaraokeLyricView视图相同,即覆盖了后者; (3)在菜单项响应中,使用CKaraokeLyricCtrl::ReadLyric读取歌词文件,再使用 CKaraokeLyricCtrl::Start即可启动歌词的滚动显示 未实现部分:(歌词的节拍显示) 虽然没有实现,但思路大致是:在后台先用另外一种颜色绘制当前突出显示的歌词(即字体最大的一行歌词),根据歌曲节奏,将还未唱出部分全部涂黑,然后和屏幕上的当前行突出歌词进行混合。
卡拉歌词编辑器 配合播放器使用的歌词编辑器,除了有普通的歌词编辑器的逐行添加时间标记的功能外,还能为每个字添加时间标记,从而生成能为播放器识别的kok歌词文件。在歌词编辑器中内置了播放器,使编辑过程更方便。 【使用技巧】: 1、在普通歌词编辑状态下,每插入一个时间标记,光标会自动移到下一行 2、要进行精确到字的歌词编辑,请打开“精确到字”开关,此时,每插入一个时间标签,光标会自动移到一下个字(标点等不重要的字会被自动跳过),到了一行的结束时会自动跳到一下行。 3、在精确到字的模式下关于空格的处理。本编辑器对于英文是以空格作为单词的分格符的,因此每个单词之间的空格是不可缺少的。在英文中的空格是会被自动跳过的。但在中文中,空格也有重要的用途,那就是有时候在唱完一句之后需要换气,这就有个停顿,这时就可以为空格加上时间标记。但有时在一句话中并不需要停顿,但为了语义的需要,原始歌词文件(比如txt)中会有空格,在这种情况下,如果跟着节怕走,就会在有空格的地方出现乱子。因此建议在这些地方把空格去掉,或加上标点(中英文的标点都可以,标点会被自动跳过的)。如下面的这句(S.H.E的长相思): “若拥抱时光太少 太短 青春多荒凉” 原始歌词中可能会有两个空格,但实际上唱的时候中间是没有间断的,因此可以把上面的空格去掉或是加上标点。最好还是去掉空格,因为标点显示也会占用时间。 4、在英文的句子中如果需要换气,可以在换气的地方多加一个空格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值