【问题标题】:Using python to play two sine tones at once使用python同时播放两个正弦音
【发布时间】:2010-04-03 20:57:12
【问题描述】:

我正在使用 python 来播放正弦音。音调基于计算机的内部时间(以分钟为单位),但我想同时播放一个基于秒的声音,以获得和声或双重声音。

这是我目前所拥有的;有人能指出我正确的方向吗?

from struct import pack
from math import sin, pi
import time

def au_file(name, freq, dur, vol):
    fout = open(name, 'wb')
    # header needs size, encoding=2, sampling_rate=8000, channel=1
    fout.write('.snd' + pack('>5L', 24, 8*dur, 2, 8000, 1))
    factor = 2 * pi * freq/8000
    # write data
    for seg in range(8 * dur):
        # sine wave calculations
        sin_seg = sin(seg * factor)
        fout.write(pack('b', vol * 127 * sin_seg))
    fout.close()

t = time.strftime("%S", time.localtime())
ti = time.strftime("%M", time.localtime())
tis = float(t)
tis = tis * 100
tim = float(ti)
tim = tim * 100

if __name__ == '__main__':
    au_file(name='timeSound1.au', freq = tim, dur=1000, vol=1.0)

    import os
    os.startfile('timeSound1.au')

【问题讨论】:

    标签: python audio


    【解决方案1】:

    您的代码中的以下最小更改如何...:

    from struct import pack
    from math import sin, pi
    import time
    
    def au_file(name, freq, freq1, dur, vol):
        fout = open(name, 'wb')
        # header needs size, encoding=2, sampling_rate=8000, channel=1
        fout.write('.snd' + pack('>5L', 24, 8*dur, 2, 8000, 1))
        factor = 2 * pi * freq/8000
        factor1 = 2 * pi * freq1/8000
        # write data
        for seg in range(8 * dur):
            # sine wave calculations
            sin_seg = sin(seg * factor) + sin(seg * factor1)
            fout.write(pack('b', vol * 64 * sin_seg))
        fout.close()
    
    t = time.strftime("%S", time.localtime())
    ti = time.strftime("%M", time.localtime())
    tis = float(t)
    tis = tis * 100
    tim = float(ti)
    tim = tim * 100
    
    if __name__ == '__main__':
        au_file(name='timeSound2.au', freq=tim, freq1=tis, dur=1000, vol=1.0)
    
        import os
        os.startfile('timeSound2.au')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-20
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2014-10-20
      相关资源
      最近更新 更多