blender工程_黑格尔的逆向工程:音乐是流动的建筑?

“建筑是凝固的音乐”一说应该最早是记载于艾克曼《歌德谈话录》中,黑格尔辩证地补全了下半句——就像工程与逆向工程一样辩证。

从古到今建筑-音乐的关系,或者说空间-时间的关系,引发了无数人的遐想,里面应该包括了Joy Division的那张著名专辑Unknown Pleasures的封面,

blender工程_黑格尔的逆向工程:音乐是流动的建筑?_第1张图片

这是脉冲星cp1919(人类发现的首颗脉冲星)的脉冲波形观测记录,设计者 Peter Saville 把基于时间的 变量在空间(至少看起来是三维的)中呈现出来,跟着音乐一起成了经典。这是把时间凝固成空间的一个例子。
我的想法是(参考黑格尔的辩证思维)做一个逆向工程,就是把空间流动成为时间。

我们都知道傅里叶变换(fourier transform)是一个把时域转换为频域的过程,对我来说像是把时间“铺平”了,看看上面的图案,但这个“图案”其实有三个维度:时间、频率和各个频率对应的振幅。

blender工程_黑格尔的逆向工程:音乐是流动的建筑?_第2张图片

一段音频进行傅里叶变换得到的图案

下面是原音频(我自己的曲子哈哈):

如果把三维空间的数据转换为上面对应的三个维度的数据,再经过一个“逆傅里叶变换”的过程,就能实现把空间流动成为时间的目标了。

思路很简单,但是实现的过程实在是太难了!有很多细节,而我也没有找到好的参考,一些问题困扰了我好久,到现在终于有一点能看的结果,但还是不够满意,sigh~还是怪自己技术太差吧

开始设想是用Puredata里的[rifft~]来实现,看着名字多粗暴简单(就是实数逆傅里叶变换的缩写),但深究下来还涉及到复杂的奇偶问题,看文档和例子这个[rifft~]一般只能和[rfft~]配合使用,加之pd里面列表数据流实在是不好操作,所以不成。

我发现了一些基于图像生成声音的项目比如https://github.com/alexadam/img-encode,很多人称之为“把图像加密为声音”,用的就是逆傅里叶变换的原理,看了一些Max/msp关于这方面的教程,原理其实就是创建一系列频率从低到高的正弦波信号,图像相应位置像素的RGB值转换为对应频率正弦波的振幅,而这一系列振幅是随时间变化的(按顺序扫描图像的像素列),这样三个维度就对应上了。

blender工程_黑格尔的逆向工程:音乐是流动的建筑?_第3张图片

Encode得到的声音,进行傅里叶变换就可以看出原来的图像

参考这个原理,我也尝试在puredata中创建n个正弦波[osc~],频率从低到高,然后在blender中用sverchok(参数化addon,类似 grashopper in Rhino),设置一个随时间移动的扫描面来切割三维模型(其实是一个曲面),在切割得到的曲线上等距取n个点的z坐标,希望把这一些列z坐标转换成pd中对应频率正弦波的振幅。

但在两个程序间数据的传输把我难住了,本来本能地想用OSC协议,因为我之前捣鼓了很久就是为了这个:

Puredata-Vanilla收发OSC信息的方法

但是sverchok里的数据好像没有办法传到blender的NodeOSC那里,只能用udp来发送,对于二进制的udp字符串处理,puredata显得无能为力(大神应该有办法,终归是我技术差),我只好抛弃了pd,转向基于python的pyo(一个数字信号处理模块),借助python的字符串处理能力,我终于可以从udp消息中提取出需要的数据了。

但接下来又有另一个问题,为了实时接收blender通过udp传来的数据,需要在python中写一个无限循环,而这个循环会阻塞后面pyo创建正弦波信号,所以我考虑使用协程进行异步处理(全是新学的玩意),奈何asyncio太难懂了(我太笨了),而且因为比较新(python3.5开始引入),网上好像例子不多,试了好久,头也晕了,我感觉耗不起。最后只好用了个妥协的办法就是把pyo的Sine()正弦波信号创建函数也一起写进那个无限loop里面,这就造成每次循环都要重新创建一次信号,会产生一个pulse杂音,只能通过调试让它“好听”点,但没法去掉了。

下面是成果:

好吧,我已经尽力了fc02e9db2018252ec1538407e4fc78fb.png

如果有更好的办法和建议,欢迎留言指导,谢谢~

p.s.

Python的pyo模块真的很不错,有DSP所有的常用工具(pd/supercollider基本那些的东西应该都能实现吧),能结合python其它的强大模块,而且带了一个挺好用的IDE,还有非常方便查找的文档,但是用的人真的很少,比pd都要少得多,所以我在此感谢开发者ajaxsoundstudio,希望感兴趣的人也来试一试:

https://github.com/belangeo/pyo

http://ajaxsoundstudio.com/software/pyo/

除了pyo他们还开发了一些别的关于声音的工具,那个Soundgrain我也玩过,很好玩,文末阅读原文可进入他们颇有幽默感的主页


题图鸣谢:Jude Beck on Unsplash


我是Feihei,玩电脑玩音乐的设计师。在这里我会分享一些想法和学习记录。

FDZ全称Feihei's Digital Zero,或“发电站”,起这个名字是为了向Kraftwerk致敬。我的音频作品目前都以FDZ的名义发表,欢迎来听:

在网易云、虾米、QQ音乐、酷我、酷狗、百度等主要音乐平台搜索音乐人”FDZ“即可收听,另外豆瓣上有音乐人小站:site.douban.com/fdz,中国大陆以外地区可使用bandcamp收听:f-d-z.bandcamp.com

你可能感兴趣的:(blender工程)