[For Fun] 在流媒体音乐时代「逆流而上」

世界其实挺魔幻的。

这几年每每会兴致大发,就会回想起接触国外音乐(那大概是小学六年级)以来流媒体发展的魔幻现实。我的印象中各大平台互撕版权已经足有五六年了。网易当初是靠丰富的欧美/日韩流行音乐+小众流派资源+社区模式成型的;后来这套模式被各方学去了。直到(我印象中)大概 17 年的时候,各家的流媒体音乐模式都基本成型了。(除了网易还在作死建设社交功能,结果后来很失败给砍掉了很多东西)  然后就开始转向拿版权吸引用户的这种奇怪的竞争模式。直到今天网易还是没有杰伦和五月天;不过暂且不谈这个。

网易一大好处是当初的时候音乐资源就有很多靠用户贡献的成分(直到今天也有),这就给海盗党带来了绝佳的机会。各种小众的专辑直接盗传+开放下载,讲实话人人都想就这么薅点羊毛。但是后期网易云版权化之后事情变得更加魔幻:

这样的情况其实很多。比如 MONO 只有一张新专的版权网易没拿到版权,灰了一张挺尴尬的。

所以在 18 年左右我就开始想办法自己做主……毕竟还是有很多喜欢的音乐……偶尔还想当当海盗……(笑)

暂且不谈这些历史,进入正题:

在流媒体时代建构本地音乐体系


写在前面:

毕竟前一阵子 Darkmp3 也整个没了,这里我就不大谈特谈怎么当海盗了,虽然经验挺丰富的……(笑)

有些站其实不错,比如 2cycd,还有各类百度云搜索,还有各个音乐茶会啥的……(到此为止)

其实做了海盗也挺抱歉。不过就现实而言,[0] 最主要的是我的音乐消费能力很低(就是说我没钱)[1] 一部分专辑国内没法买到实体, BC 不开放,Amazon Music 很贵,代购太不现实 [2] 很多小众专辑甚至没地方买电子音乐,那我也没办法(摊手)

有条件还是会去 BC | Amazon | etc. 买的,咱也明白当艺术家有多难。


Part I 获取音乐资源

我们还是从歌荒谈起。我自己就经常歌荒。

要是你听华语,那华语方面挺简单,社交媒体上到处都是新消息,随便找新歌(各大视频站+各大音乐平台+微博微信)。

要是你听 Anisong | OST | 影视相关,那也不用我介绍。

类似的还挺多的。

所以我们把目标放在小众流派。

第一是有挺多电台(比如「主唱死了」「细声电台」),可以去听,里面会推。

第二是关注各个独立厂牌。

还有各个音乐杂志,比如后摇领域 EDopamine 就在做)。

如果你常去各种音乐节 or Livehouse 的话可以认识不少乐队,照着听就行。

然后还有几个网络平台,比如 AllMusic. LastFM.

我常用的是 BC ,也就是 Bandcamp .

BC 有挺多有趣的地方的,比如音乐人发布专辑的时候可以设定「最低费用」,支付 ≥ 这个数值的费用就可以获得专辑。甚至可以 0 元获取,上面的图片就是一个例子。这是音乐人自己设定的,也就是所谓官方渠道,不算白嫖。

而且购买后你可以无限制获取低品质 MP3 到很高品质 AIFF (一首大约 100-200 MiB)范围的各种格式的整专辑打包下载。下载之后就是传统的音乐格式,没有加密。每个音乐文件的信息填的还可以,主要是准确。

这个平台主要是日本+欧美那边的独立音乐人或小厂牌在用,入驻的音乐家很多,流派也从电子音乐到各种摇滚到新古典都有。

下载歌曲除了 BC 还有 Amazon (这个指的不是 Amazon Music 那个流媒体服务),我也在用,这也是国际「大平台」了(笑)

(其实主要是美亚和日亚)

下载是 MP3 320K (大部分是 320K(小声)),没有加密。

