做了半天做的都是一些细枝末节的东西,嗨呀。

伴奏旋律是Ukulele和弦,MIDI发音乐器是Guitar。在弹唱的时候,Ukulele和弦就是伴奏。

我们以创建《成都》伴奏为例:

节奏型:

和弦:

那么节奏型和和弦的组合可以视为一个二元矩阵,下面写一个函数用来寻址:

 from mingus.core import *
from mingus.containers import *
from mingus.midi.midi_file_out import * def chord_mixer(chord,rhythm,basic_type=(3,4)):
b=Bar('C',basic_type)
if chord == 'C' and rhythm == '34_1':
b.place_notes(['G-4','C-5'],8)
b.place_notes('C-4',8)
b.place_notes('E-4',8)
b.place_notes('C-5',8)
b.place_notes('E-4',8)
b.place_notes('C-4',8)
elif chord == 'Em' and rhythm == '34_1':
b.place_notes(['G-4','B-4'],8)
b.place_notes('E-4',8)
b.place_notes('G-4',8)
b.place_notes('B-5',8)
b.place_notes('G-4',8)
b.place_notes('E-4',8)
elif chord == 'F' and rhythm == '34_1':
b.place_notes(['A-4','A-4'],8)
b.place_notes('C-4',8)
b.place_notes('E#-4',8)
b.place_notes('A-4',8)
b.place_notes('E#-4',8)
b.place_notes('C-4',8)
elif chord == 'G' and rhythm == '34_1':
b.place_notes(['G-4','B-4'],8)
b.place_notes('D-4',8)
b.place_notes('G-4',8)
b.place_notes('B-4',8)
b.place_notes('G-4',8)
b.place_notes('D-4',8)
... return b

接下来我们新建一个音轨串联和弦:

 b=[chord_mixer('C','34_1'),chord_mixer('Em','34_1'),chord_mixer('F','34_1'),chord_mixer('G','34_1'),chord_mixer('C','34_1'),chord_mixer('Em','34_1'),chord_mixer('F','34_1'),chord_mixer('G','34_1'),]
t=Track(Guitar())
for i in b:
t.add_bar(i)

最后输出:

 write_Track('test.mid',t,bpm=80)

这样就生成了伴奏旋律。

下一篇开始讲网络核心。

【Python图像特征的音乐序列生成】生成伴奏旋律(附部分代码)的更多相关文章

  1. 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件

    这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...

  2. 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用

    jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...

  3. 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据

    数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...

  4. 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型

    mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...

  5. 【Python图像特征的音乐序列生成】关于音乐生成的思路转变

    在前几天的讨论会上,有师兄指出原来的方法实在是很难训练,所以我改进了音乐生成的思路. 首先,我用LSTM生成的一定是一段音乐的序列化表达,那么我就可以用成型的一些数据集去训练LSTM.为了避免生成的音 ...

  6. 【Python图像特征的音乐序列生成】第一阶段的任务分配

    从即日起到7月20号,项目成员进行了第一次任务分配. 赵同学A.岳同学.周同学,负责了图像数据的情感数据集制作,他们根据自己的经验,对图像进行了情绪提取. 赵同学B全权负责向量映射这一块的网络搭建. ...

  7. 【Python图像特征的音乐序列生成】关于小样本的一些思考

    我之前就注意到,深度学习和音乐结合,尤其是从乐理出发进行结合(而不是纯粹的进行音乐生成),是一个尚未被深度挖掘的全新领域.可想而知,这个方向符合我要求的数据肯定是要自己搜集了. 自己搜集的数据,在量上 ...

  8. 【Python图像特征的音乐序列生成】思路的转变

    关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...

  9. 【Python图像特征的音乐序列生成】如何生成旋律(大纲),以及整个项目的全部流程

    今天连看三篇论文,不是很细致地看,也没有具体去实现,只是大概明白了一些新思路.这三篇论文,一篇概述了Decoder-Encoder模型,一篇延伸这个模型,首次提出了Attention机制,最后一篇详细 ...

随机推荐

  1. 4.xpath注入详解

    0x01 简介 XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在 URL.表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息.XPath注入发 ...

  2. Mathematics Base - Tensor

    以下是我对张量的理解,备注是具体解释,Xmind导出的图片没法显示出来,主要还是将张量间的关系画出来,方便理解. 图1 张量

  3. SEO优化之——rel=canonical(整合重复页)

    用法一 如图所示 有三个页面,三个页面的访问路径都不一样,但是现实的内容page2和page3显示的内容和page1一样,这时候在三个page中分别都加入了<link res="can ...

  4. jzoj6002. 【PKUWC2019模拟2019.1.15】Permutation (组合数)

    题面 题解 设\(lim=(n-1)/2\)(这里是下取整),那么\(x\)位置的值最大不能超过\(lim\),而\(y\)处的值不能小于\(y\),于是有\[Ans=\sum_{i=1}^{lim} ...

  5. 乐字节-Java8核心特性实战之Stream(流)

    说起流,我们会想起手机 ,电脑组装流水线,物流仓库商品包装流水线等等.如果把手机 ,电脑,包裹看做最终结果的话,那么加工商品前的各种零部件就可以看做数据源,而中间一系列的加工作业操作,就可以看做流的处 ...

  6. 笔记-JavaWeb学习之旅16

    增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...

  7. [Android]Android性能优化

    安卓性能优化 性能优化的几大考虑 Mobile Context 资源受限 + 内存,普遍较小,512MB很常见,开发者的机器一般比用户的机器高端 + CPU,核心少,运算能力没有全开 + GPU,上传 ...

  8. bzoj 5393 [HAOI2018] 反色游戏

    bzoj 5393 [HAOI2018] 反色游戏 Link Solution 最简单的性质:如果一个连通块黑点个数是奇数个,那么就是零(每次只能改变 \(0/2\) 个黑点) 所以我们只考虑偶数个黑 ...

  9. jq:jQuery库文件jquery.scrollLoading.js使用方法

    图片延迟加载,滚动到哪里加载到哪里: 1:头部加载库文件 <script type="text/javascript" src="/js/jquery.scroll ...

  10. 一篇文章彻底了解Java垃圾收集(GC)机制

    垃圾收集(Garbage Collection ,GC),是一个长久以来就被思考的问题,当考虑GC的时候,我们必须思考3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 那么在Java中,我们 ...