Использование python для воспроизведения двух синусоидальных сигналов одновременно - PullRequest
4 голосов
/ 04 апреля 2010

Я использую 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')

1 Ответ

1 голос
/ 04 апреля 2010

А как насчет следующих минимальных изменений в вашем коде ...:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...