python 音乐常用操作

一,python合成音乐

import json
import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import write

# 音阶频率对照表
tone_freq_map={"#g3": 1863.7, "#b3": 2348.3, "e1": 329.5, "f2": 739.5, "d1": 293.4, "#c3": 1244.0,
 "#D": 155.46175, "E": 164.745, "E1": 82.3725, "#a1": 466.0, "d2": 621.8, "d3": 1318.0,
 "c3": 1174.1, "G1": 97.93175, "C": 130.75, "#C": 138.529625, "#d1": 310.9, "e3": 1479.3,
 "#b2": 1108.2, "c2": 554.1, "a1": 439.8, "D": 146.766875, "#F1": 92.44,"b1": 493.7,
 "#F": 184.881, "D1": 73.35075, "#a2": 987.2, "#G": 207.566,"b3": 2216.5, "g3": 1759.1,
 "#D1": 77.730875, "F1": 87.276, "#c2": 587.1, "B": 246.790625, "#C1": 69.232125,
 "#f1": 369.8, "#a3": 2092.0, "#d2": 659.0, "#g2": 879.7, "#f2": 783.7, "#b1": 523.0,
 "#f3": 1660.5, "#g1": 415.0, "f3": 1567.2, "#c1": 276.9, "C1": 65.375, "A": 219.922,
 "#A1": 116.49825, "A1": 109.9608, "g2": 830.3, "F": 174.5513, "f1": 349.1, "#A": 232.9965,
 "c1": 261.5, "a2": 932.0, "a3": 1974.6, "#d3": 1396.1, "#G1": 103.750125, "g1": 391.7,
 "G": 195.928875, "B1": 123.428, "b2": 1046.0, "e2": 698.2}


def synthesizer(freq,duration,amp=1.0,sampling_freq=44100):
    ''' 合成音调 '''
    t=np.linspace(0,duration,duration*sampling_freq) # 创建时间轴
    audio=amp*np.sin(2*np.pi*freq*t)
    audio=audio.astype(np.int16)
    return audio


if __name__=='__main__':
    lengths=60

    # 生成2秒的G调
    #input_tone='G'
    #duration=12  # 单位:秒
    amplitude=10000
    sampling_freq=44100  # 单位:Hz

    # 音阶及持续时间
    #tone_seq=[('D',0.3),('G',0.6),('C',0.5),('A',0.3),('#A',0.7)]
    tone_seq=[]
    keyss=list(tone_freq_map.keys())
    keys=[]
    ind=0
    for i in range(lengths):
        try:
            keys.append(keyss[ind])
        except IndexError:
            ind=0
            keys.append(keyss[ind])
        ind+=1
    
    for i in range(lengths):
        d=np.random.choice(keys[i:i+3])
        pl=np.random.randint(2,8)/10
        tone_seq.append((d,pl))
    output=np.array([])
    for i in tone_seq:
        input_tone=i[0]
        duration=i[1]

        # 生成音阶
        synthesized_tone=synthesizer(tone_freq_map[input_tone],duration,
                                     amplitude,sampling_freq)
        output=np.append(output,synthesized_tone,axis=0)
    
    # 将生成信号写入输出文件
    write('output_tone.wav',sampling_freq,output)
    print('生成文件: output_tone.wav 成功!')

执行结果如下:

生成文件: output_tone.wav 成功!


二, 播放音乐:

使用 pygame 模块播放

进入命令行安装 pygame: pip install pygame

import pygame

"""
pygame -- 音乐 常用方法
pygame.init() 进行全部模块的初始化,
pygame.mixer.init() 或者只初始化音频部分
pygame.mixer.music.load('xx.mp3') 使用文件名作为参数载入音乐 ,音乐可以是ogg、mp3等格式。载入的音乐不会全部放到内容中,而是以流的形式播放的,即在播放的时候才会一点点从文件中读取。
pygame.mixer.music.play()播放载入的音乐。该函数立即返回,音乐播放在后台进行。
play方法还可以使用两个参数
pygame.mixer.music.play(loops=0, start=0.0) loops和start分别代表重复的次数和开始播放的位置。
pygame.mixer.music.stop() 停止播放,
pygame.mixer.music.pause() 暂停播放。
pygame.mixer.music.unpause() 取消暂停。
pygame.mixer.music.fadeout(time) 用来进行淡出,在time毫秒的时间内音量由初始值渐变为0,最后停止播放。
pygame.mixer.music.set_volume(value) 来设置播放的音量,音量value的范围为0.0到1.0。
pygame.mixer.music.get_busy() 判断是否在播放音乐,返回1为正在播放。
pygame.mixer.music.set_endevent(pygame.USEREVENT + 1) 在音乐播放完成时,用事件的方式通知用户程序,
设置当音乐播放完成时发送pygame.USEREVENT+1事件给用户程序。 pygame.mixer.music.queue(filename) 使用指定下一个要播放的音乐文件,
当前的音乐播放完成后自动开始播放指定的下一个。一次只能指定一个等待播放的音乐文件。
"""

