python 大盘(使用Python编程制作上证指数波动的Midi音符)
都说炒股要掌握节奏,这让我想到了音乐,可咱不懂乐理呀,那就让程序自己为我们演奏吧我们将整个流程分成如下五个部分:,今天小编就来聊一聊关于python 大盘?接下来我们就一起去研究一下吧!
python 大盘
都说炒股要掌握节奏,这让我想到了音乐,可咱不懂乐理呀,那就让程序自己为我们演奏吧!我们将整个流程分成如下五个部分:
- 使用适当的模块来生成一段音符
- 程序根据将上证指数涨跌一段音符,能称得上“主旋律”
- 给这段主旋律添加一系列和弦
- 给这段主旋律添加一段伴奏
- 优化程序生成的音乐
因此我们需要找到能生成Midi模块,它们分别是“mido”和“musicpy”,它们中的几个基本的类是note(音符), chord(和弦)和scale(音阶)。这几个类是构成音乐代码的基础。
分别测试这两个模块。
1.“miso”随机生成一段音符
# -*- coding: UTF-8 -*-
import mido
import random
pitch_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])):
break
mid = 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 = 0
for 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_beat
mid.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) * 2
adding = chord(['Bb5', 'Ab5', 'Gb5', 'Ab5']) % (1 / 2, 1 / 2) * 2
t2 = t & adding
play(t2 (t2 - 3), 100, instrument=47)
这里重点推荐“Musicpy”,Musicpy是一门基于python的领域特定的音乐编程语言,是设计给音乐人通过乐理逻辑和算法在非常简洁的语法下创作音乐的。
Musicpy不只可以用来写代码作曲,它还有一些作者自己开发的音乐分析算法,包括判断任何一组音组成的和弦类型的乐理逻辑算法,分离出一首曲子的主旋律与和弦部分的算法。
作者写这个模块的初衷就是能够用简洁的代码来作曲,更重要的是这门语言完全融入了乐理逻辑,因此可以在乐理上面做出各种尝试。
作者致力于在这个项目中将整个乐理体系彻底地数学模型化,计算机化,构建一整个计算机能够理解的乐理系统,让大家可以在musicpy这个世界里研究任何跟音乐,乐理相关的算法,智能分析,实验性作曲等等。(除此之外,你可以用musicpy来写任何你喜欢的类型的音乐,古典音乐,爵士,摇滚,流行,电音,等等)
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com