首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Music21:去掉写入的midi文件末尾的空数据

Music21是一个Python音乐分析和生成库。它提供了一组用于分析、处理和生成音乐的功能和工具。针对你的问题,如果你想去掉写入的midi文件末尾的空数据,你可以使用Music21库中的相关方法来实现。

具体操作如下:

  1. 导入所需的库和模块:
代码语言:txt
复制
from music21 import converter
  1. 使用converter.parse()方法加载并解析midi文件:
代码语言:txt
复制
midi_file = converter.parse("your_midi_file.mid")
  1. 获取midi文件的音轨列表:
代码语言:txt
复制
tracks = midi_file.tracks
  1. 遍历每个音轨,去掉末尾的空数据:
代码语言:txt
复制
for track in tracks:
    # 获取音轨的事件列表
    events = track.events
    # 去掉末尾的空数据
    while events and events[-1].isDeltaTime():
        events.pop()
  1. 将修改后的音轨重新保存为midi文件:
代码语言:txt
复制
modified_midi_file = midi_file.write("modified_midi_file.mid", fmt="midi")

通过以上步骤,你可以成功去掉写入的midi文件末尾的空数据。

关于Music21库的更多信息和使用方法,你可以参考腾讯云产品文档中的介绍:Music21产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【BLE MIDIMIDI 文件速度设置识别 ( 查找 midi 文件中速度相关二进制数据 | FF 51 03 速度设置指令 )

文章目录 一、问题说明 二、查找 midi 文件中速度相关二进制数据 一、问题说明 ---- 解析 midi 文件时 , 发现音符解析出现异常 ; 是根据 音符 微秒时长 , 统计音符时 , 发现音符解析出现异常...查看 midi 文件速度 ; 可以看到 , 开始速度是 70 bpm , 在 1/5 位置 , 速度变成了 65 bpm ; 二、查找 midi 文件中速度相关二进制数据 ---- 参考 【...BLE MIDIMIDI 文件格式分析总结 ★★★ 八、FF 51 03 四分音符时长 博客章节 , 可以知道 , FF 51 03 是时间设定标志 ; 使用二进制查看工具 , 打开该 midi 文件..., 发现该 midi 中竟然有 2 个 FF 51 03 速度设置标志 , 两个速度标记之间 84 C1 48 是 delta-time , 单位是 tick , 参考 【BLE MIDIMIDI...文件格式分析总结 ★★★ 六、delta-time 间隔 博客章节 , 计算该 delta-time 值 ; 设置了 2 次速度 , 这样就导致了音符时间计算错误 ;

55810

使用LSTM-GAN为歌词谱曲

下面是一个组件图,它显示了整个系统流程,左边是作为文本一首诗歌,右边是作为MIDI文件生成一首新歌。 ? 每一行选定诗被输入系统,一次一行。...该模型是GAN和长短期记忆(LSTM)模型之间混合体,用来进行MIDI格式音符生成。 使用MITMusic21库[10]分析所得乐句,确定其所处音调。...生成所有音乐行之后,将生成MIDI文件输入到Music Transformer模型中,该模型添加一个伴随音乐声部,并以具有表现力键盘速度和定时来营造人性化感觉。...最后,使用谷歌Magenta 库[11]对最终MIDI文件进行一些后处理,比如分配乐器声音。 在下一节中,我将详细介绍这些步骤,并显示为自定义处理编写Python代码。...下面的代码显示了如何将每个音符量化为十六分音符(第12和13行),以及如何将最后一个音符扩展到小节末尾(第22行)。