# 初始化
pygame.mixer.init()
# 加载音乐
pygame.mixer.music.load('道德经.mp3'.encode())
# 开始播放
pygame.mixer.music.play()
# 停止播放
# pygame.mixer.music.stop()



  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以帮你解决这个问题。你可以使用Python音乐播放库来创建一个简单的音乐播放器。下面是一个使用pygame库创建的简单示例: ```python import pygame # 初始化pygame库 pygame.init() # 创建一个窗口 screen = pygame.display.set_mode((640, 480)) # 加载音乐文件 pygame.mixer.music.load("music.mp3") # 播放音乐 pygame.mixer.music.play() # 游戏主循环 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: # 退出游戏 pygame.quit() exit() ``` 这个示例使用pygame库创建了一个窗口,并加载了一个名为music.mp3的音乐文件。然后,它使用pygame.mixer.music.play()函数播放音乐。最后,它进入主循环,直到用户关闭窗口。 你可以根据自己的需要修改这个示例。例如,你可以添加一个播放和暂停按钮,或者使用Tkinter库创建一个更漂亮的用户界面。 ### 回答2: Python音乐播放器是一个使用Python编程语言开发的应用程序,它的主要功能是播放音乐文件。它可以在计算机上读取音频文件,如MP3、WAV等,并通过音频输出设备将音乐播放出来。 Python音乐播放器通常具有简单直观的用户界面,用户可以通过界面选择要播放的音乐文件、调整音量和播放进度等。它还可能具有其他功能,如创建播放列表、循环播放、随机播放等。一些高级的音乐播放器还可能支持歌词显示、频谱可视化等功能。 开发一个Python音乐播放器通常需要使用第三方库来实现音频文件的读取和播放功能。例如,Pygame是一个常用Python游戏开发库,它也可以用来播放音频文件。另外,Python还有其他一些用于音乐处理的库,如Music21和PyDub等,它们提供了更丰富的音乐处理功能,如音频合成、特效处理等。 对于开发者来说,使用Python编写音乐播放器具有很多优势。首先,Python是一种简单易学的编程语言,具有良好的可读性和易维护性。其次,Python拥有强大的第三方库生态系统,开发者可以轻松地使用现有的库来实现音乐播放器的各种功能。此外,Python还是一种跨平台的编程语言,可以在多个操作系统上运行,使得音乐播放器具有更广泛的适用性。 总之,Python音乐播放器是一种使用Python编程语言开发的应用程序,它可以在计算机上读取和播放音频文件。开发者可以利用Python的简洁易学、强大的第三方库和跨平台特性,快速开发出功能丰富的音乐播放器。 ### 回答3: Python音乐播放器是一种使用Python语言编写的应用程序,用于播放音乐文件。它利用Python的强大功能和丰富的音频处理库,能够实现音频播放、暂停、停止、快进、快退等功能。 Python音乐播放器的实现过程一般包括以下几个步骤: 1. 导入所需模块:首先需要导入Python中的相关模块,如`pygame`。 2. 选择音乐文件:通过界面或命令行让用户选择要播放的音乐文件,并获取到该文件的路径。 3. 初始化音频:通过调用相关函数,初始化音频设备,设置音频的频率和声道等参数。 4. 播放音乐:调用播放函数,传入音乐文件路径,即可开始播放音乐。 5. 控制音乐:可以通过按键或界面上的按钮来控制音乐的播放。例如可以通过按空格键来实现暂停和继续播放,通过按左右方向键实现快进和快退功能。 6. 结束播放:当音乐播放完毕或用户选择停止时,调用停止播放函数,释放音频资源。 值得注意的是,Python音乐播放器还可以添加其他附加功能,如音量调节、循环播放、单曲循环、随机播放等。可以自定义界面和交互方式,使用户体验更加丰富。 总之,Python音乐播放器是一款功能强大、灵活可扩展的应用程序,可以满足用户对音乐播放的基本需求,并且可以根据个人需求进行自定义扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值