Good good study, day day up

aleung的学习笔记, aleung的idea

‘I Love’ audio player

下载的mp3越来越多之后,总想怎样才能将喜欢的与不太喜欢的区分出来呢。渐渐的有一个想法,就是在播放的时候统计自己的喜好。基本思路其实跟以前想过的”什么时候电视机可以变得聪明一些”差不多。

下面就设想一下这个音乐播放器应该是怎样的:如果觉得一首歌不好听/不想听,就跳过它放下一首。如果觉得特别喜欢,可以投一票。根据用户的动作,可以统计出对歌曲的喜爱程度。歌曲全都是随机播放,越是喜欢的歌曲播放出来的机会会越大,但是其它歌曲也会偶然播放出来,不会永远埋没起来。原本喜欢的听多了后也许会有点腻,没关系,不想听就跳过好了,播放器会不断”学习”你的喜好。只要曲库里有足够多的歌曲,总能保证听到的大部分都是喜欢的歌曲。

假设要开发这样一个软件,就叫它”I love”吧,将它的功能用user story描述出来,应该有这些(还可能增加好多):

title description priority
播放MP3 能够播放mp3格式的音频文件 最高
播放WMV 能够播放wmv格式的音频文件 最低
Copy profile 将现有的profile copy成一个新的profile
Switch profile 在软件中可以存在很多个profile,但只能有一个profile生效。所有对喜爱值的操作都是对当前profile进行的。用户选择一个profile,将这个profile设置成为当前active的profile。切换profile时不停止当前歌曲的播放。
I like it 当歌曲正在播放时,用户按下”I love”按钮,将这首歌的喜爱度增加一个数值,如果同一首歌,用户再次按下,忽略这个操作
Don’t like it, next 当歌曲正在播放时,用户按下”I don’t like it”按钮,停止播放这首歌,并且将这首歌的喜爱度减少一个数值。然后 随机播放下一首歌
歌曲播放结束 如果歌曲播放到结尾,并且在这个过程中用户没有按下过”I like it”按钮,将这首歌的喜爱度增加一个数值。然后 随机播放下一首歌
随机播放一首歌(shuffle) profile是保存了所有歌曲信息的一组数据,每首歌曲都有一个喜爱度的值。从profile中按照喜爱度加权来随机的挑选一首歌来播放,歌曲的喜爱度越高,被选中的概率越大。 最高
暂停/继续 当用户按下”暂停/播放”按钮,暂停当前歌曲的播放;再按一次,从上次暂停的地方继续播放。
Rename profile
程序启动 选择最后一次使用的profile,如果配置为”启动立即播放”,随机播放一首歌
显示歌曲信息 显示当前播放歌曲的信息,包括歌名、专辑、艺人等
off-line media library 将off-line媒体库(例如光盘)的曲目也加入profile中,同步的时候按照喜爱度加权的原则随机copy一部分曲目到硬盘中,换掉旧的一些。 最低

只要把播放mp3、shuffle、don’t like it、播放结束这四个user story实现了,基本就能用了;再将优先级为”中”也实现了,设想的目标就基本都能达到。

整个播放器的界面将会非常简洁:三个按钮:喜欢/不喜欢/暂停或继续,不喜欢(下一首)的按钮应该是最大的;音量控制;正在播放的歌曲显示。切换profile放在菜单里面。这些按钮都必须能够用键盘快捷键控制。

不过,我只是想想而已,真的去写这样一个软件的可能性微乎其微。媒体播放、用户界面这些都是我不熟悉的东西。不知道是不是已经有类似功能的软件?如果有就太好了。

这样的播放器其实更适合用硬件实现,上面这些user story可以完完全全在随身听上实现。不过,软件还有可能自己写,要自己做硬件的门槛就高多了。现在市面的mp3品种多得眼花缭乱,大部分功能都是一个样,有创意的厂商非常少。写下自己的想法后,上网查了一下,发现apple ipod shuffle和sony的walkman A系列有类似的功能,但从介绍来看都没有完全满足我的要求,不知道用起来怎样。在我看来,以下两点是最重要的:

第一是歌曲的喜爱度必须是在播放过程中日积月累的更新,而不是通过什么操作界面来评级。对于用户,只有最简单直接的操作:喜欢,按一下(可别要进什么菜单);不喜欢,跳下一首。我认为甚至不应该提供任何机会给用户直接更改喜爱度。

第二是需要有profile切换,在不同环境、不同心情下喜欢的音乐是不一样的,有了profile功能就可以独立累计喜爱度。Profile也可以用来区分不同的使用者。

也许过不了多久就会有这样的产品出现了,到时是不是要考虑买一个呢? :)

Update 2012-7-5: 这样的产品真的有了,不过不是本地播放器,而是在线播放,就是豆瓣电台