维护工人于2011年11月6日,在2011年11月6日,在2011年11月6日,在2011年11月6日,在2011年11月6日,在圣格雷戈里大学的大大大学造成伤害。 信用:SUE OGROCKI / CAFFICAR BURD

我一直在做数据可视化很长时间,但帮助生产无线电表演带来了新的挑战:从数据创建有趣的声音。

在过去的几个月里,我与Producker Iks Sriskandarajah和Reporter Joe Wertz一起举行了透露的无线电故事 俄克拉荷马州的地震爆炸。俄克拉荷马州曾经每年只有一年或两次地震,人们可以感受到。与今天的对比:国家每天有一个或两个。当您的数据进行图表时,它会显示出良好的可视化,但Ike询问我们是否可以进行音频版本以将数据放入无线电件中。

在这种情况下,我们幸运的是,DataSet - 俄克拉荷马州地震 - 犹豫了一下我们需要收音机所需的戏剧。俄克拉荷马州的地震从几乎没有,稳步增加,然后从2014年开始跳下图表。

要创建我们在段中使用的地震的音频,我构建了一个名为MININIME的Python库,我希望其他人会发现有用。它公开发布 我们的github页面 和一般 pip.

欢迎来到派对

我们当然不是第一个尝试所知道的东西 数据声音.

最近Minneapolis,SRCCON的Journo-nerd会议,在数据和音频上进行了全部会议,具有很大的资源列表。

这个想法回去了 至少到1666年,当科学家罗伯特胡克试图向超级兽医塞缪尔佩默解释 他对如何确定的想法 飞的翼跳的频率。

我们如何将地震变成声音

我将项目划分为三个单独的任务:

  • 获取和解析数据。
  • 将数据转换为MIDI(乐器数字接口)。
  • 通过合成器运行MIDI文件以获得更专业的成品。

获取和解析数据

我从中下载了地震数据 ANSS全球地震的全面目录,由北加州地震数据中心维护。目录包含诸如地震,幅度,深度,纬度和经度的日期/时间,以及大多数人为地震专家感兴趣的区域。

目录返回几十年,尽管完整性减少了您走的进一步后面。

任何大小的所有Quakes的全球数据集都非常大,所以我过滤出地震以下3.0的地震,一般认为一个人可能会感受到最小的地震。我通过映射它们并使用状态边界Shapefile来选择俄克拉荷马州的地震。

由于俄克拉荷马州地震比较罕见,直到几年前,有很多地震传感齿轮,也是如此较小的地震可能没有进入目录到最近。因为我们想要随着时间的推移说明,我们需要一致的数据。

将数据转换为MIDI

重要的一步是弄清楚如何在技术上和哲学上翻译数据到声音。

我专注于两个变量:地震的日期/时间及其幅度。当我们通过时间移动时,将播放票据来代表每种地震,并且幅度越高,较大的票据。

我与我们的潜在声音设计师和工程师,Jim Briggs和其他音乐家交谈,看看计算机程序可以写入的最佳电子格式,并且很容易读取和修改的高质量音乐工具。我们降落在MIDI上,这不是技术上的音频 - 它是在一定时间内播放的备注列表,有点像电子乐谱。

我开始尝试使用音乐软件,如 Supercollider.,但我在ubuntu笔记本电脑上工作,在撞到墙上的敲击后完全失败,以获得任何Ubuntu合理的程序。我们在办公室有很多Mac,所以接下来我试过 MAXMSP.。 Max是一种可视化编程语言 - 您将和弦拖放到输入的输出中的小型图形。它可以做令人惊叹的事情,但我花了很多时间弄清楚如何做到像写一个循环和传递数据一样的简单事情,我习惯于更传统的语言做。 Max的文档使得难以弄清楚如何在有程序工作后输出有效的MIDI文件。一旦你离开试用期,马克斯也贵。所以我转过身去Python。

它总是最好看一下其他人为你的想法写了代码,那里还有很少的Python-to-midi图书馆。我最终建立了一些工具到后面 midiutil. 通过罗斯戴根。他的代码处理MIDI文件的实际生成。我只需要弄清楚玩什么和何时扮演它们。

MIDI中的笔记 最容易被认为是在钢琴上的笔记。钢琴上的最低键A0(八度音符0中的注释A)是Midi Task 21.下一个最高票据BB0是音高22.中间C,或C4是音高60.钢琴上的最高键,C8是MIDI间距108。

其余的很多都类似于制作视觉图表:我们使用乐谱而不是x或y刻度。我决定将数据映射到三个八位八页,从八十八度4开始。

(以下一些是伪代码,还有更详细的工作 在github页面上。)

我也想到,只是在上下钢琴的钥匙,钢琴钥匙有点无聊,因为包括公寓和锐利,声音不是很音乐。人类希望在钥匙中听到音乐。

我是一个像孩子一样喜欢古典音乐的钢琴课程,所以我知道不同的钥匙或模式可以与不同的情绪相关联。例如,小键往往是 有点不祥.

幸运的是,我坐在julia smith旁边,刚刚碰巧有一个有数千个音乐钥匙的数据库及他们的笔记号码。我安顿下来,因为它有点不祥,是因为它是巴赫的Toccata和Fugue的关键,因为我看到迪士尼的“幻想”作为孩子,这是我的最爱之一。

