留言板 留言板

Mathematica中的音乐可视化

单击图像放大。使用浏览器后退按钮进一步阅读。


在此处输入图像描述

在圣诞节假期里,我终于找到了一些时间来测试一下我想了一会儿的东西:创建音乐的抽象可视化。这些东西是众所周知的,并且内置在许多音乐播放器中,但我自己从未尝试过。如果你想知道它背后的故事,你可以读我的关于家庭录音的博客帖子.

我所做的是将MP3导入Mathematica并使用音频本地测量提取歌曲的频率和响度。

audio=导入[文件];meas=AudioLocalMeasurements[audio,{“MFCC”,“Loudness”},关联,分区粒度->数量[1./30.,“秒”]];

这有两个时间序列并可以提取歌曲每个时间点的值。MFCC是一个数字列表,表示特定频率的强度。响度是一个单一的数字,给出了该部分的估计响度。

为了形象化,我使用了一个参数绘图它使用频率强度作为以圆形方式绘制的简单三角和的因子。圆形结构的大小受响度的影响,此外,它随时间缓慢旋转。为了给图着色,我使用了距原点的距离,并使用了Mathematica的一种配色方案。下面的大部分功能是设置选项,以创建具有固定打印范围、纵横比等的打印,并将其转换为具有固定分辨率的稍微模糊的图像。

(*如果您想要全高清,请更改下面的行*)分辨率={19201080}/10;比率=除以@@分辨率;使用[{mfcc=meas[“mfcc”],响度=重缩放[meas[”响度“]]},gr[time_?NumericQ]:=使用[{f=mfcc[时间],l=响度[时间]},块[{img,t},其中[{s=Sum[4f[i]]*Sin[(i+3)*t],{i,Length[f]}},img=参数图[(s+2l+.1){Cos[t+.2时间],Sin[t+.2time]},{t,0,2Pi},PlotRange->{{-2,2}*比率,{-2,2}},PlotRangeClipping->True,PlotRangePadding->无,PlotStyle->指令[厚度[0008]],轴->假,ColorFunction->函数[{x,y,u},ColorData[“彩虹”,范数[{x、y}]],颜色函数缩放->假,背景->黑色,纵横比->1/比];高斯滤波器[光栅化[img,图像大小->分辨率],第一个[分辨率]/400。]]]]]克【250】

这是t=250s的帧的外观

在此处输入图像描述

至少可以说,这很不寻常,但我们还没有完全做完。让它更有趣的一个简单技巧是折叠帧,以便旧帧在每个后续图像中留下痕迹。具体来说,我模糊了旧的框架,放大了它,并将其裁剪回原来的大小。然后,它被添加到当前帧中,在使用之前,我为旧帧赋予更高的权重图像调整重新缩放所有像素值。这使得一切都变得五彩缤纷、模糊不清,而放大的图像给人的印象是,我们似乎要在太空中前进。

tstart=100;文件夹列表[图像调整[图像裁剪[图像大小[5高斯滤波器[#1,第一个[分辨率]/100.],缩放[22/20]],分辨率]+gr[第2位]] &,   gr[tstart],范围[tstart,tstart+100]]

在此处输入图像描述

现在,上述内容用于每1/30秒创建一个帧,然后将其导出为图像。创建完所有帧后,我使用ffmpeg格式,我在我的网页上概述了更多细节。这是最终结果的视频我希望你喜欢。

在此处输入图像描述

2个回复
排序依据:

看起来真是太棒了,帕特里克!我相信很多人会发现这对在youtube上发布歌曲很有用

在此处输入图像描述-恭喜你!此帖子现在是员工挑选以徽章为标志您的个人资料! 谢谢你,继续努力,并考虑为笔记本存档!

发布人:仲裁小组
对此讨论的答复
可以使用标记语法.
回复预览
附件
删除
放弃

组摘要 组摘要