11月24
今天在ubuntu的中文论坛上看到一篇帖子,《关于歌词显示的一点建议,请拍砖》,这个正好符合我的专长,因此很有兴趣,等在电脑前,看看回复中能不能被提及lrcShow-X,呵呵。
当然,事实上我也同时在考虑lz的一些建议,毕竟,现状的确是众多歌词软件如雨后春笋般涌现,那么是不是存在“资源浪费”,或者组建团队提高开发质量问题等。
先谈谈关于歌词软件的发展。这里除去非lrc歌词显示,那么总的来说,此领域最早,也是最有名的应该是小锁开发的xlyrics,虽然我未曾用过,但是的确是开山之作,就算是现在也有不少用户在使用。据我所知,小锁已经放弃该项目很久了,期间zhllg曾经修改过一个版本。lrcShow-II(lrcShow-X的前身,amarok脚本,已停止开发)最初是在2006年末开始启动。当时来说,卡在这个领域软件的最大瓶颈是“滚动”问题,当初lrcShow-II在最开始的时候,还是跳动的,而且歌词居中部分的代码相当繁琐和复杂。试想,某位大牛在googlecode上发布了其hack的TTPlayer歌词搜索模块,而仅仅为rhythmbox写了一个平板歌词的显示插件,可见当初动态问题是比较棘手的。
这里暂时不提xlyrics,就当前活跃的歌词软件中,真正实现滚动效果的,应该是和lrcShow-II几乎同时代发布的lyricszilla这款软件。为此我还专门下载源码研究其动态滚动的实现方法,可惜我是很不善于阅读其他人的代码,最后什么也没学到。最后到0.3.1版本,又是通过一个及其繁琐的方法,将跳跃的过程分块实现,才形成了早期的”平滑滚动“效果,只能算是应景,差强人意。
当lyricszilla成为模板,最后的瓶颈被突破后,linux下的歌词软件出现了新的生机,当前比较有名的Showlyrics应运而生。之后,一个非常有意思的情况出现了,那就是osd的大行其道。我最早发现的将歌词使用osd形式显示出来的一款软件是Lyricod(实话实说,这款软件低调的很,若不是在googlecode主页上提及了lrcShow-II,根本就没法找到),这里用到了一个pyosd模块,推测这个模块比较低级,应该是基于x的。而后,gnome-osd被很多同类软件使用到。这里需要说明的一点是,如果一款歌词软件仅仅用到osd作为其歌词承载方式的话,那么歌词软件的开发将大大简化,简而言之,就是获取播放器时间点后搜索下lrc文件,将搜索到的当前行歌词直接set到现成的osd窗口中即可,这个和在shell下调用kdialog几乎没什么区别。加之由之前的一些软件积累起来的一些模块和库类,歌词软件又迎来一个创作高潮,时至今日。
目前,这些软件都同样是单人单任务模式,而且虽然数量多,但是的确也有很多不同。就像那篇帖子讲到的,脚本的也有,窗口式的也有,纯osd的也有,bash开发的也有,c开发的也有,等等因此我个人认为,合并这些开发力量并不一定是个好事,毕竟还是有很多的不同,而且将他们的特性集中到一款软件上,也非易事。我个人觉得,这里应该不存在一个开发资源浪费的问题,因为从逻辑上倒着讲。不会有人因为我不开发这款软件而感谢我节约资源。
组团队是个不错的建议,不过能够找到开发方向一致、开发力量相仿、开发步调统一的组合,还是非常不好找的。一般来讲,开源的合作方式,往往都是合作者中途加入的(又往往是在关键方向上的分歧而又分道扬镳,这样的例子太多了),说到lrcShow-II(lrcShow-X)上,也是一样的,中途有意大利朋友突然问我,是不是有兴趣加入一些其他的歌词搜索殷勤,我说可以啊,于是乎,他就提供了mini的服务器hack流程。加入该搜索引擎后,大家都一致认为当前的多搜索引擎架构比较生涩,于是互相讨论改进问题,再慢慢的,就开始融入到开发中了,成为lrcShow-II(X)的开发伙伴。我认为这种效果是比较好的,也比较符合开源协作的一般流程。而往往生硬的拼凑倒反而不妥。
最后,那个帖子还是提到了lrcShow-X,比较开心,毕竟ubuntu的论坛,qt软件是小众,关注度是很可怜的。意外的是,论坛上的朋友通过使用,使我发现了最新版本中一个比较冒进的地方,会导致第于qt-4.5.0的用户发生错误,于是花了一个小时时间修复,并紧急发布了1.3.1版本。在此表示感谢。
以上仅为一家之言,如有不妥,也接受拍砖。
当然,事实上我也同时在考虑lz的一些建议,毕竟,现状的确是众多歌词软件如雨后春笋般涌现,那么是不是存在“资源浪费”,或者组建团队提高开发质量问题等。
先谈谈关于歌词软件的发展。这里除去非lrc歌词显示,那么总的来说,此领域最早,也是最有名的应该是小锁开发的xlyrics,虽然我未曾用过,但是的确是开山之作,就算是现在也有不少用户在使用。据我所知,小锁已经放弃该项目很久了,期间zhllg曾经修改过一个版本。lrcShow-II(lrcShow-X的前身,amarok脚本,已停止开发)最初是在2006年末开始启动。当时来说,卡在这个领域软件的最大瓶颈是“滚动”问题,当初lrcShow-II在最开始的时候,还是跳动的,而且歌词居中部分的代码相当繁琐和复杂。试想,某位大牛在googlecode上发布了其hack的TTPlayer歌词搜索模块,而仅仅为rhythmbox写了一个平板歌词的显示插件,可见当初动态问题是比较棘手的。
这里暂时不提xlyrics,就当前活跃的歌词软件中,真正实现滚动效果的,应该是和lrcShow-II几乎同时代发布的lyricszilla这款软件。为此我还专门下载源码研究其动态滚动的实现方法,可惜我是很不善于阅读其他人的代码,最后什么也没学到。最后到0.3.1版本,又是通过一个及其繁琐的方法,将跳跃的过程分块实现,才形成了早期的”平滑滚动“效果,只能算是应景,差强人意。
当lyricszilla成为模板,最后的瓶颈被突破后,linux下的歌词软件出现了新的生机,当前比较有名的Showlyrics应运而生。之后,一个非常有意思的情况出现了,那就是osd的大行其道。我最早发现的将歌词使用osd形式显示出来的一款软件是Lyricod(实话实说,这款软件低调的很,若不是在googlecode主页上提及了lrcShow-II,根本就没法找到),这里用到了一个pyosd模块,推测这个模块比较低级,应该是基于x的。而后,gnome-osd被很多同类软件使用到。这里需要说明的一点是,如果一款歌词软件仅仅用到osd作为其歌词承载方式的话,那么歌词软件的开发将大大简化,简而言之,就是获取播放器时间点后搜索下lrc文件,将搜索到的当前行歌词直接set到现成的osd窗口中即可,这个和在shell下调用kdialog几乎没什么区别。加之由之前的一些软件积累起来的一些模块和库类,歌词软件又迎来一个创作高潮,时至今日。
目前,这些软件都同样是单人单任务模式,而且虽然数量多,但是的确也有很多不同。就像那篇帖子讲到的,脚本的也有,窗口式的也有,纯osd的也有,bash开发的也有,c开发的也有,等等因此我个人认为,合并这些开发力量并不一定是个好事,毕竟还是有很多的不同,而且将他们的特性集中到一款软件上,也非易事。我个人觉得,这里应该不存在一个开发资源浪费的问题,因为从逻辑上倒着讲。不会有人因为我不开发这款软件而感谢我节约资源。
组团队是个不错的建议,不过能够找到开发方向一致、开发力量相仿、开发步调统一的组合,还是非常不好找的。一般来讲,开源的合作方式,往往都是合作者中途加入的(又往往是在关键方向上的分歧而又分道扬镳,这样的例子太多了),说到lrcShow-II(lrcShow-X)上,也是一样的,中途有意大利朋友突然问我,是不是有兴趣加入一些其他的歌词搜索殷勤,我说可以啊,于是乎,他就提供了mini的服务器hack流程。加入该搜索引擎后,大家都一致认为当前的多搜索引擎架构比较生涩,于是互相讨论改进问题,再慢慢的,就开始融入到开发中了,成为lrcShow-II(X)的开发伙伴。我认为这种效果是比较好的,也比较符合开源协作的一般流程。而往往生硬的拼凑倒反而不妥。
最后,那个帖子还是提到了lrcShow-X,比较开心,毕竟ubuntu的论坛,qt软件是小众,关注度是很可怜的。意外的是,论坛上的朋友通过使用,使我发现了最新版本中一个比较冒进的地方,会导致第于qt-4.5.0的用户发生错误,于是花了一个小时时间修复,并紧急发布了1.3.1版本。在此表示感谢。
以上仅为一家之言,如有不妥,也接受拍砖。
强大的开源力量
重拾起linux





