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实现查询IP地址所在地
Mar 29 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python读取Excel表格文件的方法
Sep 02 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python计算auc的方法
Sep 09 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
python实现定时发送邮件
Dec 23 Python
深入理解pytorch库的dockerfile
Jun 10 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 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
Prototype String对象 学习
2009/07/19 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
社团2014年植树节活动总结
2014/03/11 职场文书
教师党员公开承诺书
2014/03/25 职场文书
文明寝室标语
2014/06/13 职场文书
大学迎新标语
2014/06/26 职场文书
党性心得体会
2014/09/03 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
SQL Server使用导出向导功能
2022/04/08 SQL Server