我有一个非常奇怪的问题,我设法像这样尽可能地减少了这个问题:
import sounddevice
import time
class SamplerBox:
def __init__(self):
self.samples = {}
def audio_callback(self, outdata, frame_count, time_info, status):
print('ac')
def init(self):
self.connect_audio_output()
self.load_samples()
time.sleep(20)
def connect_audio_output(self):
try:
sd = sounddevice.OutputStream(callback=self.audio_callback)
sd.start()
print('Opened audio device')
except:
print('Invalid audio device')
exit(1)
def load_samples(self):
for midinote in range(128):
for velocity in range(128):
self.samples[midinote, velocity] = Sound()
class Sound:
def __init__(self):
pass
sb = SamplerBox()
sb.init()
一旦我创建了那个大的self.samples
字典,并且只创建了一个带有空回调的新音频流,我就得到了"Bus Error 10"和Python3.11.
在使用Python3.9时,我得到的是"非法指令4"
在我的原始脚本中(这里减少了),我得到了"分段错误11"
我在MacOS 10.15.7上运行的是Homebrew Python3.11.
更糟糕的是,100:
import sounddevice
import time
samples = {}
class Sound:
def __init__(self):
pass
def audio_callback(self, outdata, frame_count, time_info, status):
print('ac')
try:
sd = sounddevice.OutputStream(callback=audio_callback)
sd.start()
print('Opened audio device')
except:
print('Invalid audio device')
exit(1)
for midinote in range(128):
for velocity in range(128):
samples[midinote, velocity] = Sound()
time.sleep(20)
有什么主意吗?