为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2023-08-22 16:21:33
我正在尝试使用 Pygame 的函数来播放正弦波sndarray.make_sound。但是,当我使用这个数组来播放它时:np.sin(2 * np.pi * np.arange(44100) * 440 / 44100).astype(np.float32)其中440是频率,44100是采样率,而是播放响亮、刺耳的噪音。这可以使用pyaudio.PyAudio(),但是我需要一些不会阻止执行的东西。方波也会发生这种情况,但它只是不播放任何内容。我正在使用channels=1formixer.pre_init和mixer.init函数。我怎样才能解决这个问题?如果有帮助的话,我正在使用 Mac。提前致谢!
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

您可以将 numpy 数组直接加载到pygame.mixer.Sound对象中play。出现刺耳声音的原因是,当混音器需要 16 位整数样本时,您可能正在向混音器发送 32 位浮点样本。如果要使用 32 位浮点数组,则必须将size混音器的 init 函数的参数设置为 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))


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1545 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信