还有就是 iTunes Store 了,老传统的平台了(这个指的也不是 Apple Music 那个流媒体服务),可惜我没用过,也不打算去搞清楚怎么用。不管他了。

Tidal 和 Qubuz 我也不太用……我记得好像 Tidal 不怎么开放下载。YT Music 就不说了……

Part II 桌面端音乐软件

Mac OS:

推荐 iTunes.

Windows:

推荐 iTunes | MusicBee 

Linux:

他们说 Rythmbox (就 Ubuntu 自带那个)或者 Banshee 都不错,我没用过,我不知道.jpg


以下正文:

先说结论:这两个软件对歌词支持都很一般,远不如在线音乐平台那些播放器。

但这是我能挑出的唯一的缺点。在线音乐播放器也就只有这一个优点。

MusicBee 我很久之前用过一小会,就不管它了。功能和 iTunes 差不多,很多地方甚至更好。虽然我不用,但我首推这个。

* MusicBee 能播放 FLAC , 但 iTunes 不能

* 我不喜欢 FLAC , 我更喜欢 AIFF. (个人原因:我用 iPod ,它也不支持 FLAC )

* FLAC 也是可以嵌入专辑图片和歌词的。具体方法……略

这玩意大概这样子:

它在 18 年之后 GUI 和交互逻辑取了 iTunes 的一些好的地方,除去了 iT 一些很非人类的逻辑,现在来说各方面相当漂亮。

再来谈谈 iT 。我平常就用它了。

添加到资料库的专辑可以按添加时间排序。

专辑选中之后可以看细节。甚至可以分光盘:

歌曲界面。有各种筛选器和排序方式,很灵活:

然后就是我最喜欢的歌曲信息 / 专辑封面 / 歌词编辑系统。支持编辑的都是直接写文件。当然,上面推的每个合格的播放器都有这个。

添加这信息图啥?好看吗?不,其实……

这智能播放列表也很强。还有搜索系统,不过合格的播放器都有。

上面这些功能 MBee 和 iT 都有,还有很多没提到的。这文章就不做软件说明书了……

 

个人来说,一直在用网易的时候没觉得网易的播放器不称心,也没觉得自己需要更高级的播放管理方式。

但是现在已经回不去了……不知道为什么。觉得网易缺功能,交互逻辑很粗暴很不灵活。

网易或 QQ 音乐做的播放功能都挺烦的。比如我有很多专辑都想整张听,我要么每张都做一个列表(这样只会加在播放列表的最后边,这很烦,我想马上能点进我最近添加的专辑)或者收藏,然后再找。我只想很省心的安排好我下一小时听的歌,太难了。

搜索的时候能不能只在我收藏 | 拥有| 听过的音乐内容之内,用(歌曲|专辑|歌手|流派|发行年份)匹配我的文本,然后不要把这些内容分页显示?  每次搜歌都好烦的。这是致命一击。

对了,网易 | QQ 没有对每首曲子自定义流派分类的功能,也没有基于播放次数 / 最近播放的播放整理(笑)这是致命一击。

  • P.S. 歌曲信息获取

可以去 BC , 或者 Discogs。其实直接 Google 这个专辑就会获得很多信息。

就这样。

Part III 移动端音乐软件

iOS 就直接买个 Apple Music 吧。这样可以和 iTunes 同步(可以插入电脑同步,直接自动过去),Apple Music 还有 iCloud 资料库的功能,可以把你的音乐文件(无论是什么)上传到 Apple iCloud 服务器(不占用你的 iC 空间,这些文件最多 2T),然后各个设备可以流媒体式播放你上传的内容。

Android 只推荐 Musicolet。这玩意功能和 MBee / iT 一样全。排序方式甚至更多。而且 GUI 很漂亮。

多的是支持多播放列表 / 倍速 / A-B Loop 的功能。还有记忆播放位置、歌词界面不息屏等等贴心的小功能。

我这三四个月用网易的时间不超过 1h,主要是歌荒了也上去找找歌。

