假设我有一首歌,它在我耳机的两个扬声器上播放。我想用pyAudio编写一个代码,这样我只在扬声器上得到输出。就像那些演示左右检查的videos。在
我回答了this问题,但我不认为这能解决我的问题。另外,由于我是一个新成员,我不能对此发表评论,以作进一步澄清。在
我试图从上面的关联问题中实现一个解决方案,但它没有给我正确的答案。这是实现。在
from struct import pack
from math import sin, pi
import wave
import random
RATE=44100
## GENERATE MONO FILE ##
wv = wave.open('music.wav', 'w')
wv.setparams((1, 2, RATE, 0, 'NONE', 'not compressed'))
maxVol=2**15-1.0 #maximum amplitude
wvData=bytes()
for i in range(0, RATE*3):
# print(type(pack('h', int(maxVol*sin(i*500/RATE)))))
wvData+=pack('h', int(maxVol*sin(i*500.0/RATE))) #500Hz
wv.writeframes(wvData)
wv.close()
我得到了一个3秒的剪辑包含噪音作为输出,这是不期望的。实际输出应该只在一个通道上播放音频,可以是左声道,也可以是右声道。在
wv.setparams((1, 2, RATE, 0, 'NONE', 'not compressed'))
创建一个单波文件。这意味着左声道和右声道是相同的(事实上,左声道和右声道并不只是声道)。在要使声音只在一边,你需要一个立体声文件与两个通道。见these examples。将0写入任一通道,使该侧“静音”。在
我举一个例子来说明如何在两边之间实现渐变:
还要注意,
sin()
函数的参数是弧度的,因此您必须将该值乘以2pi。错过这一步就是听到噪音的原因。在相关问题 更多 >
编程相关推荐