发布时间:2026/8/25 0:39:16
PrettyMIDI 手把手教程:从解析到合成的完整路径 PrettyMIDI 手把手教程从解析到合成的完整路径【免费下载链接】pretty-midiUtility functions for handling MIDI data in a nice/intuitive way.项目地址: https://gitcode.com/gh_mirrors/pr/pretty-midi拿到一份 .mid 文件想做和弦分析常常被事件流的写法劝退想造一段两小节的旋律又得对着 tick 和速度事件头疼。PrettyMIDI 是一个 Python MIDI 处理库把 MIDI 文件解析成可以直接读写、修改的 Python 对象面向音乐分析、教学演示和创意编程三类使用者。PrettyMIDI 的定位把 MIDI 事件流转成音符列表它做的事情很集中把 MIDI 底层的事件流翻译成以秒为单位的对象——一个 PrettyMIDI 实例装着一组乐器每个乐器装着一组音符每个音符有力度、音高、起止时间。底层解析交给 mido它负责时间域换算和数据结构设计让你写 Python 音乐编程时直接工作在秒这个维度上。做调性与节奏分析的研究者、演示音乐教学的老师、需要把 MIDI 转成音频的开发者都能省掉自己写解析器的功夫。三步写完你的第一首 MIDI第一步装包pip install pretty-midi第二步创建、第三步保存。下面这段代码跑通创建 C 大和弦并导出文件的完整链路import pretty_midi # 新建 MIDI 对象分辨率 220 tick/拍初始速度 120 BPM pm pretty_midi.PrettyMIDI(resolution220, initial_tempo120) piano pretty_midi.Instrument(program0) # program 0 是钢琴 pm.instruments.append(piano) # C 大和弦C4(60)、E4(64)、G4(67)持续 0.5 秒 piano.notes.extend( pretty_midi.Note(velocity100, pitchp, start0, end0.5) for p in (60, 64, 67) ) pm.write(output.mid)跑完就得到一个可播放的 output.mid用PrettyMIDI(output.mid)读回来即可继续分析。能力地图从解析到合成整个库的 API 基本都挂在PrettyMIDI和Instrument两个对象上能力关键函数一句话说明MIDI 文件解析与写出PrettyMIDI(file)、write()一行读入 .mid一行写回磁盘音符管理Instrument(program)、Note(velocity, pitch, start, end)按乐器组织音符时间单位为秒音高换算note_number_to_hz/hz_to_note_number、note_name_to_number/note_number_to_nameMIDI 音数、频率、C4 式音名自由互转乐器映射program_to_instrument_name程序号转成人能读的乐器名钢琴卷帘get_piano_roll(fs)128 音高 × 时间矩阵直接喂给绘图和弦特征提取get_chroma(fs)、get_pitch_class_histogram()12 维色度与音级直方图调性判定的代理指标节奏分析get_beats()、get_downbeats()拍点与强拍小节第一拍时刻时间轴编辑adjust_times(old_times, new_times)把旧时间重映射到新时间变速或对齐都用它音频合成synthesize(fs)、fluidsynth()内置正弦波或 FluidSynth 出真实音色两个真实场景画卷帘、出音频场景一钢琴卷帘可视化。卷帘是音乐可视化最直观的形式。get_piano_roll(fs100)按每秒 100 列采样返回 128 行的矩阵用 imshow 就能画出来pm pretty_midi.PrettyMIDI(example.mid) pr pm.get_piano_roll(fs100) import matplotlib.pyplot as plt plt.imshow(pr, aspectauto, originlower) plt.show()仓库示例里还有reverse_pianoroll.py用 CQT 频谱把音频反过来转成 MIDI思路值得参考。场景二MIDI 转音频。synthesize用正弦波合成音色简陋但零额外依赖fluidsynth走 FluidSynth 引擎音色真实很多需要 .sf2 音色库库本身自带 TimGM6mb.sf2开箱即可调用pm pretty_midi.PrettyMIDI(example.mid) audio pm.synthesize(fs44100) # 正弦波合成 audio pm.fluidsynth() # FluidSynth 合成音色更接近真实避坑与小贴士initial_tempo只在不传文件、全新创建时生效读入 .mid 后速度以文件内的速度事件为准。一次加多个音符用notes.extend(...)notes.append([...])会把列表塞成一个整体后续遍历会很难排查。fluidsynth依赖系统里的 FluidSynth 程序和 pyfluidsynth旧参数sf2_path从 0.2.11 起已弃用改由synthesizer参数传入 sf2 路径。Note的start/end单位是秒不是 tick——这是它和 mido 原始 API 最大的差别混用会把时间差出几个数量级。延伸学习官方文档全部类与换算函数的 API 参考示例代码节拍对齐、芯片音乐、和弦库等可运行的完整样例测试用例覆盖常见用法是学 API 的好参照下次拿到 MIDI 文件就用 PrettyMIDI 打开一次析出和弦、画张卷帘、导一段合成音频。需要更多用法时翻 docs/ 里的 API 清单即可库不大很容易摸透。【免费下载链接】pretty-midiUtility functions for handling MIDI data in a nice/intuitive way.项目地址: https://gitcode.com/gh_mirrors/pr/pretty-midi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/25 0:39:16

2026这6款神级降AI率平台大起底,一键让AIGC率直逼绝对安全线!

步入2026年,学术界的规则早已悄然改写。曾经的“降重焦虑”如今已沦为过去式,取而代之的是更严苛的“去AI痕迹”挑战。随着查AI系统的算法不断进化,高校对论文质量的审核标准也愈发严苛。单纯降低查重率早已无法满足现实需求,摆在…

2026/8/25 0:39:16

4 步把微博备份成 PDF:Speechless 免费导出上手指南

4 步把微博备份成 PDF:Speechless 免费导出上手指南 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你 2016 年的旅行照只剩收藏夹里那张…

2026/8/25 0:39:16

2026亲测:专业降AIGC工具选它准没错

2026 年降 AIGC 工具已从“表面文字改写”进化为多维度智能优化系统,核心评测维度涵盖 AI 痕迹清除精准度、专业表达一致性、格式结构完整性、长段落逻辑流畅性、降重兼容性以及高校检测合规性。本次测评涵盖 5 款主流工具,测试内容覆盖中英文论文、全文…

2026/8/25 3:04:23

排序算法解析:从基础到面试实战

1. 排序算法在技术面试中的核心地位排序算法是计算机科学领域最基础也最重要的算法类别之一。在准备技术面试,特别是像字节跳动这样的顶级科技公司面试时,排序算法的掌握程度往往是面试官评估候选人基本功的重要标准。我参加过多次大厂技术面试&#xff…

2026/8/25 3:04:23

基于大模型的AI Agent构建体育决策支持系统实战指南

当一支职业足球队在转会窗口前夜,面对一份关于某位球员的300页球探报告、过去三个赛季的伤病数据、社交媒体情绪分析以及一份复杂的财务模型时,教练组和数据分析师该如何在48小时内做出是否签下他的最终决定?传统方式可能是通宵达旦的会议、充…

2026/8/25 3:04:23

RocketMQ面试核心要点与分布式消息队列实践

1. RocketMQ面试核心要点解析作为阿里开源的分布式消息中间件,RocketMQ在电商、金融等大厂系统中承担着关键作用。面试官常通过它考察候选人对分布式系统设计的理解深度。我从实际面试经验中提炼出23个高频问题,这些问题覆盖了从基础概念到架构设计的各个…

2026/8/25 3:04:22

UGC平台AI生成视频鉴别:三层防御体系与实战指南

1. 项目概述:UGC平台内容鉴别的“猫鼠游戏”在UGC(用户生成内容)平台工作的朋友,最近应该都感受到了前所未有的压力。这股压力不是来自KPI,也不是来自竞品,而是来自屏幕背后那些真假难辨的“用户”。就在上…

2026/8/25 2:59:22

基于开源模型构建本地化PDF论文翻译工具:从原理到实战

1. 背景与核心概念 对于科研人员、学生和开发者而言,阅读英文PDF论文是获取前沿知识、跟进技术发展的日常。然而,面对动辄十几页甚至几十页的专业文献,逐句查词不仅效率低下,还容易打断思路,影响对整体逻辑和核心观点…

2026/8/25 1:04:19

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 0:04:14

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

2026/8/25 0:04:14

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…