不使用小众软件就来了什么优越感,但是网易播放就那样子(摊手)

而且我不用网易也没少什么有趣的东西。反而少了广告、小红点和傻子评论

以上。

GNAQ 的模板重建计划

以前很多板子都是陆陆续续写的,也没有统一代码风格,有些还不全了。这次统一重新写一下,把这篇博客导出 pdf ,然后使用价格昂贵的彩印。

最后发现还是 LaTeX + TOC 比较舒适。这里就记录一下吧。


从并查集开始吧。

并查集 | 2020年10月25日23点51分

朴素线段树 | 2020年10月26日20点07分

朴素 FFT | 2020年11月7日22点13分

gcd 和 exgcd | 2020年11月7日22点13分 | 有数学部分

快速排序 | 2020年11月9日11点35分

Splay – 无区间反转 | 2020年12月18日21点30分

FHQ_Treap 维护集合 | 2021年3月6日22点20分

无旋 Treap | 2021年3月6日22点34分

 

随笔想念

傍晚了,太阳慢慢地落下去,校园逐渐空旷。十七中,年代略显悠久的建筑和新修建的建筑散乱地混合在一起。又是秋天了,悠远的天空被丝雾般带状的云彩占满了一半。这种并非想象中的那种,棉花糖触感般厚实的夏云,而是线条硬朗的云,容易在鼻腔里唤起秋天的气味。校园后侧是一片空旷的场地,三面被高耸的铁丝网围了起来,夕阳就是从菱形的间隙透出光芒,将那一侧的天空染黄。对面几棵树叶转黄的树在风中摇摆,上面的天空星星已经隐约可见。透过铁丝网可以对这侧城市留下一个大致的印象,九十年代破旧的居民楼杂乱地分布着,窗户上积攒了灰尘,墙皮半剥落,偶尔从哪个窗户冒出一阵生活气息的水汽来。学校周围就分布着很多这样的居民楼。阳夏推着小车走到水泥地中央,却停住了。低下头,脚下还可以看见模糊的白线,可能以前,这里是作停车场吧。

密集的城市的一角,充满了市井嘈杂的街区,还能找到这种安静的地方,阳夏还是很开心。不过秋天了,慢慢觉得以前的回忆都飞过来,扑入她的胸口。

秋天是等待的季节,阳夏总觉得她在等待着什么。她总觉得以前,她就像是怀着使命待发的少年,随时就可能在某个晴天或雨天乘上到火车站的大巴,拖着笨重的行李坐在火车上打个盹,然后在赛场上见到很多很多像自己一样的少年,多到她要认真地记住他们的名字,甚至有时候望着少年们奔忙的人流,思考自己是怎样来到脚下这片地方。也有时候阳夏只是随着心中的激动迈开脚步,匆匆地去拥抱自己看到的这一切。

每次坐着大巴回到十七中,她都要重新认识一次这个城市。忙碌的人群,夜晚老旧居民楼窗户上透出昏黄的灯光,同样暗黄的路灯照亮的旧公路,整个城市很安静。看到熟悉却心爱的风景,她又变成了那个少年,怀着使命感,准备随时从这个地方出发,又要穿越夜色,去和其他少年们聚在一起。

但其实她心底明白城市的这一角很熟悉。夏末还有残热的时候,仍然可以在短袖外面披一件薄薄的风衣,敞开怀在路上踏步。放学晚归,虽然街道上一个人也没有,路灯、楼房、红砖人行道也都是冷冰冰的,但是走过去却感觉很温暖,是从心底滋生的暖意。她明白只需要在这儿慢慢地走,并且准备好,有那么一刻会跑着去到远方。

于是她离开,离开好多次;她没有细想的是,虽然她是去往远方,还有使命和向往,但是她从来都觉得自己不久就能回到这里,然后,偶尔地,期待下一次出发。

