プログラムでゼロから信号を作成する必要があるプロジェクトに取り組んでいます。信号は配列に格納され、各要素がサンプルになります。44.1 kHz で再生する必要があります。プロジェクトの他の側面により、これを達成するために pygame を使用しています。Pygame には、Sound オブジェクトを numpy 配列から作成し、wav ファイルのように再生できる機能があります。pygame.mixer を初期化するときに、周波数を 44100 Hz に設定しましたが、Sound オブジェクトは約 10 kHz で再生されています。
これは pygame のエラーですか、それとも特定のレートで配列をプレイするために何か他のことをする必要がありますか?
def test_script(t):
bin_sig[0:8] = throttle(t)
bin_sig[8:28] = restofsignal()
bin_sig[28:32] = checksum(bin_sig)
print bin_sig
sig = create_audiosig(bin_sig)*60
pygame.mixer.init(44100,-16,1,2**16)
num_ary = numpy.array(sig)
plt.plot(num_ary)
plt.savefig('generated_signal.jpg')
if (sys.argv[1] == 'on'):
s = pygame.sndarray.make_sound(num_ary)
s.play()
plt.show()
返された信号のプロット
長さ 6835 のパルスが 60 個あります。44.1 kHz で再生すると、9.3 秒かかります。ただし、37.2 秒 (11020 Hz) かかっています。
コードをもっと見る必要がある場合は、ここで見つけることができます