2009/12/05 18:04
现在我也在写给exaile用歌词同步显示的插件,并且已经发布过了几个可以使用的版本,我写的插件是用窗口显示歌词的,个人感觉这样确实不太美观,希望能够借用一部分你的osd显示的代码……
另外,看了这篇文章后很有同感,现在确实有不少写歌词显示功能程序的人,大家都希望能够为linux普及添砖加瓦,但个人的力量毕竟有限,写出来的程序都存在一些遗憾的地方……
http://exaile-cn.googlecode.com/files/Screenshot-6.png
最好是有一个平台,能够把开发同类程序的人都吸引到一起,这样大家可以探讨一下技术,虽然大家使用的语言可能不同(c、python……)但是实现在技术上应该会有许多相同之处。大家相互交流一下也许会好一些,未必要都去开发同一个项目。
最后,还要提醒一下,你的lrcShow-x对exaile的dbus支持貌似适用于exaile0.2,在0.3上面貌似不能用……
我个人建议可以参考以下几个模块:搜索引擎、嵌入、dbus中间层
我觉得,真正的lrc歌词程序,最终还是窗口式的,以python-osd或者gnome-osd来打造的,只能是一个lrc显示器,不可能承载太多的功能。这里不涉及到对与错,只是项目的发展方向性问题。
对播放器支持这部分代码,我原先的基本上都已经被重写过了,现在的代码出自意大利朋友之手,这段时间在攻读学位,没有什么时间。而我自己的kde,编译exaile很麻烦,在考虑到代码的连贯性,还是待原作者自己来更新吧,如果你的实现也是通过dbus,那参考下是最好不过了。
也很高兴能够针对歌词领域进行交流。
2009/11/29 13:15
2009/11/29 10:03