选择一个不祥的关键 - 或任何关键 - 与在地图可视化上选择颜色的编辑决策一样多。在这种情况下,在每年突然遇到数百个新地震的事实中,并没有真正的事情是一个不祥的发展,所以我在决定中感到合理。

D MINES是这些票据的规模:

[Python]
d_minor = ['d','e','f','g','a','bb','c']
[/Python]

接下来,我需要将我的地震数据映射到该规模。例如,我的数据中最大的地震,一个幅度为5.7,需要是最低的音高,D。我的数据中最小的地震是一个幅度3.0,但我似乎在视觉曲目中,这将是一个好的想法要以0开始,以避免扭曲数据。因此,幅度0将是高C.而且因为我希望我的数据分布在三个八度高,幅度为5.7是D4,并且幅度0将是C6。

所以我将每个幅度映射到刻度的位置,首先占百分比。我使用了线性刻度,但MIDICE也有一个对数选项。我也被设置为真实,因为在这种情况下,我想要我最大的价值 - 我最大的地震 - 成为我最低的注意事项:

因此,幅度为5.7是尺度的0%,或D4:

[Python]
scale_pct = mymidi.linear_scale_pct(0,5.7,5.7,true)
输出:0.0
note = mymidi.scale_to_note(scale_pct,d_minor)
产出:'D4'
[/Python]

幅度3.0将是47%的规模:

[Python]
scale_pct = mymidi.linear_scale_pct(0,5.7,3,true)
输出:0.4736842105263158
note = mymidi.scale_to_note(scale_pct,d_minor)
产出:'F5'
[/Python]

和幅度0将是尺度的100%:

[Python]
scale_pct = mymidi.linear_scale_pct(0,5.7,0,true)
输出:1.0
note = mymidi.scale_to_note(scale_pct,d_minor)
产出:'C6'
[/Python]

然后我通过辅助函数ran将注意名称转换为MIDI音调:

[Python]
midi_pitch = mymidi.note_to_midi_pitch('c6')
产出:72
[/Python]

让我们做时间再次扭曲(或者第一次也许)

既然我有投球,那么时间就是另一个技巧 - 基本上是我的另一个轴。我需要将我的数据集(10年)的跨度映射到合理的时间作为歌曲。我将我的歌曲的节奏设置为每分钟120次,或每秒2个节拍。我决定每年的数据都应该在MIDI中持续5秒钟,或者10个节拍。

要更容易处理日期,我将我的python日期对象转换为整数 自纪元以来的日子(1970年1月1日)。例如,2015年6月1日,截至纪元以来的1,6591.0天。

然后,我使用了帮助函数来计算在歌曲中应在歌曲中发生的那一刻,给出了上面的所选节奏和秒为每年秒数:

[Python]
beat = mymidi.beat(16591.0)
输出:454.24(进入歌曲3分47秒)
[/Python]

但是,我不希望我的歌曲于1970年开始,我希望它于2005年开始在我的第一个地震中。所以我在每个值中减去了第一个地震的日期,因为我创建了MIDI Notes的列表:

[Python]
在my_data中为d:
note_list.append([
beat - start_time,
midi_pitch,
100,#攻击
1#持续时间,在节拍中
])
[/Python]

在上面的片段中,还有一个攻击的地方 - 虚拟键的刻度如何 - 可用于控制卷。最后,有一个地方来设置音符的持续时间,在节拍中。在为广播节目的片段中,我使用了我刚刚概述的相同的缩放技术来修改攻击和持续时间,但我会在这篇文章中保持简单。

广播抛光

在使用上面的程序导出MIDI文件后,我将其转换为我们的声音工程师吉姆。他导入了MIDI文件 Ableton. 并通过“Bell Chords”软件仪器播放音乐。他还调整了攻击,这导致我的原始文件中的一些失真,并利用Ableton对攻击,衰减,维持和发布的更精细的控制。他还添加了一些混响。

吉姆给了我们几个版本,包括我们被称为的一个版本 刀片跑步者版本,我被爱,但一些混响效应从理解数据时分心。我们选择了一张拨回版本,以便在剧集中解释。 (幸运的是,Jim将刀片跑步者版本放在最终积分中。)

是时候牵手并谈论我们学到的东西

这是一个非常线性和文字转录数据到音乐,如果你拆除这个是有很多可能的乐趣。例如,事件不必只是单一音符 - 它可以触发和弦或旋律,甚至旋律的关键变化。例如,我也认为不同年种地震的音频样本会很有趣,然后将这些更加音乐混合。

通常,我认为数据声音的规则类似于视觉曲目 - 保持事情尽可能简单,以提高清晰度,并且不要试图立即使用太多变量。

玩得开心!

Michael Corey

迈克尔库迪是透露的高级数据编辑器。他带领一支关于使用新闻,统计和编程的工具蒸馏出大量数据集的数据记者团队。他的专业包括映射,美国墨西哥边境,科学数据和遥感。 Corey的工作已经荣获了在线新闻奖,艾美奖奖,波尔克奖,IRE奖章和其他国家奖项。他以前为Des Moines注册并毕业于德雷克大学。他是在美社资讯加利福尼亚州的埃米德维尔,办公室。