gpt4 book ai didi

python - 如何使用 Pygame 播放正弦波/方波?

转载 作者:行者123 更新时间:2023-12-04 01:13:53 24 4
gpt4 key购买 nike

我正在尝试使用 Pygame 的 sndarray.make_sound 函数播放正弦波。但是,当我使用这个数组播放它时:

np.sin(2 * np.pi * np.arange(44100) * 440/44100).astype(np.float32)

其中 440 是频率,44100 是采样率,播放的是响亮、刺耳的噪音。这可以使用 pyaudio.PyAudio(),但是我需要一些不会阻止执行的东西。方波也会发生这种情况,但是它只是不播放任何东西。我正在为 mixer.pre_initmixer.init 函数使用 channels=1

我该如何解决这个问题?如果有帮助,我正在使用 Mac。提前致谢!

最佳答案

您可以将 numpy 数组直接加载到 pygame.mixer.Sound对象和 play它。出现刺耳的声音是因为您可能正在向混音器发送 32 位浮点样本,而它期望 16 位整数样本。如果要使用 32 位 float 数组,则必须将混音器的 init 函数的 size 参数设置为 32:

import pygame
import numpy as np

pygame.mixer.init(size=32)

buffer = np.sin(2 * np.pi * np.arange(44100) * 440 / 44100).astype(np.float32)
sound = pygame.mixer.Sound(buffer)

sound.play(0)
pygame.time.wait(int(sound.get_length() * 1000))

关于python - 如何使用 Pygame 播放正弦波/方波?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63980583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com