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+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python常见字典内建函数用法示例
May 14 Python
对Python协程之异步同步的区别详解
Feb 19 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
python字符串替换re.sub()方法解析
Sep 18 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
python数字图像处理之图像的批量处理
Jun 28 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中$_SERVER的详细参数与说明
2008/07/29 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
小程序登录态管理的方法示例
2018/11/13 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
对pandas中apply函数的用法详解
2018/04/10 Python
python实现微信自动回复功能
2018/04/11 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
教师应聘个人求职信
2013/12/10 职场文书
自动化职业生涯规划书范文
2014/01/03 职场文书
大班亲子运动会方案
2014/06/10 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python