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中wx将图标显示在右下角的脚本代码
Mar 08 Python
python方向键控制上下左右代码
Jan 20 Python
opencv python 2D直方图的示例代码
Jul 20 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
python扫描线填充算法详解
Feb 19 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
Python3.9新特性详解
Oct 10 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
解决pytorch 模型复制的一些问题
Mar 03 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python网络编程学习笔记(一)
2014/06/09 Python
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python_LDA实现方法详解
2017/10/25 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Django web框架使用url path name详解
2019/04/29 Python
python3字符串操作总结
2019/07/24 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
财务助理岗位职责
2013/11/10 职场文书
运动会广播稿200字
2014/10/18 职场文书
药店收银员岗位职责
2015/04/07 职场文书
初三语文教学反思
2016/03/03 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL