在Mac下喜欢播放音乐的各位巨巨应该有和某类似的经验吧,iTunes属于比较重的应用程序了,只是为了听个音乐,不需要经常CoverFlow的情况下会觉得iTunes很累赘,甚至还有人就是不喜欢iTunes。Mac下面缺少像foobar这样即强大又可定制化的音乐播放器。之前某有在Linux下使用mplayer以及mpd播放音乐,确实是很方便,可定制性也不错;然而在OSX下总想用一些比较native的程序。

Sonora
Sonora

这次就推荐一下Sonora这个OSX下原生的音乐播放程序,主要的特点呢。

  • 界面比较漂亮,直观的可以用专辑封面浏览曲库,包括播放的队列
  • 快速,因为是使用OSX的原生Cocoa,加上Core Animation来写的,自然性能棒
  • 支持许多格式,嗯,项目描述里写tons of,不过也就是一些常用的w,像是tak和ape应该还是不支持的
  • 播放队列,这个用过mpd的都知道,这个播放队列模式能够满足各种不同的播放顺序和控制需求呢
  • 另外还支持Last.fm (需要编译的时候填进Last.fm的API Key)

如何安装?

the easy way ?

嗯,某很贱,所以没试这个方式,上面给的链接应该可以直接download,估计直接双击一下就能运行了。

然后直接往后看效果吧XD

the hard way !

The hard way always makes your life much easier! – unknown

XDDDD 所以各位巨巨愿意继续看下去就是喜欢折腾的人了,

项目主页在github上面,由于项目本身是Cocoa写的,并且有不少依赖,所以按照项目里README的说法,需要安装一些依赖。不过大家可以先把Sonora的源代码clone下来作准备

这里默认大家都已经有Xcode command line tools和homebrew之类的工具

  1. mogenerator

根据Core Data生成obj-c代码的工具,在homebrew里也可以直接安装,不过某这里不知道为什么编译完运行总是报segment fault 11,所以只能选择安装二进制包了。

  1. CocoaPods

管理Cocoa lib的项目,本身是用ruby写的,其实某觉得就是个bundle+gem嘛XDDD

某这里用的ruby是rvm里面的,也不影响使用

好了,前置依赖完成后我们需要编译打包的依赖,同样有2种选择

更快的方式!

直接下载Libraries.zip,并解压到Sonora项目根目录

hard way!

这里要提醒一下,项目README里提到的前2步都只是拉取cocoapods的仓库信息,就类似于homebrew update哪样。 按照Best way里提示做准备好源代码。

这里需要提醒一下的是,如果各位巨巨和某一样是使用10.7的话,需要在Podfile里第一行那里修改一下

platform :osx, "10.7" # <= 这里加一个参数10.7,否则默认是10.6的在安装AFNetworking的时候会提示不兼容

之后还有一步,某猜测应该和SFBAudioEngine.framework源代码的发布方式有关不能包含在项目里,所以需要手工去下载音乐解码器的lib,把Frameworks解压到Sonora/External/SFBAudioEngine/下面

这里就可以看到这些lib里支持的音乐格式,基本包括了常见的

如果你有Last.fm的帐号并想使用的话,在./Sonora/Classes/SNRConstants.m里填写并保存

最后打开xcode的项目! (注意是打开Sonora.xcworkspace文件,而不是一般的xcodeproj)

解决一下项目链接的依赖

在某这里编译的时候发现好几个错误

Undefined symbols: _SCNetworkReachabilityCreateWithName
Sonora.building.failed
Sonora.building.failed

请教了Google老师后,发现是项目Linker缺少SystemConfiguration.framwork这个依赖,按照这篇文章提到的方式添加一下就好(某用的是Xcode4.5,是在项目的Summary那个标签页的Linked Frameworks and Libraries添加的),编译完成后就可以运行啦XDDDD

xcode.add.library
xcode.add.library

如果遇到什么问题的话,可以去github上各个项目的issue里提,大部分问题应该都可以得到解决的。

最后祝大家enjoy music XDDDD

__END__