ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用python一次播放两个正弦音

2019-07-10 09:58:08  阅读:124  来源: 互联网

标签:python audio


我正在使用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')

解决方法:

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

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')

标签:python,audio
来源: https://codeday.me/bug/20190710/1422840.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有