python:将基金净值数据转换为 midi 文件

用Python和music21库搞定MIDI与JSON互转:一个音乐程序员的实用笔记 本文详细介绍了如何使用Python和music21库实现MIDI与JSON格式的互转,为音乐程序员提供了一套完整的解决方案。通过解析MIDI文件、处理音乐数据结构以及优化转换性能,帮助开发者在音乐可视化、游戏开发和机器学习等场景中高效处理音乐数据。 阅读详情

开放式基金是没有公布每日交易量的。

/funds/data/660008.csv 文件开头:
date,jz,ljjz
2016-01-04,1.1141,1.1141
2016-01-05,1.1161,1.1161
2016-01-06,1.1350,1.1350

编写 fund2mid.py  如下

# -*- coding: utf-8 -*-
"""
 从 https://fund.eastmoney.com/ 获取基金净值数据并转换为 MIDI文件
 需要先安装依赖:
 pip install midiutil
"""
import sys
import pandas as pd
from midiutil import MIDIFile

if len(sys.argv) ==2:
    fcode = sys.argv[1]
else:
    print('usage: python fund_dc.py fundcode ')
    sys.exit(1)

if len(fcode) !=6:
    print('fund code length: 6')
    sys.exit(2)

f1 = "/funds/data/" + fcode +'.csv'
df = pd.read_csv(f1) # parse_dates=True, index_col=0
#print(len(df))

df = df[ df['date'] > '2024-01-01']
if len(df) <20:
    print(len(df)," < 20")
    sys.exit(2)

# DataFrame 重建索引
df = df.reset_index(drop=True)
print('len(df)=', len(df))

# 提取基金净值序列
prices = df['jz'].astype(float).tolist()

# 数据归一化处理
min_price = min(prices)
max_price = max(prices)
price_range = max_price - min_price
print(f"{fcode}: max={max_price}, min={min_price}, range={price_range}")
print('max/min:', max_price/min_price)

# MIDI参数配置
# C3(MIDI音符范围最小值=48)
min_note = 48
# C5(MIDI音符范围最大值=84)
max_note = 84
if (max_price/min_price) < (84/48):
    max_note = int(50 * max_price/min_price)
if max_note %2 ==1:
    max_note += 1
print(f"max_note={max_note}, min_note={min_note} ")
print('max_note/50=', max_note/50)

track = 0
channel = 0
tempo = 120    # BPM
volume = 80   # 音量(0-127)

# 创建MIDI文件
midi = MIDIFile(1) # 单音轨
midi.addTrackName(track, 0, f"fund {fcode}")
midi.addTempo(track, 0, tempo)

# 生成音符序列
time_counter = 0  # 时间指针(单位:拍)
for price in prices:
    if price_range < 0.001:  # 处理价格无波动的情况
        pitch = (max_note + min_note) // 2
    else:
        normalized = (price - min_price) / price_range
        pitch = min_note + int(normalized * (max_note - min_note))
    
    # 添加音符(每个音符持续1拍,间隔1拍)
    midi.addNote(track, channel, pitch, time_counter, 1, volume)
    time_counter += 1

# 保存MIDI文件
output_file =f"melo_{fcode}.mid"
with open(output_file, 'wb') as f:
    midi.writeFile(f)
print(f" 生成:{output_file}")

以 农银沪深300指数A (660008) 为示例
运行 python fund2mid.py 660008 
 生成:melo_660008.mid

运行 python play_mid.py melo_660008.mid

将wav音频文件频谱分析后映射到钢琴琴键上(类似audio to midi功能) import wave import numpy from pyaudio import PyAudio import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter import math wf = wave.open('e:/tests/audio2miditest.wav', 'rb') # 创建PyAudio对象 p = PyAudio() str... 阅读详情

相关推荐

用Python和music21库搞定MIDI与JSON互转:一个音乐程序员的实用脚本分享

