Как я могу сгенерировать ноту или аккорд в Python? - PullRequest
3 голосов
/ 03 марта 2011

Может кто-нибудь указать мне хорошую библиотеку для создания нот и аккордов в Python 2.7?Я посмотрел PythonInfoWiki без особой удачи, PyAudio просто падает, и больше ничего не генерирует тоны.

1 Ответ

6 голосов
/ 03 марта 2011

Я не знаю, поможет ли это, но вот код, который синтезирует сложный звук на основе частот и амплитуд:

import math
import wave
import struct

def synthComplex(freq=[440],coef=[1], datasize=10000, fname="test.wav"):
    frate = 44100.00  
    amp=8000.0 
    sine_list=[]
    for x in range(datasize):
        samp = 0
        for k in range(len(freq)):
            samp = samp + coef[k] * math.sin(2*math.pi*freq[k]*(x/frate))
        sine_list.append(samp)
    wav_file=wave.open(fname,"w")
    nchannels = 1
    sampwidth = 2
    framerate = int(frate)
    nframes=datasize
    comptype= "NONE"
    compname= "not compressed"
    wav_file.setparams((nchannels, sampwidth, framerate, nframes, comptype, compname))
    for s in sine_list:
        wav_file.writeframes(struct.pack('h', int(s*amp/2)))
    wav_file.close()

synthComplex([440,880,1200], [0.4,0.3,0.1], 30000, "tone.wav")

Это код, который я использую для генерации нот и аккордовв питоне.У вас должен быть список частот для первого параметра, список амплитуд (такой же размер, как у первого), количество выборок и имя файла.Будет сгенерирован wav-файл с заданной комбинацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...