1.3K60
  • 【机器学习】音乐生成——AI如何创作个性化音乐与配乐

    代码示例:使用LSTM生成音乐 我们将使用一个简单LSTM模型来生成音乐片段。假设我们有一个MIDI文件数据集,LSTM模型将学习这些音乐文件模式,并生成新旋律。...4.1 数据预处理 首先,我们需要将MIDI文件转换为可以输入到LSTM模型中格式。我们将使用music21库解析MIDI文件,并提取音符和和弦信息。...import music21 import numpy as np # 加载MIDI文件 midi = music21.converter.parse("example_music.midi") #...print(prediction_output) 4.5 将生成音符转换回MIDI文件 最后,我们将生成音符序列转换回MIDI格式,并保存为文件。...文件 midi_stream = stream.Stream(output_notes) midi_stream.write('midi', fp='output_music.midi') 5.

    17810

    PHPExcel写入单元格数据,但是数据源有值【php】

    new \PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); objActive = objPHPExcel->getActiveSheet() 2,两种写入方式...", 支持类型有:TYPE_STRING TYPE_STRING2 TYPE_NULL TYPE_NUMERIC TYPE_FORMULA TYPE_BOOL TYPE_ERROR 二,问题出现 1,...问题描述 从数据库获取数据,然后循环遍历写入excel时候 有的单元格可以写入数据,有的单元格数据,查询数据源,发现并没有丢失数据。...2,排查 对比了可以写入数据和不能写入数据 发现只有emoji表情方面的区别,原来PHPExcel不支持这种编码 当然有解决办法,请参考:https://github.com/iamcal/php-emoji...: 源输入 实例:返回过滤后数据,数组对应数组,字符对应字符 function filterEmoji($str) { $str = preg_replace_callback(

    3.5K20

    百首MIDI音乐数据集打造圣诞AI作曲家

    这个圣诞节,来听听AI作曲家大作吧。 圣诞节来临,让AI写一支圣诞歌给你听。 由于Made by AI创业团队努力,AI也可以当一回圣诞“作曲家”了。...在构建这个“圣诞歌曲生成器”时,首先必须选择一种算法,要求该算法能够生成长度足够、并且具备相当连贯性序列,而不会产生太多计算上开销。...为了训练这个网络,研究团队采用MIDI格式100首圣诞歌曲训练数据集,包含每个音符音高、长度和响度文本文件,并使用Music21(一个开源库)来进行读取和写入。...随着时间推移,当LSTM读取MIDI文件时,会通过复制音符和和和弦序列慢慢“学习”,以生成相似的主题音乐。...我们鼓励其他人尝试用其他输入数据和其他模型生成圣诞音乐。

    1.1K30

    通过python实现从csv文件到PostgreSQL数据写入

    正在规划一个指标库,用到了PostgresSQL,花了一周做完数据初始化,准备导入PostgreSQL,通过向导导入总是报错,通过python沿用之前方式也有问题,只好参考网上案例进行摸索。...PostgreSQL是一种特性非常齐全自由软件对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发POSTGRES,4.2版本为基础对象关系型数据库管理系统。...POSTGRES许多领先概念只是在比较迟时候才出现在商业网站数据库中。...同样,PostgreSQL也可以用许多方法扩展,例如通过增加新数据类型、函数、操作符、聚集函数、索引方法、过程语言等。...另外,因为许可证灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。 PostgreSQL和Python交互是通过psycopg2包进行

    2.6K20

    用人工智能探索音乐生成世界

    然后,代码会遍历目录中每个文件,提取音符和和弦,并将其存储以供进一步处理。music21 库中“converter”模块用于解析 MIDI 文件并检索音乐元素。...一旦生成音乐序列中所有模式都被处理完毕,我们将output_stream写入名为'generated_music.mid'MIDI文件中。...这主要是因为我们仅使用单个 MIDI 文件来训练模型。然而,我们可以通过重复这个过程并在更大数据集上训练我们模型来提高音乐质量。...这清楚地表明,将模型训练在更多样化MIDI文件范围上会显著改善生成音乐。这强调了增加训练数据规模和多样性对于实现更好音乐结果重要性。...由AI生成音乐可能听起来呆板,或者会错过使音乐真正引人入胜微妙细微差别。 数据依赖性:生成音乐受到用于训练输入MIDI文件影响。

    29710

    【Python】文件操作 ⑤ ( 文件操作 | 以只读模式向已有文件写入数据 | 以追加模式向已有文件写入数据 | 以追加模式打开一个不存在文件 )

    一、向文件写出数据 1、以只读模式向已有文件写入数据 使用 write 函数向已有文件写入数据 , 会清空该文件数据 , 代码展示如下 : file1.txt 文件内容是 Hello World !..., file1.txt 变为 Tom and Jerry , 之前文件内容被清空 ; 2、以追加模式向已有文件写入数据 追加模式是 a 模式 , 使用 open 函数 追加模式 打开文件 : 如果文件不存在..., 会创建该文件 ; 如果文件存在 , 则文件原来内容保持不变 , 在文件最后追加写入数据 ; 使用 追加模式 打开文件代码 : open("file1.txt", "a", encoding="...Tom and Jerry ; 3、以追加模式打开一个不存在文件 在 open 函数中 , 使用追加模式 a 打开一个不存在文件 , 此时会创建该文件 , 并向其中写入数据 ; 代码实例 : ""...Tom and Jerry , 这是新写入数据 ;

    46020

    Python网络爬虫中爬到数据怎么分列分行写入csv文件

    一、前言 前几天在Python白银交流群有个叫【꯭】粉丝问了一个Python网络爬虫中爬到数据怎么分列分行写入csv文件问题,这里拿出来给大家分享下,一起学习下。...现在状态是下图这样。...给出了一个代码,如下所示: et = etree.HTML(resp) tr_list = et.xpath('//table//tr') for i in tr_list: # 获取电影信息,并去掉前面的多余那个圆点.../td//text()')[1:]) + '\n' # 追加写入文件 with open('电影.csv', 'a', encoding='utf-8') as f: f.write...这篇文章主要分享了Python网络爬虫中爬到数据怎么分列分行写入csv文件问题,文中针对该问题给出了具体解析和代码演示,帮助粉丝顺利解决了问题。

    3.3K10

    【赵渝强老师】Oracle联机重做日志文件数据写入过程

    在Oracle数据库中,一个数据库可以有多个联机重做日志文件,它记录了数据变化。例如,当Oracle数据库产生异常时,导致对数据改变没有及时写入数据文件中。...这时Oracle数据库就会根据联机重做日志文件信息来获得数据变化信息,并根据这些信息把这些改变写到数据文件中。换句话来说,联机重做日志文件中记录重做日志可以用来进行数据库实例恢复。  ...在默认情况下,Oracle数据库有3个重做日志组。Oracle推荐每一组中至少存在两个成员。  下图展示了Oracle数据写入数据过程。  ...视频讲解如下:注意:从上图可以看出,当前客户端成功提交事务时,数据有可能还没有写到数据文件上。如果此时数据库实例发生了崩溃,写入数据是会丢失。...当重新启动数据库实例时,Oracle会利用成功写入重做日志来恢复实例在内存中数据,这个过程叫做实例恢复。由Oracle数据SMON进程自动完成。

    12010

    Excel学习----一键创建相应“惟一性”文件,再筛选数据写入相应文件

    Excel学习----一键创建相应“惟一性”文件,再筛选数据写入相应文件中 我们口号是:Excel会用是excel,不会用是电子表格 领导是要求是:有这样一个表格,请按“模板”文件,建立面试级别的几个文件...,并筛选出相应内容填写到各工作簿中, 常规做法是:~~~~~~~~~头痛啦 目标:是把多次多次多次“打开文件”---“复制”---“粘贴”—“关闭文件工作化为“一键完成” 问题1:一键复制模板文件并按...D列“惟一性”命名 问题2:分别筛选出相应数据写入到相应文件中,如:把“初中语文1组”相应数据填写到“初中语文1组.xlsm”文件中,把“小学数学1组”相应数据填写到“小学数学1组.xlsm...UBound(brr) FileCopy mfile, topath & brr(i) & ".xlsm" Next End Sub Sub copy_data_file()‘分别筛选并写入相应文件...D列惟一性命名】按钮~~~~~成功 【分别筛选并写入相应文件】按钮~~~~~成功

    82730

    dotnet 双缓存数据结构设计 下载库文件写入缓存框架

    我在写一个文件下载库,这个下载库利用断点续传机制,支持多线程下载一个文件。但是文件写入只能支持单线程,我不想让网络下载需要等待磁盘写入,因此我需要先在内存做缓存,然后让磁盘写入。...配合 DirectX 渲染设计方法,采用双缓存数据结构设计,也就是有两个集合,其中一个集合用来被其他模块写入,另一个集合用来作为当前使用。...此时能做到网络下载使用集合和文件写入集合不是相同一个集合,因此两部分速度差异将不会相互影响 这个文件下载库在 GitHub 完全开源,欢迎小伙伴点击 Star 和参与开发 dotnet-campus...刚好这个文件写入双缓存类足够通用,可以让我水一篇博客 如果只是想要抄代码小伙伴,请到文本最后面 这个双缓存类设计里面需要有两个集合,一个集合用于被加入,另一个集合用于被使用。...,那么这部分代码也许会写出线程相关逻辑,因此再封装一个 DoubleBufferTask 类,这是一个使用双缓存任务调度类 这个类可以支持设置任意类型作为任务数据,同时传入处理任务执行方法

    53720

    我拿乐谱训了个语言模型!

    文中使用了MAESTRO数据集,包含了172个小时经典钢琴演奏曲。该数据集采用MIDI格式音乐数据,每个MIDI文件,对应一个序列音符标注信息。...因此一首曲子就可转换一个线性序列,这样子乐谱就可以愉快和LSTM玩耍了~ 比如对于下面的mid文件[1]:(哈哈,点不了哦~) 会被标注为音符"3/4 c4 d8 f g16 a g f#", 然后传递给模型...作者伪造了两个括号数据(配对整数数据),一个具有层级递归结构(Nesting parents),一个没有递归结构但是有配对标记对信息(Flat Parens)。...这是一篇故事讲得很好且文笔十分好文章,感兴趣小伙伴可以去读一读原文,感受一下作者清晰而自洽论述过程,一步步发问,一步步深入,是一个非常享受过程~ [1] What is music21?...http://web.mit.edu/music21/doc/about/what.html

    23620

    数据结构】八大排序之快速排序算法

    : 比较序列首元素,尾元素,中间元素,取三者中中间值作为midimidi下标的数据和keyi下标的数据互换 三数取中函数实现: //三数取中法 void SwapMid_key(int* a,...快排递归展开思路类似于二叉树,因此它们拥有同样弊病,就是越靠近树底部,递归情况就越多,并且递归规模量非常大,拿下面这颗树来举例: 我们递归遍历该树,发现递归(紫色)访问次数竟然和总有效访问次数...快速排序改非递归代码实现 因为快排改非递归时要借助栈结构,因此我先将栈相关定义文件贴在这里,具体栈C语言完整实现可以移步我另一篇博客,在文末有数据结构栈实现完整代码,大家可以直接粘贴过来使用...: 【数据结构】C语言实现顺序栈(附完整运行代码) http://t.csdnimg.cn/FL0V3(注:如果本身没有自己实现数据结构栈工程文件,一定要将该博客末尾Stack.h文件和Stack.c...文件粘贴在排序项目文件里才可以正常使用栈相关功能,否则C语言是不支持直接使用!)

    21821
    领券