1引言
在写这生成篇时,我还是在烦恼应该是先写歌词解析篇,还是先写歌词生成篇,后来我想一想,其实还是要先有歌词文件,才有解析嘛,当然,我们也可以通过现有的歌词(krc、trc和ksc等)直接跳过这一步,直接解析歌词即可。
2制作软件
这里介绍一下《小灰熊卡拉ok字幕制作软件》,我们可以通过一些专业的制作软件,来理清和弄懂歌词的制作原理。这里先上个截图:
![](https://i-blog.csdnimg.cn/blog_migrate/0596cf18d0ca4f7367e964e6fd21d479.webp?x-image-process=image/format,png)
由图和软件制作歌词的使用教程,我们可以知道如下信息:
1.歌词以行为单位制作,逐【字】制作
2.在制作歌词时,软件似乎已经把每一行歌词的【字】都分割好了,应该是为了后面方便制作歌词,所以预先把行歌词分割成每一个【字】,这里的【字】包括:英文单词、数字串、中文,其中空格【只能】与英文单词、数字串或者中文组成一个【字】,且空格的位置要放在后面
3.在制作歌词的过程中,音乐响起,听到行歌词中的【字】时,就按一下【空格】,这里按一下【空格】,其实应该就是记录该【字(A)】的出现时间,当按下下一个【字(B)】或者换行时,那就可以记录【字(A)】的持续时间
4.歌词换行,则记录行歌词的开始时间
5.歌词制作完成后,则根据歌词格式,生成对应歌词文件
注:第2和第3点是实现制作歌词的重点,如无法理解,则无法制作歌词。
3自实现制作软件
知道制作歌词的原理后,我们就要动手自己编写和实现制作歌词软件,这里我采用Java Swing来编写一个桌面程序,界面方面参考酷狗实现。
3.1API
Java Swing:Graphics2D.setClip。当然也有Android的,后面的博客会说到。
![](https://i-blog.csdnimg.cn/blog_migrate/645902a26b235dfbb7210219398a449f.webp?x-image-process=image/format,png)
由图可知,Graphics2D在绘画文本时,先画默认颜色的歌词文本,再设置clip层的长度宽度,然后再绘画【高亮】歌词文本,只要我们不断地修改clip层的宽度,就是我们想要的动感歌词效果了。当然我们在制作歌词时,只需要设置渐变递增宽度为每个【字】的宽度就可以了。
3.2实体类设计
3.2.1歌词实体、行歌词实体、标签实体
采用《浅谈动感歌词-歌词分析篇》里的实体类,制作歌词时,生成的数据,会保存到,歌词实体(LyricsInfo)里面,方便歌词的预览和生成。
3.2.2歌词文件生成器
这个类的作用,就是为了方便后面拓展支持多种动感歌词格式。
![](https://i-blog.csdnimg.cn/blog_migrate/b296e3848225a3981f399fd84b13f8d4.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/0bb58cad1598626086a83e77df6968c4.webp?x-image-process=image/format,png)
3.2.3HRCX歌词生成器
![](https://i-blog.csdnimg.cn/blog_migrate/de82abdaeb21248b7f49a3d3d8a120b6.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b90e01117d0b8f80a5a3310e48934cc.webp?x-image-process=image/format,png)
3.3界面
3.3.1录入歌词
![](https://i-blog.csdnimg.cn/blog_migrate/5ed4a78326be36db466d403e3ff4e23b.webp?x-image-process=image/format,png)
3.3.2制作歌词
思路:
1.大概就是将【录入歌词】的歌词文本,进行行分割
2.获取行歌词后,对歌词的内容进行分析,并进行【字】分割
3.播放歌曲,按下【左右箭头】和【空格】制作歌词
4.分割部分代码:
![](https://i-blog.csdnimg.cn/blog_migrate/4eee4a38929a4e31934c5243f3e72ac0.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/7862524d636a5801299756220117e9cf.webp?x-image-process=image/format,png)
5.界面
![](https://i-blog.csdnimg.cn/blog_migrate/7543ffcbbf64fd721e8c4c042670053f.webp?x-image-process=image/format,png)
注:紫色,是已完成。红色,表示正在生成。
3.3.3制作完成
![](https://i-blog.csdnimg.cn/blog_migrate/35c0bf34472f7923cf0e246daed04d35.webp?x-image-process=image/format,png)
3.4歌词生成
部分代码,文件后缀名:hrcx
![](https://i-blog.csdnimg.cn/blog_migrate/e7beb68bdddde1b960238f9cfb5b9b05.webp?x-image-process=image/format,png)
3.5歌词效果预览
![](https://i-blog.csdnimg.cn/blog_migrate/becb249d8546213e005e53a94877b958.webp?x-image-process=image/format,png)
4参考
注:这个是好像是Android的视频教程,我也是从这个视频的原理来找到Java Swing的API的。
5源码
注:这是我用Java Swing写的一个PC音乐播放器
6最后
下一篇,将介绍动感歌词的解析。如有侵权,麻烦告知。