基于Python实现音乐节奏可视化效果

 更新时间:2023年06月01日 16:06:31   作者:Python技术  
这篇文章主要为大家详细介绍了如何基于Python语言实现音乐节奏可视化效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

国外有个网友分享了他的python音乐节奏可视化方案。上方的视频就是用他的方案可视化得到的结果,大家可以欣赏一下。

歌曲节奏越强,颜色变化越绚丽。现在很多舞蹈视频制作需要背景变色,拍摄时可以用灯光布景,另一种方式可以用“色卡”,比如用上面python做出来的“色卡”做背景,我们看看剪辑效果:

开场的“这夏天”文字颜色变幻,中间天空的颜色变化,都是跟着音乐节奏走的,丰富了视频的表现力。

如果这里不用python,靠自己剪辑去卡音乐节奏和添加颜色,很容易将人劝退。

下面给大家介绍一下怎么使用这份代码。

首先安装我们所需要的依赖模块:

pip install matplotlib
pip install librosa
pip install numpy
pip install pygame

代码架构分为两个部分,一个是用于计算频谱的 AudioAnalyzer.py,一个用于渲染生成动态视频的 main.py

它是基于pygame实现的,pygame.draw.polygon(surface, color, points, width)画多边形。参数width控制颜色填充范围,默认为0,我们用一个代码设置30试一下:

import pygame
import sys
pygame.init()
 
display = pygame.display.set_mode((300, 300))
display.fill((255, 255, 255))
 
pygame.draw.polygon(display, (0, 0, 255), 
                  [(120,120), (40,160), (40,220), 
                  (200, 220), (200,160)], width=0)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

回到本案例,部分代码如下:

pygame.mixer.music.load(filename)
pygame.mixer.music.play(0)

running = True
while running:

    avg_bass = 0
    poly = []

    # ticks
    t = pygame.time.get_ticks()
    deltaTime = (t - getTicksLastFrame) / 1000.0
    getTicksLastFrame = t

首先,通过pygame加载(load)音乐文件并播放(play).

然后,通过while循环和ticks对画面中的图像进行实时渲染。

渲染的代码比较长,就是一些计算柱体长度的过程,这里就不赘述了。

如果你想要将你的音乐用这份代码进行可视化,仅需要修改main.py的第5行代码:

from AudioAnalyzer import *
import random
import colorsys

filename = "D:\桌面\m1.MP3"

如果你想优化生成的动态图像的颜色,可以修改rnd_color函数,该函数控制图形颜色的变化:

def rnd_color():
    h, s, l = random.random(), 0.5 + random.random() / 2.0, 0.4 + random.random() / 5.0
    return [int(256 * i) for i in colorsys.hls_to_rgb(h, l, s)]

如果你想修改生成的动态图像的形状,比如说去掉中间那个圆,仅需要这么改:

pygame.draw.circle(screen, circle_color, (circleX, circleY), int(radius))

将radius直接设为0,或者直接将这行代码注释掉即可:

pygame.draw.circle(screen, circle_color, (circleX, circleY), 0)

最后,我们换一首歌看看效果:

到此这篇关于基于Python实现音乐节奏可视化效果的文章就介绍到这了,更多相关Python可视化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现去除空格及tab换行符的方法

    python实现去除空格及tab换行符的方法

    这篇文章主要为大家介绍了python实现去除空格及tab换行符的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 带你了解python装饰器

    带你了解python装饰器

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里。Python中的装饰器的概念经常会让人搞得一头雾水,所以今天就好好来分析一下python中的装饰器
    2017-06-06
  • Django 响应数据response的返回源码详解

    Django 响应数据response的返回源码详解

    这篇文章主要介绍了Django 响应数据response的返回源码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 5行Python代码实现电脑永不息屏

    5行Python代码实现电脑永不息屏

    最近新来的小老弟问我,按照公司规定,电脑只有十分钟就锁屏,但是他不想让电脑在空闲十分钟后锁屏。本文为大家准备了电脑永不息屏的两种方法,感兴趣的可以了解一下
    2022-10-10
  • 使用Python进行批量操作PPT的示例详解

    使用Python进行批量操作PPT的示例详解

    将一份PPT的每一页字体、大小、是否加粗都统一,是一个常见需求,本文将使用Python实现批量操作PPT,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • 基于Python实现浪漫的弹窗祝福满屏飘字效果(附完整代码)

    基于Python实现浪漫的弹窗祝福满屏飘字效果(附完整代码)

    这篇文章主要为大家详细介绍了如何基于Python实现浪漫的弹窗祝福满屏飘字效果,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解下
    2026-01-01
  • Python的Asyncore异步Socket模块及实现端口转发的例子

    Python的Asyncore异步Socket模块及实现端口转发的例子

    asyncore模块是封装过的处理socket事件的模块,采用异步的处理方式,这里我们讲来讲解Python的Asyncore异步Socket模块及实现端口转发的例子,需要的朋友可以参考下
    2016-06-06
  • 浅谈python3打包与拆包在函数的应用详解

    浅谈python3打包与拆包在函数的应用详解

    这篇文章主要介绍了浅谈python3打包与拆包在函数的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • python3 正则表达式基础廖雪峰

    python3 正则表达式基础廖雪峰

    正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的
    2020-03-03
  • 对网站内嵌gradio应用的输入输出做审核实现详解

    对网站内嵌gradio应用的输入输出做审核实现详解

    这篇文章主要为大家介绍了对网站内嵌gradio应用的输入输出做审核实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论