浅谈动感歌词-歌词解析篇

1引言

要解析动感歌词文件,首先就要清楚动感歌词的文件内容,当然歌词的文件内容,我们已经在分析篇的文章里面介绍过了,这里将不再做详细的介绍,当我们可以把歌词成功解析出来后,再结合歌词生成篇,一个简单的歌词格式转换工具也就出来了。

2歌词解析

歌词解析,其实就是把文件里面的标签内容、歌词时间和歌词内容解析出来,当然,为了后期拓展其它的动感歌词格式,我们这里要好好设计一番。

2.1实体类

2.1.1歌词读取器

主要用来约束动感歌词读取器要实现的方法,可用于拓展实现其它的动感歌词格式。

2.1.2歌词实体

2.1.3行歌词实体

2.1.4标签实体

2.2ksc解析

2.2.1文件内容

karaoke.songname := ‘你要的爱‘;

karaoke.singer := ‘戴佩妮‘;

karaoke.add(‘00:03.298‘, ‘00:06.771‘, ‘虽然经常梦见你‘, ‘467,215,195,936,282,568,810‘);

karaoke.add(‘00:09.571‘, ‘00:12.105‘, ‘还是毫无头绪‘, ‘245,164,211,261,451,1202‘);

karaoke.add(‘00:14.809‘, ‘00:16.626‘, ‘外面正在下着雨‘, ‘271,200,195,179,271,266,435‘);

karaoke.add(‘00:17.245‘, ‘00:19.908‘, ‘今天是星期几‘, ‘195,143,175,379,758,1013‘);

