从图论的角度来分析简单音乐的结构的构想

Standard

一段简单音乐(没有和弦,乐器相同)可以用一段时间序列上的点表示——每个点代表了一次发声,在这个点记录了在某个时间发出了怎样波形的音乐(音高,也就是频率Pitch、声音的大小,也就是响度Volumn、音符长度Duration,也就是这次发声持续的时间)。(我们用M=STime×Pitch×Volume×Duration来表示,注意这些都是集合,STime是音符开始的时间)

表示这类信息的类型)

我们喜欢听的音乐往往是极有规律又变化多端的——主要的几个旋律会穿插在整个乐曲当中,有些变化但变化不大(比如只改变了最后的几个音),也就是说有主要的几段旋律,将它们重复、排列、微调就可以产生动听的曲子。

有没有种准确的方式去表示音乐的这种相关性结构呢?如果我们可以把音乐的结构、旋律的关系表示出来,那么根据现有的人类喜爱的音乐的这些结构,就可以制造出不同的动听的音乐,在此基础上再加入和弦的元素、配上不同的乐器,就可以产生完整的音乐了!

一些音乐片段有着极强的相关性——也就是它们是在同一个旋律的基础上修改得到的;而一些片段极其不同——也许它们根本就没什么联系!找到一个合理的相关性函数\(f:Ms\times Ms\rightarrow R\)(\(Ms\)是M集合元素组成的序列,也就是音符串)去描述两个片段的相关性会很有用。

将完整的音乐分成几个连续的段,每个段仍然可以继续分成段,每个层之间的每个段都有关系,当然前提是这些段都在一个更大的段里(也就是不同大段的小段之间不判断相似性),关系紧密程度视相似度而定。如下图:(最里面的数字代表具体的音高,比如1是Do等等(其他参数例如音量、时长等等没有写出),黄色段之间每两个元素都有线,只不过没画出来(工作量太大了Orz…),连线越粗表示越相似)

一段简化过的音乐的结构

一段简化过的音乐的结构

因为大段中的1和3有很多相似的地方——同样有1、3、2,2、5、3等等,所以相似度很高,而1和2大段无论是从音符数量还是小段结构都不大相同,所以相似度不高。

有了这种音乐结构的模型,我们就可以尝试生成简单的音乐了!首先,给定整首曲子的基调(用一些信息去描述它),然后生成每个大段的基调,如此层层递进,直到最底层将具体的音符生成出来,便完工了!
这种结构使得我们可以很方便的去指定段与段之间的联系,以及曲子“感情”的变化(比如从激昂快活的风格转变为抒情的风格)

当然具体将算法实现要比本文所说的复杂得多,这也是将是我最近一直会处理的事情!

拓扑空间(Topological Space)的定义

Standard

拓扑这个词经常被我碰到,出现在各种地方:图论的拓扑排序算法、拓扑空间、拓扑学、拓扑结构、拓扑图……也经常看到书里面提到有关“拓扑”的东西,比如说欧拉给出的点数、面数、楞数的关系啦、哥尼斯堡七桥问题啦……算是对“拓扑”有一点了解。“不关心具体的属性而只关心形状的几何、很抽象的东西”这是我之前对“拓扑”的认知。 现在,我开始看《拓扑学》这本书之后,总算对“拓扑”有了一个大致的印象。

从拓扑的角度来看,一个水杯和一个“甜甜圈”是一样的(图片来自维基百科)

从拓扑的角度来看,一个水杯和一个“甜甜圈”是一样的(图片来自维基百科)

先来看看“拓扑”这个奇怪的词到底是什么——拓扑是Topo-的音译,所以想理解它的意思就一定要查Topo-这个前缀的来历!

topo-

1.

a combining form meaning “place,” “local,” used in the formation of compound words:

topography; topology.
combining form of Greek tópos place, commonplace

看来“拓扑”从希腊语tópos而来,代表地方、位置,这样就好理解了,它和空间有关系。但我们经常讲的几何(Geometry)又有什么关系呢?简而言之,几何拥有“局部”的结构,所谓局部就是拥有无穷小,而拓扑拥有全局结构。或者说,几何是连续的,而拓扑是离散。就拿上述的杯子来说,我们熟悉的几何学(在欧几里得空间内的几何学)侧重于研究它的局部——角度、长度、表面积(看起来是整体的量,但实质上是很多个面积微元的和),体积(体积微元的求和)……而从拓扑空间来看,我们就会注重研究它整体的特征——洞数、整体的连续性……实际上,我们熟悉的几何学所研究的量都是在拓扑性质的基础上定义的,也就是说拓扑性质是普通几何量的基础(没有连续性的概念我们就无法定义许多上述几何的量),因此拓扑是很抽象的。

那么,让我们看看拓扑空间究竟是怎样定义的:
一个拓扑空间是一个二元组(X,S),X是一个集合,S是由一些X的子集构成的集合,并且满足下面的性质
1.任意S的元素(X的子集)的并依然属于S.
2.有限个S的元素的交依然属于S.
3.空集和X本身属于S

通常,我们将S的元素x称之为“开集”,x在X中的补集称之为”闭集”(稍后我们会看到如果集合的元素是实数,开集就是开区间,闭集就是闭区间、如果是实数对,那么一个开区域就是开集,闭区域就是闭集)

举个例子:
另A={1,2,3,4,5,6} B={{1,2,3,4,5,6} ,{1,2,3,5,6},{1,2,3,6},{2,3,5,6},{1,3,6},{2,3,6},{2,5,6},{3,6},{2,5} ,{2} ,{5} ,∅}
那么(A,B)就是一个拓扑空间。

再举个大家熟悉的在实数轴和实数平面上的例子:

线段的交

线段的交

AB是R的一个子集,CD也是。那么(R, {AB,CD,CB,∅,R})就是一个拓扑空间

三个圆的交

三个圆的交

A、B、C是R^2的一个子集(满足不等式(x-xi)^2+(y-yi)^2<=r^2)

那么(R^2, {A,B,C,ac,ab,bc,abc,∅,R^2} )也是一个拓扑空间(注意ab是A和B的交,依此类推)

参考文献:

几何和拓扑: https://en.wikipedia.org/wiki/Geometry_and_topology

拓扑空间:https://en.wikipedia.org/wiki/Topological_space

http://dictionary.reference.com/browse/topo-?s=ts

I’m on fire!

Standard

最近除了研究数学等日常事物外,还有四个中长期的项目要搞,每个都包含了很多内容,都要花费巨量的时间,每个事情的一个阶段完成后我都会发表长篇的文章来分享一些好玩的东西:

  1. 音乐旋律分析和简单的算法作曲(最近要全力研究的,如果做出来一些东西应该会很好玩。这是要长期做的)
  2. Brain-Computer Interface(目前只能对着别人给的数据和搜的论文yy。这是要长期做的)
  3. 全球气候变暖导致海平面上升对某地海岸线的影响。(某数模题目,对Mathematica拉取地理数据的能力感到兴奋,这个小项目算是小打小闹,应该不会做很久)
  4. 生成人脸曲线(纯属娱乐!)

I’m on fire!