Python3使用PySynth制作音乐的方法

作者:Linux 时间:2021-03-18 19:41:01 

本人虽然五音不全,但是听歌还是很喜欢的。希望能利用机器自动制作音乐,本我发现了一个比较适合入门的有趣的开源音乐生成模块 PySynth ,文我们主要讲解下如何Python3使用PySynth制作音乐。

乐理

  •  声音:物体振动产生,振动次数越多,音越高;振动次数越少,音越低

  • 可闻:人耳可以听到的声音在每秒16-2000此左右 乐音:振动规则产生,听起来高低明显

  • 噪音:振动不规则产生,听起来高低不明显

  • 音乐:将声音通过艺术形象表达人们的思想感情

  • 音阶:do、re、mi、sol、la、(do)

  • 调性:C、D、E、F、G、A、B

安装

pip3 install pysynth

示例


import pysynth
# 例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文件。

Python3使用PySynth制作音乐的方法

在Linux终端输入以下命令试听一下


[linuxidc@localhost www.linuxidc.com]$ aplay -D plughw:0,0 linuxidc.com.wav

Python3使用PySynth制作音乐的方法

试下周杰伦的晴天,bmp是67下每分钟:


import pysynth
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")

Python3使用PySynth制作音乐的方法

随机生成中国风音乐旋律


import pysynth
import numpy as np
import re
#先限定音符12356 中国风五声调式 这样听起来比较自然
notes=np.array(["c4","d4","e4","g4","a4",])
#音符时值
durations=np.array([1,2,4,-2,-4,-8])
#随机生成音符 重音穿插其中
sn=[]
for t in range(16):
n=np.random.randint(0,len(notes))
note=notes[n]+"*"
sn.append(note)
for i in range(np.random.randint(3,5)):
note0=notes[np.random.randint(0,len(notes))]
sn.append(note0)
#随机生成音符时值序列 形成长短参差变幻的节奏
dn=[]
for i in range(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制作音乐的方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.linuxidc.com/Linux/2019-09/160567.htm

标签:python,PySynth,音乐
0
投稿

猜你喜欢

  • Webpack4 使用Babel处理ES6语法的方法示例

    2023-08-30 08:12:37
  • python使用正则表达式分析网页中的图片并进行替换的方法

    2022-04-12 02:32:40
  • python flappy bird小游戏分步实现流程

    2023-10-09 10:45:41
  • 10个ASP网页制作技巧

    2007-09-24 13:12:00
  • tensorflow 使用flags定义命令行参数的方法

    2021-03-20 10:43:23
  • Mootools 1.2教程(7)——设置和获取样式表属性

    2008-11-25 13:48:00
  • go语言数据结构之前缀树Trie

    2023-08-05 18:15:50
  • 双向RNN:bidirectional_dynamic_rnn()函数的使用详解

    2022-07-26 17:42:07
  • Python调用ChatGPT API接口的用法详解

    2022-10-11 23:29:25
  • PYQT5实现控制台显示功能的方法

    2023-08-08 11:11:53
  • SQLServer2008提示评估期已过解决方案

    2024-01-22 02:01:28
  • Oracle收购TimesTen 提高数据库软件性能

    2010-07-21 13:03:00
  • Go Grpc Gateway兼容HTTP协议文档自动生成网关

    2024-05-21 10:27:16
  • 微信小程序实现点击导航标签滚动定位到对应位置

    2024-05-10 13:59:17
  • 如何在Django中使用聚合的实现示例

    2021-08-02 10:32:30
  • Python如何快速上手? 快速掌握一门新语言的方法

    2023-05-07 12:00:48
  • python实现自动整理文件

    2021-03-04 14:15:46
  • 详解Vue2 SSR 缓存 Api 数据

    2023-07-02 17:09:06
  • 在Linux系统上同时监控多个Oracle数据库表空间的方法

    2024-01-20 20:29:29
  • python实现傅里叶级数展开的实现

    2022-06-14 14:35:17
  • asp之家 网络编程 m.aspxhome.com