python手记(50)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#http://blog.csdn.net/myhaspl
#code:myhaspl@qq.com
import wave
import pylab as pl
import numpy as np print 'http://blog.csdn.net/myhaspl'
print 'myhaspl@qq.com'
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
myhaspl@qq.com
working...
generate wav data....
save new wav files....
python手记(50)的更多相关文章
- Python的50个模块,满足你各种需要
Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其 ...
- python手记(46)
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:myhaspl@qq.com ...
- python手记(26)
#!/usr/bin/env python import cv2 import sys fn="test2.jpg" if __name__ == '__main__': prin ...
- python手记(32)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...
- python手记(30)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test3.png" ...
- python手记(31)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...
- python手记(38)
runfile(r'K:\testpro\testopencv.py', wdir=r'K:\testpro') http://blog.csdn.net/myhaspl myhaspl@qq.com ...
- python手记(39)
#!/usr/bin/env python #-*- coding: utf-8 -*- #code:myhaspl@qq.com import cv2 import numpy as np fn=& ...
- python手记(45)
python 声音编辑,减少音量 #!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:m ...
随机推荐
- HDU 4638-Group(线段树+离线处理)
题意: 给n个编号,m个查询每个查询l,r,求下标区间[l,r]中能分成标号连续的组数(一组内的标号是连续的) 分析: 我们认为初始,每个标号为一个组(线段树维护区间组数),从左向右扫序列,当前标号, ...
- Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(一)
var bdots = "../" var sequence = [ 'l1', 'l2', 'l3', 'l4' ]; Chapter1是个总览,引出了射影几何的概念,通过在欧式 ...
- javascript 继承、命名空间实现分享
命名空间是用来组织和重用代码的编译单元,在大型项目开发中javascript使用的越来越多时,我们就应该将项目里的js类库管理起来,如何将自己进行归类管理,防止命名冲突,但是Javascript默认不 ...
- 3D 矩阵旋转
如图,需要将点(向量) v(x, y, 0) 绕 z 轴旋转角度 θ,求旋转后的点(向量) v'(x', y', 0). 大概思路: 1. 将 v(x, y, 0) 分解, v(x, y, 0) = ...
- 基于MFC和opencv的FFT
在网上折腾了一阵子,终于把这个程序写好了,程序是基于MFC的,图像显示的部分和获取图像的像素点是用到了opencv的一些函数,不过FFT算法没有用opencv的(呵呵,老师不让),网上的二维的FFT程 ...
- Hadoop2.0新特性-持续追加【干货】
1.NAME NODE HA 2.NAME NODE Federation 3.HDFS 快照(目录快照) 4.HDFS 缓存 5.HDFS ACL 6.异构层级存储结构 -------------- ...
- Fast Intro To Java Programming (2)
Java局部变量 局部变量声明在方法.构造方法或者语句块中: 局部变量在方法.构造方法.或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁: 访问修饰符不能用于局部变量: 局部变量只在声明它 ...
- 自动化运维工具ansible-如何设置客户端多python版本问题
问题:在使用ansible进行管理客户主机时,发现客户主机安装了多个版本的python,并且默认版本为3.0 shell>>cat list 192.168.2.9 shell>&g ...
- CodeForces 567A Gerald is into Art
http://codeforces.com/problemset/problem/567/A A. Lineland Mail time limit per test 3 seconds memory ...
- [iOS UI进阶 - 3.1] 触摸事件的传递
A.事件的产生和传递 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发 ...