karaoke.add(‘00:20.492‘, ‘00:22.089‘, ‘[but ][i ][don`t ][know]‘, ‘179,190,286,942‘);

2.2.2歌词读取器实体

2.2.3歌词解析部分代码

2.3krc解析

2.3.1文件内容

[id:$00FF2B12]

[ar:李健]

[ti:美若黎明]

[by:]

[hash:e1c2628fad0a46f94df6b8b071df078f]

[al:]

[sign:]

[qq:]

[total:267096]

[offset:10000]

[language:eyJjb250ZW50IjpbXSwidmVyc2lvbiI6MX0=]

[1679,1550]<0,399,0>作<399,200,0>词<599,250,0>:<849,301,0>李<1150,400,0>健

[3229,1650]<0,350,0>作<350,300,0>曲<650,350,0>:<1000,350,0>李<1350,300,0>健

2.3.2歌词读取器实体

2.3.3歌词解析部分代码

2.4hrcx解析

2.4.1文件内容

[ti:右手戒指];

[total:272706];

[ar:金海心];

[offset:0];

[by:HappyPlayer-PC];

haplayer.lrc(‘<1270,9630>‘,‘金海[心 ][- ]右手戒指‘,‘<1010,780,830,1410,800,1210,1410,910>‘);

haplayer.lrc(‘<18710,19810>‘,‘[la ][la ][la ]‘,‘<300,400,400>‘);

haplayer.lrc(‘<20020,22840><77150,79970><163120,165840><191920,194740>‘,‘是你梦中的女郎‘,‘<200,300,400,300,510,500,610><310,400,300,510,400,400,500><200,510,400,400,410,500,300><210,400,300,400,400,510,600>‘);

2.4.2歌词读取器实体

2.4.3歌词解析部分代码

3总结

经过以上歌词的解析,我觉得酷狗的歌词解析起来是最为轻松的。

不过歌词的解析的过程,大致可概括为如下几点:

(1)读取文件内容,如果歌词内容加密的,要进行解密

(2)以行分割文件内容,得到每一行的内容

(3)匹配行内容,判断是标签行、还是歌词内容行

(4)如果是标签行内容,则根据标签类型解析内容

(5)如果是歌词内容行,则根据歌词格式解析歌词内容(主要用到正则表达式)

4参考

酷狗的krc歌词文件的解析

5源码

歌词解析和生成器

6最后

下一篇,将介绍动感歌词的显示。如有侵权,麻烦告知。

时间: 2024-10-20 16:52:58

浅谈动感歌词-歌词解析篇的相关文章

浅谈动感歌词-歌词生成篇

1引言 在写这生成篇时,我还是在烦恼应该是先写歌词解析篇,还是先写歌词生成篇,后来我想一想,其实还是要先有歌词文件,才有解析嘛,当然,我们也可以通过现有的歌词(krc.trc和ksc等)直接跳过这一步,直接解析歌词即可. 2制作软件 这里介绍一下<小灰熊卡拉ok字幕制作软件>,我们可以通过一些专业的制作软件,来理清和弄懂歌词的制作原理.这里先上个截图: 由图和软件制作歌词的使用教程,我们可以知道如下信息: 1.歌词以行为单位制作,逐[字]制作 2.在制作歌词时,软件似乎已经把每一行歌词的[字]

浅谈动感歌词-歌词显示篇

1引言 经过分析篇.生成篇和解析篇之后,相信大家对动感歌词都已经不再陌生了,现在最重要的就是,动感歌词怎样显示的问题,这里就不再介绍java swing上面怎样显示了,因为在生成篇,已经做了一些简单的介绍,这一篇着重说一下动感歌词在android上面怎样显示. 2显示 关于歌词的平滑滚动,之前一直都是用android Scroller来滚动,发现在歌词滑动快进方面,一直都实现不了,能力有限.幸好,发现了一个帖子,这个帖子真是帮了大忙,这里先贴一下,他的博客,我强烈推荐大家看一下他的博客,他说得比

浅谈RxJava源码解析(观察者),创建(create、from、just),变换(Map、flatMap)、线程调度

一.创建操作: 1.观察者模式:RxJava的世界里,我们有四种角色: Observable<T>(被观察者).Observer(观察者) Subscriber(订阅者).Subject Observable和Subject是两个"生产"实体,Observer和Subscriber是两个"消费"实体.Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Ob

浅谈JAVA设计模式之——解析器模式(Interpreter)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45599443 一.概述 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 二.适用性 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使 用解释器模式.而当存在以下情况时该模式效果最好: 1.该文法简单对于复杂的文法,文法的类层次变得庞大而无法管理. 2.效率不是一个关键问题最高效的解释器通常不是通过直接

浅谈Android项目----JSON解析(4种解析技术详解)

json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 3.json比xml数据传输的有效性要高出很多 Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高开发者的效率和降低出错的可能.因此,通常情况下,我们都会选择其他优秀的JSON解析实现,用以替代系统的API,目前JSON解析的开源实现主要包括一

浅谈编码习惯之注释篇

软件编码过程中,当注释代码时,要考虑到不仅将来维护你代码的开发人员要看,而且你自己也可能要看.用Phil Haack大师的话来说就是:"一旦一行代码显示屏幕上,你也就成了这段代码的维护者".因此,对于我们写得好(差)的注释而言,我们将是第一个受益者(受害者).以下是我个人的简单看法和平常的习惯. 1.模块注释 在一个程序模块的开始,应用注释说明模块的名字.功能.开发者和日期和版本变更历史,如下所示: /******************************************

浅谈 Java 主流开源类库解析 XML

在大型项目编码推进中,涉及到 XML 解析问题时,大多数程序员都不太会选用底层的解析方式直接编码. 主要存在编码复杂性.难扩展.难复用....,但如果你是 super 程序员或是一个人的项目,也不妨一试. Jdom/Dom4j/Xstream... 基于底层解析方式重新组织封装的开源类库,简洁明了的 API,稳定高效的运行表现. Dom4j 基于 JAXP 解析方式,性能优异.功能强大.极易使用的优秀框架.想了解底层解析方式请翻看:浅谈 Java XML 底层解析方式 Jdom 你细看内部代码,

浅谈算法和数据结构

: 一 栈和队列 http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html 最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因.另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的. 计算

浅谈算法和数据结构: 四 快速排序

原文:浅谈算法和数据结构: 四 快速排序 上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort). 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序. 快速排序也是一种采用分治法解决问题的一个典型应用.在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序.而且快速排序在面试中经常会遇到. 本文首先介绍快速排序的思