wxpython绘制音频效果


Posted in Python onNovember 18, 2019

本文实例为大家分享了wxpython绘制音频的具体代码,供大家参考,具体内容如下

#-*- coding: utf-8 -*-
 
################################################################################
## 使用wxPython的绘图模块wxPyPlot,需要数据可视化的时候,无需再借用其他的库或模块了
################################################################################
import numpy as np
import wx
import wx.lib.plot as wxPyPlot # 导入绘图模块,并命名为wxPyPlot
import wave
import pylab as pl
# 需要把数据封装进入MyDataObject中
def MyDataObject():
 # 50 个点的sin函数,用蓝色圆点表示
 data1 = 2.*np.pi*np.arange(100)/100.
 data1.shape = (50, 2)
 data1[:, 1] = np.sin(data1[:, 0])
 print ("debug:", data1.shape)
 markers = wxPyPlot.PolyMarker(data1, legend='Green Markers', colour='blue', marker='circle', size=1)
 # 50个点的cos函数,用红色表示
 data2 = 2.*np.pi*np.arange(100)/100.
 data2.shape = (50, 2)
 print ("debug: data2", len(data2))
 data2[:, 1] = np.cos(data2[:, 0])
 lines = wxPyPlot.PolySpline(data2, legend='Red Line', colour='red')
 GraphTitle = "Plot Data(Sin and Cos)"
 
 return wxPyPlot.PlotGraphics([markers, lines], GraphTitle, "X Axis", "Y Axis")
# 解析wav数据
def MyWavData(wav_filename=""):
 print('working')
 # 打开wav文档
 file = wave.open("mic4.wav", "r")
 # 读取格式信息
 # (nchannels, sampwidth,framerate, nframes, comptype, compname)
 params = file.getparams()
 nchannels, sampwidth, framerate, nframes = params[:4]
 print (nchannels, sampwidth, framerate, nframes)
 # 读取波形数据
 str_data = file.readframes(nframes)
 # 文件使用完毕,关闭文件
 file.close()
 # 将波形数据装换成数组
 wave_data = np.fromstring(str_data, dtype=np.short)
 wave_data.shape = (-1, 2)
 wave_data = wave_data.T # 矩阵转置
 time = np.arange(0, nframes) * (1.0 / framerate)
 # print ("debug: time:", len(time))
 # print ("debug: wave_data:", len(wave_data[0][0:len(time)]))
 # print ("debug: time:", time)
 # print ("debug: wave:", wave_data)
 time_and_wav = np.asarray([time, wave_data[0][0:len(time)]]).T
 print ("debug: len of time and wav: ", len(time_and_wav))
 print ("debug: time and wav: ", time_and_wav.shape)
 lines = wxPyPlot.PolySpline(time_and_wav, legend='Blue Line', colour='blue')
 GraphTitle = "the freq of wav file"
 return wxPyPlot.PlotGraphics([lines, ], GraphTitle, "time/s", "fre/Hz")
class TestFrame1(wx.Frame):
 def __init__(self, parent=None, id=wx.ID_ANY, title="Using wxPyPlot"):
  wx.Frame.__init__(self, parent, id, title, size=(800, 600))
  # 创建菜单栏
  self.mainmenu = wx.MenuBar()
  # 创建菜单
  menu = wx.Menu()
  menu.Append(100, 'Draw1', 'Draw plots1')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw1, id=100)
  menu.Append(200, 'Draw_wav', 'Draw wav')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw_wav, id=200)
  # 添加菜单到菜单栏
  self.mainmenu.Append(menu, '&Plot')
  # 设置菜单Bar
  self.SetMenuBar(self.mainmenu)
  # 创建状态栏,显示信息
  self.CreateStatusBar(2)
  self.pc = wxPyPlot.PlotCanvas(self) # 此处导入绘图面板
 
 def OnPlotDraw1(self, event):    # 绘图函数
  self.pc.Draw(MyDataObject())
 def OnPlotDraw_wav(self, event):
  self.pc.Draw(MyWavData())
def main():
 app = wx.App()
 # MyWavData()
 tf = TestFrame1()
 tf.Show()
 app.MainLoop()
# 测试wxPyPlot的代码
if __name__ == '__main__':
 main()

wxpython绘制音频效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现从百度API获取天气的方法
Mar 11 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
Python遍历numpy数组的实例
Apr 04 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
在ipython notebook中使用argparse方式
Apr 20 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
keras 多gpu并行运行案例
Jun 10 Python
Python之matplotlib绘制饼图
Apr 13 Python
python导入不同目录下的自定义模块过程解析
Nov 18 #Python
解决django model修改添加字段报错的问题
Nov 18 #Python
python sorted方法和列表使用解析
Nov 18 #Python
在Django中实现添加user到group并查看
Nov 18 #Python
Django继承自带user表并重写的例子
Nov 18 #Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 #Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
You might like
模仿OSO的论坛(二)
2006/10/09 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
PHP自定义错误用法示例
2016/09/28 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
python 捕获shell脚本的输出结果实例
2017/01/04 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
AOP的定义以及作用
2013/09/08 面试题
工程管理专业毕业生自荐信
2014/01/24 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
小学班级特色活动方案
2014/08/31 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
员工表扬信怎么写
2015/05/05 职场文书
雷锋电影观后感
2015/06/10 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
python中的被动信息搜集
2021/04/29 Python