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实现的简单抽奖系统实例
May 22 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Python rstrip()方法实例详解
Nov 11 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
python 的topk算法实例
Apr 02 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
python 调用Google翻译接口的方法
Dec 09 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中常见的sql攻击正则表达式汇总
2014/11/06 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
培养自己的php编码规范
2015/09/28 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python cumsum函数的具体使用
2019/07/29 Python
python实现图片横向和纵向拼接
2020/03/05 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
客户经理岗位职责
2013/12/08 职场文书
八年级音乐教学反思
2014/01/09 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
人大代表选举标语
2014/10/07 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
债务追讨律师函
2015/06/24 职场文书
Python 如何安装Selenium
2021/05/06 Python