max/mspでpeek~使ってインデックスと数値を与えて音を生成したように、data[i]にひたすら数値を入れてあげれば音が出る訳だ...こういうのってやっぱその道の人からすれば当然で別に面白くも何ともないことなのでしょうか。
import wave, math
SAMPFREQ = 44100
LENGTH = 3
def wave_init(fileName, sampFreq):
file = wave.open(fileName, 'w')
file.setnchannels(1)
file.setsampwidth(2)
file.setframerate(sampFreq)
file.setcomptype('NONE', 'not compressed')
return file
def prepare_list(n):
data = range(n)
return data
def wave_write(out, samples):
out.writeframesraw(samples)
out.close()
def sin_wave(fileName, freq):
out = wave_init(fileName, SAMPFREQ)
samples = prepare_list(SAMPFREQ * LENGTH)
a = math.pi * 2.0 * float(freq) / float(SAMPFREQ)
for i in range(SAMPFREQ * LENGTH):
ft = int(math.sin(a * float(i)) * 30000.0)
samples[i] = ft
wave_write(out, samples)
sin_wave('newyear.wav', 2007)
ちなみにpythonで音を作るならpysndobj, pyaudioあたりが要注目です。あと、pdのエクスターナル書いたり。
0 件のコメント:
コメントを投稿