python 수기(50)

#!/usr/bin/env python  
# -*- coding: utf-8 -*-
#http://blog.csdn.net/myhaspl  
#code:[email protected] 
import wave
import pylab as pl
import numpy as np


print 'http://blog.csdn.net/myhaspl'  
print '[email protected]'  
print  
  
print 'working...' 



print "generate wav data...."
#   WAV  

fo = wave.open(r"plpl1.wav", "wb")


#       
#   
framerate = 22050
#   
nchannels=2
#    
sampwidth=2
#  
nframes =framerate
#  
freq=440
#    
max_amplitude = 4000
#     
interval=1.0/freq
#      
samplepercycle=interval*framerate#=interval/(1/framerate)

wave_data=np.zeros((nframes), dtype=np.short)


maxcycle=2*np.pi
for curpos in xrange(0,nframes):
    possamp=np.sin((curpos/samplepercycle)*maxcycle)
    sampleval=int(max_amplitude*possamp)
    wave_data[curpos]=sampleval

str_data=wave_data.tostring()








#  
freq=880
#    
max_amplitude = 2000
#     
interval=1.0/freq
#      
samplepercycle=interval*framerate#=interval/(1/framerate)

new_wave_data=np.zeros((nframes), dtype=np.short)


maxcycle=2*np.pi
for curpos in xrange(0,nframes):
    possamp=np.sin((curpos/samplepercycle)*maxcycle)
    sampleval=int(max_amplitude*possamp)
    new_wave_data[curpos]=sampleval







#     
wave_data.shape = -1, 2
wave_data = wave_data.T
new_wave_data.shape = -1, 2
new_wave_data = new_wave_data.T
time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
pl.subplot(323)
pl.plot(time, new_wave_data[0][:100])
pl.subplot(324)
pl.plot(time, new_wave_data[1][:100], c="g")
pl.xlabel("time (seconds)")
#    
new_wave_data+=wave_data




#     

time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
pl.subplot(321)
pl.plot(time, wave_data[0][:100])
pl.subplot(322)
pl.plot(time, wave_data[1][:100], c="g")
pl.xlabel("time (seconds)")

time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
pl.subplot(325)
pl.plot(time, new_wave_data[0][:100])
pl.subplot(326)
pl.plot(time, new_wave_data[1][:100], c="g")
pl.xlabel("time (seconds)")
#       
print "save new wav files...."
new_str_data=new_wave_data.tostring()
fo.setnchannels(nchannels)
fo.setframerate(framerate)
fo.setsampwidth(sampwidth)
fo.setnframes(nframes)

fo.writeframes(new_str_data)
fo.close()

본 블 로그 의 모든 내용 은 오리지널 이 므 로 서면 허가 없 이 어떠한 형식의 전재 도 엄금한다.
http://blog.csdn.net/u010255642
python 에서 소 리 를 내 는 사인 파 와 중첩
>>> runfile(r'K:\book_prog\audio_hy.py', wdir=r'K:\book_prog') http://blog.csdn.net/myhaspl [email protected] working... generate wav data.... save new wav files....
python手记(50)_第1张图片

좋은 웹페이지 즐겨찾기