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对数据库操作
Mar 28 Python
Python教程之全局变量用法
Jun 27 Python
Python实现截取PDF文件中的几页代码实例
Mar 11 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python 如何引入协程和原理分析
Nov 30 Python
python实现经纬度采样的示例代码
Dec 10 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
Python实现拼音转换
Jun 07 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
深入密码加salt原理的分析
2013/06/06 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
js实现分页功能
2017/05/24 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
webpack4 升级迁移的实现
2018/09/12 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python处理cookie详解
2014/02/07 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
南威尔士家居商店:Leekes
2016/10/25 全球购物
一套Java笔试题
2016/08/20 面试题
商务会议邀请函
2014/01/09 职场文书
2014年情人节活动方案
2014/02/16 职场文书
推荐信模板
2014/05/09 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
前台接待员岗位职责
2015/04/15 职场文书
欢迎新生标语2015
2015/07/16 职场文书
Mysql数据库group by原理详解
2022/07/07 MySQL