可能有时候,心怀这样感情的阳夏,在十七中度过每个傍晚的时候,去思考对未来那些光芒的期待,去准备好奔跑着离开、回来,总是比远赴赛场有趣得多。

可能正是因为,向往的感情都洒在了十七中的傍晚,洒在了这空无一人的旧停车场,透过高铁丝网对夕阳和旧楼的凝视当中,所以现在的她,每每想到向往、想到奔赴未来的征程,思绪总会回到这片地方,回到秋天,眼角收拢旧居民楼老玻璃窗上那残存的一丝蒸汽,鼻腔留下落叶和半天空星星的味道。

她不是总在准备着什么,但她的记忆里,那段为了上赛场并笑着回来的时间里,她确实是。

渐渐地过去几年,生活繁忙起来,天天的准备却总成了应对,那些向往的时间溜走了。

偶尔地,会听到一段旋律,这时阳夏又想起为了那些而等待的秋天,首先闯入脑海的却不是赛场上那些生动的故事,而是这段闲适而静美的时间。因为眼里都是向往,连眼前的景色,无论高铁丝网还是旧楼都染上同样的色彩。想起同样的风景,她并非思乡,但祈望重回那段时间。当时的感情那么纯粹,还没有被纷乱的任务搅乱。

所以在这场梦里她还是站在了这里。心里涌起过去的使命感。但这只是习惯所致,并没有什么赛场真的等在她面前,等着让她接近过去。这种不调和的矛盾让她不舒服了,眼角慢慢湿润……

秋风慢慢吹过去,太阳依旧温暖,云也不动,露出一半天空的星星,底下还有城市的轮廓。

 

Codeforces #677 Div.3 七题题解

A | B | C

过于傻逼。放个代码,估计连代码都没人看(摊手)

D | Districts Connection

是个构造题。

不同团块内部不能连,判断是否能构造生成树 (MST) 并输出方案。

考虑最经典的树——菊花图。我们强行选择第一个团块第一个点。让它和其他不同团块的所有点都连一条边。

这样只有一号团块没在生成树里。我们拿出二号团块的第一个点把一号团块除第一个点都连一遍。OK

所以团块数 \leqslant 2 即可。不然无解。

E | Two Round Dances

经典圆排列裸题。这里要分成等份的两部分。

让原题的输入是 N ,我们记 n \xlongequal{\mathrm{def}} \frac{N}{2}

我们就直接拿出圆排列公式:

Q_{n}^{r}=\frac{A_{n}^{r}}{r}=\frac{n!}{r\cdot \left( n-r \right) !}

证明就无所谓了,百度百科就有(直球),或者 Polya 直接推。

代公式 ,OK。

F | Zero Remainder Sum

总的来说这玩意类似一个背包。

一开始被那个 \lfloor \frac{m}{2} \rfloor 搞到怀疑人生。一直在找这条件有什么结论。

不过显然没有(摊手)其实你任给一个 lim 这题都能做。

设计状态 dp[i=当前行数][j=已选个数][k=当前行选 j 个且 mod K 余数为 k]

然后可以背包 – like 地转移。

然后最后把每行看成一个整体继续背包。完了。复杂度达到了惊人的 \mathcal{O}(n^4)

G | Reducing Delivery Cost

先对全图跑最短路, \mathcal{O}(n^2 \log n)

然后枚举边,把边权设为 0 之后统计答案。

总复杂度 \mathcal{O}(n^2 \log n)

我跑的就尼玛很慢,估计是 STL 的问题(大嘘)。

 

Codeforces #676 Div.2 五题题解

A XORwice

答案是 a \oplus b 。证明:显然。

B Putting Bricks in the Wall

由于只能左右上下动,结果就是限定移动的砖块只有 (1,2) \quad (2,1) \quad (n,n-1) \quad (n-1, n)

然后就 if 一下分情况讨论就可以了。代码如下:

C Palindromifier

是这样构造的:

然后就没了。代码:

D Hexagons

首先可以贪心地证明一定是只选择两个方向走最优。

