import wave
import struct
import mathdef write_frame(time,freq,framerate,file,wave=0.4,sampwidth=2):#time 持续时间 freq 音频频率 framerate采样频率 file 音频文件 wave 音量 sampwidth 采样深度t=0#时刻step=1.0/framerate #每帧间隔时长fw=2.0*math.pi*freq #频率控制参数wave=wave*(math.pow(2,sampwidth*8-1)-1)#音量控制while t<=time:v=int(math.sin(t*fw)*wave)#对波采样  math.sin(t*fw)产生freq频率的正弦波t+=step#更新时刻#最后这里是与sampwidth的值有关的,下面语句当前仅当sampwidth=2时成立,详细信息参考struct.pack()file.writeframesraw(struct.pack("h",v))#写入文件  struct.pack("h",v)将有符号整数v转化成16比特2进制tw=wave.open("./two_tigers.wav","w") #打开或创建./two_tigers.wav
tw.setnchannels(1) #设置声道数 1
tw.setframerate(8000)#设置帧率 8000
tw.setsampwidth(2)#设置采样宽度2B 16bit#写入声音
#1 2 3 1 1 2 3 1
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=288, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=288, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)#3 4 5 - 3 4 5 -
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=341.33, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=0, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=341.33, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=0, framerate=8000, file=tw, wave=0.4, sampwidth=2)#56 54 3 1 - 56 54 3 1 -
write_frame(time=0.25, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=426.67, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=341.33, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=426.67, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=384, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=341.33, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=320, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=0, framerate=8000, file=tw, wave=0.4, sampwidth=2)#2 6(低音) 1 - 2 6(低音) 1 -
write_frame(time=0.5, freq=288, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=144, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.25, freq=0, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=288, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=144, framerate=8000, file=tw, wave=0.4, sampwidth=2)
write_frame(time=0.5, freq=256, framerate=8000, file=tw, wave=0.4, sampwidth=2)tw.close()# C 1 do 256
# D 2 re 288
# E 3 mi 320
# F 4 fa 341又1/3
# G 5 so 384
# A 6 la 426又2/3
# B 7 si 480
# C 1 (上面一个点)do 512
# C:D=8:9
# D:E=9:10
# E:F=15:16
# F:G=8;9
# G:A=9:10
# A:B=15:16

参考

https://blog.csdn.net/Moluth/article/details/79793903

python写 两只老虎.wav 音频文件相关推荐

  1. python 常量_大疆机甲大师Python开发: 两只老虎

    大疆机甲大师演奏<两只老虎>https://www.zhihu.com/video/1168271599123320832 之前大疆机甲大师Python开发: 中文命名变量初尝试说到跳过了 ...

  2. 大疆机甲大师Python开发: 两只老虎

    大疆机甲大师教育机器人Python开发: 演奏<两只老虎> 之前大疆机甲大师Python开发: 中文命名变量初尝试说到跳过了"固件更新",今天打算试试,看到固件更新说明 ...

  3. python播放wav文件_python3 写一个WAV音频文件播放器的代码

    环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...

  4. python音频频谱_Python 读取WAV音频文件 画频谱的实例

    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...

  5. python音频频谱_Python读取WAV音频文件 画频谱的方法

    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...

  6. Python 读取WAV音频文件 画频谱

    import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav f ...

  7. Python“制作”midi音乐“两只老虎”

    从网上找了很多谱子,可惜没有音乐细胞看不太懂,根据自己的理解改了好几遍,还是听不出来"两只老虎"的感觉,于是在标题上加了双引号.这样的话就只能了解本文思路了,算是抛砖引玉吧,重点是 ...

  8. 用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式

    用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式 import os, subprocessfor d,sd,files in os.walk('.'):for ...

  9. python切割音频文件_python切割和合并wav音频文件

    切割wav音频文件 如果没有pydub需要使用pip install pydub来安装模块 from pydub import AudioSegment from pydub.utils import ...

  10. 使用python绘制wav 音频文件频谱图

    1.wav 文件需要是Windows PCM 格式(未压缩),请参考 2.python 库的安装: pip install pyaudio(可能会用到) pip install matplotlib( ...

最新文章

  1. devServer proxy跨域 设置代理 proxy
  2. 螃蟹不能吃的四个部位,爱吃螃蟹的一定要进来看看。
  3. oracle 状态unknown,Oracle RAC 一个节点的instance资源状态为unknown
  4. Linux上压缩目录以及目录下的所有文件
  5. MongoDB启动报错
  6. 不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...
  7. Vector:动态数组的使用和说明
  8. css盒子模型_说说css盒子模型
  9. scatter函数_散点图、箱线图、核密度函数……数据分析必备的9种可视化图表
  10. mac系统虚拟机上的Linux系统的使用说明
  11. python面向对象编程指南 脚本之家_python对象及面向对象技术详解
  12. caffe+GAN︱PPGN生成模型5则官方案例(caffe版)
  13. 数据采集:如何自动化采集数据?
  14. 奥图码投影连接服务器没信号,奥图码投影机常见故障维修步骤
  15. asp.net入门教程
  16. 软件破解逆向安全(十二)内存特征码
  17. 幂指函数求导公式——备忘
  18. 微信开放平台修改微信分享的小图标后,移动端显示的分享的小图标未改变的问题解决
  19. 域名到期查询如何查看?有什么新方法吗?
  20. 台式机的无线网卡连接wifi,能连上但丢包严重,无法上网

热门文章

  1. 关于U盘中“文件夹EXE病毒”的解决方案
  2. DSP之定时器理论笔记
  3. mac下面如何修改只读文件
  4. zznu 2054 : 油田
  5. 聊一聊微服务之间的通讯方式
  6. 单片机MCU学习方法总结
  7. python爬虫:lxml爬取链家网二手房信息
  8. stack容器—C++笔记
  9. 简单剖析B树(B-Tree)与B+树
  10. 微信如何群发消息给所有人?