本文详细介绍了如何使用Python的music21库实现MIDI与JSON格式的音乐数据双向转换,适用于音乐程序员在游戏音效、交互艺术和智能作曲等场景。通过实战代码示例和优化技巧,帮助开发者高效处理音乐文件转换,提升工作效率。

weixin_30417487的博客 192

nodejs:midi-writer-js 将基金净值数据转换为 midi 文件

这是一个将开放式基金数据转换为 MIDI音乐的 js 程序示例。该程序将基金净值映射为 MIDI音符的音高,用 midi-writer-js

belldeep的专栏 282

别再手动扒谱了!教你用Python把MIDI音乐转成可编辑的JSON数据

本文详细介绍了如何使用Python将MIDI音乐文件转换为可编辑的JSON数据,实现音乐数据的自由编辑。通过music21库解析MIDI文件,提取音符、和弦等核心属性,并转换为结构清晰的JSON格式,使音乐编辑变得简单高效。同时,文章还提供了JSON转回MIDI的完整代码示例,帮助开发者轻松实现音乐数据的双向转换。

weixin_27244795的博客 205

python:将股票市价数据转换为 midi 文件

这是一个将股票数据转换为 MIDI音乐的 python程序示例。程序使用 Tushare 获取股票数据,并将收盘价映射为 MIDI音符的音高

belldeep的专栏 427

Magenta魔改记-1:原始数据转换

Magenta魔改记-1:原始数据转换 前言 本文主要讲述Magenta项目原始数据整合的过程,并介绍了读取MIDI和XML的函数。通过本文我们可以看到,在原始音乐数据整合的过程中,Magenta将不同格式的数据转换到了一个接近MusicXML的统一格式中统一存储。 Magenta中有很多自动作曲模型,它们都使用不同格式的数据输入。在Magenta中,原始数据(MIDI,MusicXML等)先被转...

weixin_38090501的博客 1265

Ableton Live:MIDI剪辑的制作与编辑_2024-07-17_01-36-03.Tex

Ableton Live提供了多种MIDI效果器,如“Chord”、“Scale”、“Arpeggiator”等,这些效果器可以实时地修改MIDI输入,从而在演奏时创造新的音乐可能性。例如,“Chord”效果器可以将单个音符转换为和弦,“Scale”效果器可以确保所有输入的音符都符合选定的音阶。

1493

从MIDI文件到音乐编程:python-midi读取与解析实战指南

python-midi是一个强大的Python MIDI库,能够帮助开发者轻松处理MIDI文件的读取、解析和创建,为音乐编程提供便捷工具。无论是音乐爱好者还是专业开发者,都能通过这个库实现对MIDI音乐数据的灵活操作。 ## 🎹 快速入门:python-midi安装指南 要开始使用python-midi,首先需要克隆项目仓库并进行安装。打开终端,执行以下命令: ```bash git cl

gitblog_00693的博客 464

NetApp 7-mode初始化详解(原AGGR重建)及注意事项

没想到有生之年还能再写个7-mode的文章,上次接触可能已将近十年,本次恰巧碰到这个机会,边学习边整理,整整一天时间,碰到了不少坑,作为记录。

RaySun的技术Blog 2752

python:将指数ETF基金数据转换为 midi 文件

这个程序使用 Tushare 获取股票数据,将收盘价映射为 MIDI音符的音高,并且根据交易量控制音量的大小

belldeep的专栏 386

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

ESP32驱动MLX90640红外热成像传感器:从报错到成功运行的完整避坑指南

本文是一份详细的ESP32驱动MLX90640红外热成像传感器的实战指南。针对开发中常见的I2C通信失败、数据全零及‘坏点过多’等报错,文章提供了从环境搭建、驱动库选择与改造到实战代码解析的完整解决方案,并分享了数据滤波、热图生成及多任务优化等高级技巧,帮助开发者高效避坑,实现稳定运行。

weixin_29191669的博客 94

从MIDI到代码:Musicpy实现音乐文件双向转换的高效方法

