如何在Python3项目中利用PySynth制作音乐
如何在Python3项目中利用PySynth制作音乐?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
乐理
声音:物体振动产生,振动次数越多,音越高;振动次数越少,音越低
可闻:人耳可以听到的声音在每秒16-2000此左右 乐音:振动规则产生,听起来高低明显
噪音:振动不规则产生,听起来高低不明显
音乐:将声音通过艺术形象表达人们的思想感情
音阶:do、re、mi、sol、la、(do)
调性:C、D、E、F、G、A、B
安装
pip3 install pysynth
示例
importpysynth #例1:C大调 song1=[ ['c',4],['d',4],['e',4],['f',4],['g',4],['a',4],['b',4],['c5',2],['r',1], ['c3',4],['d3',4],['e3',4],['f3',4],['g3',4],['a3',4],['b3',4],['c4',2],['r',1], ['c1*',1],['c2*',1],['c3*',1],['c4*',1],['c5*',1],['c6*',1],['c7*',1],['c8*',1], ] pysynth.make_wav(song1,fn="linuxidc.com.wav")
在当前目录下生成linuxidc.com.wav文件。
在Linux终端输入以下命令试听一下
[linuxidc@localhostwww.linuxidc.com]$aplay-Dplughw:0,0linuxidc.com.wav
试下周杰伦的晴天,bmp是67下每分钟:
importpysynth songx=(('e3',8),('d3',8),('f3',8),('e3',4),('c3',8),('g3',8),('b3',8),('c4',8),('b3',8),('c3',8),('c3',4),('c3',8),('a3',8),('a3',8), ('r',16),('a3',16),('g3',8),('g3',4),('g3',8),('f3',8),('e3',8),('d3',8),('e3',8),('f3',8),('e3',2.25),('e3',8),('f#3',8),('g#3',8), ('e3',4),('f3',8),('g3',8),('b3',8),('d4',8),('b3',8),('c4',8),('c4',6),('c4',16),('c4',8),('g3',8),('g3',8),('a3',8),('g3',8),('f3',8), ('a2',8),('b2',8),('c3',8),('d3',8),('e3',8),('d3',3),('e3',8),('c3',2)) pysynth.make_wav(songx,bpm=67,repeat=0,fn="linuxidc.wav")
随机生成中国风音乐旋律
importpysynth importnumpyasnp importre #先限定音符12356中国风五声调式这样听起来比较自然 notes=np.array(["c4","d4","e4","g4","a4",]) #音符时值 durations=np.array([1,2,4,-2,-4,-8]) #随机生成音符重音穿插其中 sn=[] fortinrange(16): n=np.random.randint(0,len(notes)) note=notes[n]+"*" sn.append(note) foriinrange(np.random.randint(3,5)): note0=notes[np.random.randint(0,len(notes))] sn.append(note0) #随机生成音符时值序列形成长短参差变幻的节奏 dn=[] foriinrange(len(sn)): duration=durations[np.random.randint(0,len(durations))] nn=sn[i] dn.append(duration) #将音符和时值合并成旋律 melody=tuple(zip(sn,dn)) print(melody) #将乐谱合成到声音文件 pysynth.make_wav(melody,fn=r"linuxmi.com.wav") print("ok")
备注:
'song' 是一个被定义的列表或元组,格式是这样 ['音', 长度]
音符是'a','g'这些; 升半音以 '#' 表示,降半音以 'b' 表示;以octave 结束 (默认为四分音符);asterisk 在最后代表重音; 'r' 是空.
音的长度用数字表示:1=全音符; 2=二分音符; 4=四分音符, 等.
浮点音符写法:
1.33 = -2 = 二分浮点音符
2.66 = -4 = 四分浮点音符
5.33 = -8 = 八分浮点音符
一些参数:
节奏:每分钟节拍数; bpm = 95
八度转变 (neg. 降八度; pos. 升八度); transpose = 0
音符间停顿 (0. = 连音 ; 0.5 = 断音); pause = 0.05
Volume boost:音量变高 (1. = 音量无变化); boost = 1.2
Output file name 输出文件名;fn = 'pysynth_output.wav'
其他参数:
Influences the decay of harmonics over frequency. Lowering the value eliminates even more harmonics at high frequencies.
Suggested range: between 3. and 5., depending on the frequency response of speakers/headphones used
harm_max = 4.
看完上述内容,你们掌握如何在Python3项目中利用PySynth制作音乐的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...