Python音乐可视化

我们需要知道音乐是如何组成的以及如何可视化这些部分。音乐是声音的结合。声音是我们的耳朵经常检测到的振动。振动由频率和幅度(速度和响度)定义。

可视化的最简单方法是绘制一行条。每个条形代表一个频率。音乐继续播放时,这些小节将根据频率的幅度上下移动。

Python实现

在开始编码之前,需要安装图形库和声音分析器库。

短时傅立叶变换(STFT)是一种与傅立叶相关的变换,用于确定信号局部随时间变化的正弦频率和相位含量。
hop_length是帧之间的样本数。 n_fft是每个帧中的样本数。 我发现增加n_fft时,结果变得更加准确,我将其设置为其默认值的4倍。

您还可以使用matplotlib查看STFT的结果:

您可以使用索引访问数组的值。但是我们该如何选择它的时间和频率。此代码可能会有所帮助:

我将2d数组分成多个数组,这些数组指示某些索引的时间或频率。 采样率是恒定的。 因此,我们可以在时间和索引之间创建一个比率,并在频率上创建一个比率。 然后,我们将时间和频率乘以比率,就得到了指数:

现在,我们只需要使用我在开始时就提到的“移动条”来表示它即可。

创建一个代表频率条的类:

我创建了x,y坐标,条形的频率,颜色以及其高度和分贝的范围。 我定义了高度和分贝之间的比例,以便稍后确定横条的高度。 在update()方法中,我获得了与当前分贝对应的条形的所需高度,并将条形的速度设置为增长。

在这里,我正在创建一个包含条形图的数组。我以100的步长创建了从100Hz到8000Hz的80条,并将它们添加到阵列中。

然后,您只需运行一个窗口并绘制条形图:

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值