Musicpy是一款基于Python的音乐编程语言,通过音乐理论和算法,以简洁的语法编写音乐。本文将介绍如何使用Musicpy实现MIDI文件与代码之间的双向转换,帮助音乐爱好者和开发者轻松处理音乐文件。 ## 认识Musicpy:音乐编程的得力助手 🎵 Musicpy作为一款强大的音乐编程工具,提供了丰富的功能来处理音乐文件。它不仅支持MIDI文件的读写,还能将音乐数据转换为易于理解和编辑

gitblog_00679的博客 1033

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 411

由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia)

如果你需要更高级的功能,例如自动识别音频中的音符,你可以使用音乐分析库,如`librosa`或`mir_eval`。如果你的音频数据范围不同,你需要相应地修改`pitch`和`note_duration`的值。midi.addNote(track, channel, pitch, time, note_duration, 100) # 添加音符到MIDI文件。首先,我们需要安装两个Python库:`pydub`用于处理音频文件,以及`midiutil`用于创建MIDI文件。# 保存MIDI文件。

591

基于 Datawhale 开源量化投资学习指南(10):基于 LightGBM 的量化选股

通过本篇文章,我们深入探索了如何运用 LightGBM 机器学习模型实现量化选股。首先,我们通过获取股票的历史数据,进行特征工程和标签制作,将选股问题转化为一个分类问题。接着,我们使用 LightGBM 训练模型,并在验证集和测试集中评估了模型的表现。该选股策略的核心在于结合机器学习算法,从历史数据中寻找能够捕捉股票短期涨跌的关键特征,从而为投资者提供辅助决策支持。虽然本文的模型取得了一定的效果,但这只是量化投资领域的一小部分。

不想宅的冷同学 1346

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

系列文章目录 一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 文章目录系列文章目录前言一、配置CubeMX二、逻辑代码部分 前言 这次我用的板子是一个用STM32F103C8T6作为主控芯片的一个数据采集卡,两个LED灯连接的引脚是PB3与PB4,TX与RX引脚分别是PA9和PA10。 一、配置CubeMX 1、新建工程; 2、配置时钟源,在RCC里面的HSE配置的是晶振时钟; 3、配置程序烧录引脚SYS为SWD模式; 4、配置GPIO口,配置一个LE

遗忘丶的博客 1万+

Python编曲实践(六):将MIDI文件转化成矩阵,继承PyTorch的Dataset类来构建数据集(附数据集网盘下载链接)

使用pretty_midi库将MIDI文件转化成稀疏矩阵,通过PyTorch的Dataset类来构建数据集

_ 3719

IFIX5.8在Win10系统下的安装避坑指南

本文提供了IFIX5.8在Windows 10系统下的详细安装教程与避坑指南。针对常见的驱动缺失、UAC拦截及兼容性报错等问题,文章从安装前准备、分步安装流程到安装后配置与驱动修复,给出了系统性的解决方案,帮助工控从业者顺利完成部署。

f6g7h8i9j的博客 364

Basic Pitch 终极指南:如何用 Spotify 开源工具实现音频转 MIDI 的完美转换

你是不是曾经遇到过这样的困境?听到一段美妙的旋律,想要把它记录下来做成乐谱,却发现自己根本记不住那些复杂的音符。或者作为一个音乐制作人,想要把一段人声哼唱快速转换成 MIDI 音轨,却苦于没有合适的工具?别担心,今天我要向你介绍一个改变游戏规则的开源工具——Basic Pitch,它能让你轻松实现音频到 MIDI 的智能转换。 ## 为什么你需要 Basic Pitch? 想象一下这样的场景:

gitblog_01168的博客 930

AD22等长布线规则

本文介绍了PCB布线中实现信号线等长的详细操作步骤:1.创建网络类(NetClass),将需要等长的信号线归入同一组;2.设置高速布线规则(High-SpeedRule),定义等长容差等参数;3.进行交互式等长布线(InteractiveLengthTuning),使用蛇形线调整线长;4.实时调整与最终检查,确保所有网络满足等长要求。文中还提供了实用技巧,如使用快捷键调整蛇形线参数、为关键信号设置更严格规则等。操作需在PCB设计软件中完成,通过统一管理、规则设置和精确调整来实现信号同步传输。

