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中处理字符串之isalpha()方法的使用
May 18 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python xml解析实例详解
Nov 14 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
python 接收处理外带的参数方法
Dec 03 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
pyinstaller还原python代码过程图解
Jan 08 Python
python实现银行实战系统
Feb 26 Python
PyTorch安装与基本使用详解
Aug 31 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 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
php的控制语句
2006/10/09 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
如何进行Linux分区优化
2013/02/12 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
职业技术学校毕业生推荐信
2013/12/03 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers