gpt4 book ai didi

python - 通过pygame.sndarray播放正弦波时出错

转载 作者:行者123 更新时间:2023-12-02 23:51:07 38 4
gpt4 key购买 nike

我目前想编写一个小应用程序来操纵声音。
我的主要目标是将PS3 Controller 连接到Raspberry Pi并可以通过模拟棒播放和修改声音。这只是预览,为什么我要执行以下操作。

我编写了以下代码以创建正弦波并将其写入numpy数组。

import math, numpy
import pygame

pygame.init()
#>>> (6, 0)

SAMPLERATE = 44100

def tone(freq=1000,volume=16000,length=1):
num_steps = length*SAMPLERATE
s = []
for n in range(num_steps):
value = int(math.sin(n * freq * (6.28318/SAMPLERATE) * length)*volume)
s.append( [value,value] )
x_arr = numpy.array(s)
return x_arr

pygame.sndarray.make_sound(tone())

如果现在要运行它,则会出现以下错误:
Traceback (most recent call last):
File "", line 19, in <module>
File "/usr/lib/python3.4/site-packages/pygame/sndarray.py", line 131, in make_sound
return numpysnd.make_sound (array)
File "/usr/lib/python3.4/site-packages/pygame/_numpysndarray.py", line 75, in make_sound
return mixer.Sound (array=array)
ValueError: Unsupported integer size 8

但是我真的不明白错误在哪里。

最佳答案

pygame.sndarray.make_sound似乎仅支持某些整数类型,例如int8:

import numpy
import pygame

pygame.init()
#>>> (6, 0)

wave = numpy.array([[1,1], [2,2], [3,3]], dtype="int64") # default
pygame.sndarray.make_sound(wave)
#>>> Traceback (most recent call last):
#>>> File "", line 8, in <module>
#>>> File "/usr/lib/python3.4/site-packages/pygame/sndarray.py", line 131, in make_sound
#>>> return numpysnd.make_sound (array)
#>>> File "/usr/lib/python3.4/site-packages/pygame/_numpysndarray.py", line 75, in make_sound
#>>> return mixer.Sound (array=array)
#>>> ValueError: Unsupported integer size 8
wave = numpy.array([[1,1], [2,2], [3,3]], dtype="int8")
pygame.sndarray.make_sound(wave)
#>>> <Sound object at 0x7f6adfd395d0>
请注意, int8可以存储的最大整数仅为127。

关于python - 通过pygame.sndarray播放正弦波时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195775/

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