whm128的博客 1557

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

用Python和music21库搞定MIDI与JSON互转:一个音乐程序员的实用脚本

本文详细介绍了如何使用Python和music21库实现MIDI与JSON之间的高效互转,适用于音乐程序员处理音乐数据。通过实战代码示例,展示了从MIDI解析到JSON转换的完整流程,以及如何优化处理大文件和提升转换性能,为AI音乐生成、音乐教育等应用场景提供技术支持。

weixin_30642869的博客 392

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

从MIDI到JSON:用Python构建音乐数据的双向转换桥梁

本文详细介绍了如何使用Python构建MIDI与JSON音乐数据的双向转换工具,解决音乐数据在现代应用中的交换需求。通过解析MIDI文件结构和设计灵活的JSON表示,实现音符、和弦等复杂音乐元素的准确转换,并分享性能优化和常见问题解决方案,为音乐科技应用提供可靠的数据处理桥梁。

weixin_30788239的博客 226

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pretty-midi:用 Python 优雅地处理 MIDI 数据

pretty-midi是一个Python库,用于简化MIDI文件处理。它可以将MIDI数据转换为结构化对象,支持读取、修改、分析和合成操作。功能包括批量移调、调性分析、速度估计等,还能直接生成音频波形或标准MIDI文件。该库适合音乐信息检索研究者、数据科学家和音乐创作者使用,能显著提升MIDI数据处理效率。安装简单,只需pip install pretty_midi,若需音频合成还需额外安装fluidsynth。通过提供高层API,pretty-midi让复杂的MIDI操作变得直观易用。

qingfengcoder600的博客 189

Python music21 库实战:将 MIDI 音高 60-71 自动绘制为五线谱图像

本文详细介绍了如何使用Python的music21库将MIDI音高60-71自动转换为五线谱图像。通过实战代码示例,展示了从环境配置、音高转换到乐谱生成的完整流程,特别适合音乐技术开发者和教育应用开发者。文章还涵盖了高级渲染技巧和实战案例,如生成C大调音阶练习,帮助读者快速掌握这一实用技能。

weixin_30279671的博客 313

DIY机械钟琴:从Arduino控制到MIDI解析的机电一体化实践

机电一体化系统通过集成机械、电子与软件技术,实现对物理设备的精确控制与自动化操作。其核心原理在于利用传感器、执行器与控制器构建闭环反馈系统,将数字指令转化为精准的机械动作。这项技术的价值在于能够以可编程、可重复的方式完成复杂任务,极大地提升了生产效率和创造性表达的可能性。在工程实践中,机电一体化广泛应用于机器人、自动化乐器、智能家居等领域。以自动演奏乐器为例,它融合了实时控制、信号处理与机械设计,其中,Arduino作为开源硬件平台,因其丰富的IO接口和强大的社区支持,常被用于实现多路执行器的毫秒级精确时序

weixin_34037173的博客 419

PSMC: 快速、准确地估计群体规模

PSMC: 潮汐转换成音乐 PSMC 是一个开源的音频处理软件,能够将潮汐数据转换成音乐。它可以帮助用户以一种独特的方式感受海洋的变化。 项目简介 是由开发者 lh3 开发的一个 Python 脚本,它可以将潮汐高度数据转换成 MIDI 文件,并通过各种 MIDI 音序器播放出来,从而将海洋的潮汐变化变成了一种声音的艺术表现形式。 该项目的核心思想是将潮汐的高度变化映射到音高、节奏和动态等音乐元素...

gitblog_00024的博客 666
上一篇: python:将指数ETF基金数据转换为 midi 文件
下一篇: nodejs:midi-writer-js 将基金净值数据转换为 midi 文件
belldeep
博客等级 码龄20年 1820粉丝 584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值