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利用beautifulSoup实现爬虫
Sep 29 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
python 垃圾收集机制的实例详解
Aug 20 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Django组件之cookie与session的使用方法
Jan 10 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Python小白不正确的使用类变量实例
May 29 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
opencv检测动态物体的实现
Jul 21 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
屏蔽相应键盘按钮操作
2014/03/10 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python实现用户登录系统
2016/05/21 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
用python爬取租房网站信息的代码
2018/12/14 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
大学生职业规划论文
2014/01/11 职场文书
司机辞职报告范文
2014/01/20 职场文书
学校安全教育制度
2014/01/31 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
活动倡议书范文
2014/05/13 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
红歌会主持词
2015/07/02 职场文书
社会实践心得体会范文
2016/01/14 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
Java使用jmeter进行压力测试
2021/07/09 Java/Android