我正在玩PyAudio试图制作一些微音乐,但似乎无法开始。我在程序中使用核心音频时找到了这段代码: http://code.activestate.com/recipes/578301-platform-independent-1khz-pure-audio-sinewave-gene/ 我做了一些小调整:
import time
import pyaudio
# Open the stream
stream=pyaudio.PyAudio().open(format=pyaudio.paInt8,channels=1,rate=24000,output=True)
# Amount of time for wave to be played in seconds
length = 1
# Now generate the 1KHz signal at the speakers/headphone output
# Sine wave, to 8 bit depth
start = time.clock()
while time.clock() - start <= length:
stream.write("\x00\x30\x5a\x76\x7f\x76\x5a\x30\x00\xd0\xa6\x8a\x80\x8a\xa6\xd0")
# Close the open _channel(s)_
stream.close()
pyaudio.PyAudio().terminate()
根据我的理解,十六进制转义是发送到音频输出的原始音频。我把它们放入十六进制转换器并绘制了它们的值。它当然看起来像一个罪恶的浪潮,但我仍然没有接近直观的理解正在发生的事情。我最终的目标是编写一个函数,该函数可以输出一系列十六进制转义中的任何给定频率以写入流。一个字节串中包含多少个样本,它们代表什么值(即,什么值表示全音量时正弦波的波峰,波谷和静止状态)?