龙空技术网

使用Python编程制作上证指数波动的Midi音符

杨树D 171

前言:

当前看官们对“python mido”大概比较关注,兄弟们都想要知道一些“python mido”的相关文章。那么小编也在网络上收集了一些对于“python mido””的相关文章,希望各位老铁们能喜欢,兄弟们一起来了解一下吧!

都说炒股要掌握节奏,这让我想到了音乐,可咱不懂乐理呀,那就让程序自己为我们演奏吧!我们将整个流程分成如下五个部分:

使用适当的模块来生成一段音符程序根据将上证指数涨跌一段音符,能称得上“主旋律”给这段主旋律添加一系列和弦给这段主旋律添加一段伴奏优化程序生成的音乐

因此我们需要找到能生成Midi模块,它们分别是“mido”和“musicpy”,它们中的几个基本的类是note(音符), chord(和弦)和scale(音阶)。这几个类是构成音乐代码的基础。

分别测试这两个模块。

1.“miso”随机生成一段音符

# -*- coding: UTF-8 -*-import midoimport randompitch_list = [[] for t0 in range(32)]vel_list = [[] for t1 in range(32)]for i in range(32):    note_num = random.randint(0, 5)    while True:        pitch_list[i] = [random.randint(60, 84) for t2 in range(note_num)]        vel_list[i] = [random.randint(64, 100) for t3 in range(note_num)]        if len(pitch_list[i]) == len(set(pitch_list[i])):            breakmid = mido.MidiFile()track = mido.MidiTrack()mid.tracks.append(track)track.append(mido.MetaMessage('set_tempo', tempo=500000, time=0))track.append(mido.MetaMessage('track_name', name='Piano 1', time=0))track.append(mido.Message('program_change', program=1, time=0))current_beat = 0for i in range(32):    for note in range(len(pitch_list[i])):        note_beat = i * 0.5        track.append(mido.Message('note_on', note=pitch_list[i][note], velocity=vel_list[i][note],                                  time=round(480 * (note_beat - current_beat))))        current_beat = note_beat    for note in range(len(pitch_list[i])):        note_beat = i * 0.5 + 0.4        track.append(mido.Message('note_off', note=pitch_list[i][note], velocity=vel_list[i][note],                                  time=round(480 * (note_beat - current_beat))))        current_beat = note_beatmid.save('test1.mid')

2.“Musicpy”生成一段和弦。

from musicpy import *a = (C('Bmaj9', 3) / [2, 3, 4, 1, 5]) % (1 / 8, 1 / 8)b = (C('Bmaj9', 3) / [2, 3, 4, 1, 5, 2]) % (1 / 8, 1 / 8)q = a + ~a[1:-1]q2 = b + ~b[3:-1]t = (q + q2) * 2adding = chord(['Bb5', 'Ab5', 'Gb5', 'Ab5']) % (1 / 2, 1 / 2) * 2t2 = t & addingplay(t2 + (t2 - 3), 100, instrument=47)

这里重点推荐“Musicpy”,Musicpy是一门基于python的领域特定的音乐编程语言,是设计给音乐人通过乐理逻辑和算法在非常简洁的语法下创作音乐的。

Musicpy不只可以用来写代码作曲,它还有一些作者自己开发的音乐分析算法,包括判断任何一组音组成的和弦类型的乐理逻辑算法,分离出一首曲子的主旋律与和弦部分的算法。

作者写这个模块的初衷就是能够用简洁的代码来作曲,更重要的是这门语言完全融入了乐理逻辑,因此可以在乐理上面做出各种尝试。

作者致力于在这个项目中将整个乐理体系彻底地数学模型化,计算机化,构建一整个计算机能够理解的乐理系统,让大家可以在musicpy这个世界里研究任何跟音乐,乐理相关的算法,智能分析,实验性作曲等等。(除此之外,你可以用musicpy来写任何你喜欢的类型的音乐,古典音乐,爵士,摇滚,流行,电音,等等)

视频加载中...

标签: #python mido