设为首页 加入收藏

TOP

Python3使用PySynth制作音乐
2019-09-14 00:50:50 】 浏览:99
Tags:Python3 使用 PySynth 制作 音乐

安装


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],
]


 Python3使用PySynth制作音乐


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


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.


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇wxPython制作跑monkey工具(Python.. 下一篇NumPy对数组的操作:创建、计算、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目