选的话一共 12 种组合,挨个判断一下,然后更新答案。

粉兔の怒:

 

 

 

 

 

 

 

 

代码:

E

还没补,咕着先。

AtCoder ARC100 四题题解

花了够长时间终于把这四题搞完了。其实前三题也就写了 2h (虽然中间横跨一周多),最后一题水平太低,写了 3h 多……

直接放题解

C | Linear Approximation

容易发现取中位数是对的,证明 ez ,考虑将 b 的取点左右移动直到跨过一些点,然后对比总和的变化。

D | Equal Cut

orz Leader One

队友切掉的。

要是切两刀大概是 sb 题,三刀就有些微妙。

解法只能向特殊的方向考虑,考虑一个 \mathcal{O}(n \log n) 的做法:

枚举中间的那刀切在哪里,之后显然将左右两半各自(尽可能)平分才是最优的。

于是写个二分就可以了。注意这个「尽可能」带来的坑比较多。

E | Or Plus Max

三个人口胡好久,中道崩殂不会做后半部分,看了题解……

首先考虑如果我们把问题转化为计算 \max {A_i + A_j} \quad \mathrm{where} \quad i \lor j = K   那么最后只需要一发前缀和就可以有答案。

计算这个并不容易,我们考虑 DP。

对于每个值 x ,我们称 y \subseteq x 当且仅当二进制 ory or x == x 。

对于每个 x 我们建立一个集合 S_x 记录 \forall y \subseteq xa_y 的前两大值。

那么就可以轻松的算出 \max\{A_i + A_j\} \quad \mathrm{where} \quad i \lor j = K   。

考虑如何更新 S_x 。其实只要从小到大枚举 x 然后从 y \subseteq x 并且 y 的二进制 1 的个数只比 x1y  更新 S_x 即可。

这样的 DP 转移是完全的,至于为什么可以思考一下。写起来也挺好写。

F | Colorful Sequences

直接抄题解好了,再补充点细节。

这问题正面求确实不好求。于是我们先计算 A 在所有的 S_N (不管是不是 Colorful)中出现的数量,然后减去非 Colorful 的即可。

然后总数显然是 (N-M+1) \times K^{N-M} ,先算出来。之后的主要矛盾变为计算 A 在所有不多彩的 S_N 中出现的数量。下面的「答案」指的都是这个。

先考虑如果 A 本身是多彩的,那么答案是 0。显然。

如果 A 不是多彩的,有两种情况。我们先来考虑一个基础问题:

计算出长度为 N 的非多彩序列

这个显然可以 DP。我们设 dp[i][j] 是考虑了序列前 i 个位置,最后 j 个位置的值各不相同,但最后 j+1 个位置的值至少有一对相同的序列数。当然,\forall S_i \in S_N \, , \,  1 \leqslant S_i \leqslant K

稍加思考, DP 是这样转移的:

dp[i][j] = dp[i-1][j-1] * (K-j+1) + dp[i-1][j ... K]

后缀和维护一下做到 \mathcal{O}(NK),OK。

那么不多彩的 A 的第一种情况是 A 中无重复元素。这时候只要算出这样的问题即可:

对于每个不多彩的 S_N ,计算这个 S_N 中连续的长为 M 的元素互不重复的子序列数量,之后求和。

这样就将 A 从问题中移去了。但是显然这样会多数,多了恰好 \frac{K!}{(K-M!)} 倍,除掉就可以获得答案了。

那么如何计算呢?方法就类似上面那个 DP,只不过需要稍加修改

就可以顺利算出答案了。

对于第二种情况—— A 中有重复元素,我们计算出 FB 表示起头 F 和结尾 B 个元素是最长不重复的。

之后我们先枚举 AS_N 中的位置,再从两端出发,计算同上一个问题相似的问题(不过 M 换成了 F/B),然后两端乘起来就可以了。

这部分(我能想到的)实现其实挺复杂,具体可以看代码。

以上。