当前位置: 首页 > wzjs >正文

ASP做购物网站视频湖南seo网站开发

ASP做购物网站视频,湖南seo网站开发,网站建设招标书,建设网站的结束语pip install mido 使用 mido库可以方便地处理 MIDI 文件,提取其中音轨的音乐数据。 1.下面的程序会读取指定的 MIDI 文件,并提取指定编号音轨的音乐数据,主要包括音符事件等信息。 编写 mido_extract.py 如下 # -*- coding: utf-8 -*- &…

pip install mido

使用 mido库可以方便地处理 MIDI 文件,提取其中音轨的音乐数据。

1.下面的程序会读取指定的 MIDI 文件,并提取指定编号音轨的音乐数据,主要包括音符事件等信息。

编写 mido_extract.py  如下

# -*- coding: utf-8 -*-
""" 用 mido 提取 midi文件中某一音轨的音乐数据 """
import os
import sys
from tkinter import filedialog
import midodef extract_track_data(midi_file, track_no):try:track_data = []tracks = midi_file.tracksfor i,track in enumerate(tracks):print(f"Track {i}: {track.name}")if track_no < len(tracks):track = tracks[track_no]for msg in track:if msg.type in ['note_on', 'note_off', 'control_change', 'program_change']:track_data.append(msg)            else:print(f"音轨编号 {track_no} 超出范围,该MIDI文件共有 {len(tracks)}条音轨。")return track_dataexcept:print(" 无法读取MIDI文件.")return Nonedef write_track_to_midi(track_data, output_file_path, original_mid):new_mid = mido.MidiFile(ticks_per_beat=original_mid.ticks_per_beat)new_track = mido.MidiTrack()for msg in track_data:new_track.append(msg)new_mid.tracks.append(new_track)new_mid.save(output_file_path)# main()
if len(sys.argv) ==1:filetypes = [('mid file','.mid')]f1 = filedialog.askopenfilename(initialdir='D:/Music', filetypes=filetypes)
elif len(sys.argv) ==2:f1 = sys.argv[1]
else:print('usage: python mido_extract.py file1.mid')sys.exit(1)if not os.path.exists(f1):print(f"{f1} is not exists.")sys.exit(2)fn,ext = os.path.splitext(f1)
if ext.lower() != '.mid':print('ext is not .mid ')sys.exit(2)midi_file_path = f1  # 替换为实际的MIDI文件路径
x = 1  # 替换为想要提取的音轨编号,从0开始
output_file_path = f"track_{x}.mid"  # 替换为输出的MIDI文件路径
try:original_mid = mido.MidiFile(midi_file_path)data = extract_track_data(original_mid, x)if data:write_track_to_midi(data, output_file_path, original_mid)print(f"已成功将track {x} 数据写入 {output_file_path}")
except mido.MidiFileError:print(f"无法读取MIDI文件 {midi_file_path}")

运行 python mido_extract.py moon_river.mid
生成 track_1.mid

上述代码中,extract_track_data函数负责提取指定音轨的数据,write_track_to_midi函数则将提取的数据写入新的 MIDI 文件。你需要把midi_file_path换成原始 MIDI 文件路径,track_number设为目标音轨编号,output_file_path指定输出文件路径。


2.下面的代码会复制保留原 MIDI 文件中 Track 0 的全部信息,同时提取 Track 1 的音乐数据,然后将它们合并到一个新的 MIDI 文件中。

编写 mido_extract1.py  如下

# -*- coding: utf-8 -*-
""" 用 mido 复制保留 Track 0 全部信息,提取 Track 1 音乐数据 """
import midodef copy_track0_and_extract_track1(midi_file_path, output_file_path):try:# 读取原 MIDI 文件original_mid = mido.MidiFile(midi_file_path)if len(original_mid.tracks) < 2:print("MIDI 文件中没有足够的音轨(至少需要 2 条音轨)。")return# 创建新的 MIDI 文件,复制原文件的 ticks_per_beatnew_mid = mido.MidiFile(ticks_per_beat=original_mid.ticks_per_beat)# 复制 Track 0 到新的 MIDI 文件new_mid.tracks.append(original_mid.tracks[0])# 提取 Track 1 的音乐数据track1 = original_mid.tracks[1]track1_data = []for msg in track1:if msg.type in ['note_on', 'note_off', 'control_change', 'program_change']:track1_data.append(msg)# 创建新的音轨并添加 Track 1 的数据new_track1 = mido.MidiTrack()for msg in track1_data:new_track1.append(msg)new_mid.tracks.append(new_track1)# 保存新的 MIDI 文件new_mid.save(output_file_path)print(f"已成功将 Track 0 信息和 Track 1 数据写入 {output_file_path}")except mido.MidiFileError:print(f"无法读取 MIDI 文件 {midi_file_path}")if __name__ == "__main__":midi_file_path = "your_midi_file.mid"  # 替换为实际的 MIDI 文件路径output_file_path = "new_midi_file.mid"  # 替换为输出的 MIDI 文件路径copy_track0_and_extract_track1(midi_file_path, output_file_path)

代码说明:

  1. 读取原 MIDI 文件:使用 mido.MidiFile 读取指定路径的 MIDI 文件。
  2. 检查音轨数量:确保 MIDI 文件中至少有 2 条音轨。
  3. 创建新的 MIDI 文件:使用原文件的 ticks_per_beat 创建新的 MIDI 文件。
  4. 复制 Track 0:将原文件的 Track 0 直接添加到新的 MIDI 文件中。
  5. 提取 Track 1 数据:遍历 Track 1,提取 note_onnote_offcontrol_change 和 program_change 类型的消息。
  6. 创建新音轨并添加数据:创建一个新的音轨,并将提取的 Track 1 数据添加到该音轨中,然后将该音轨添加到新的 MIDI 文件中。
  7. 保存新的 MIDI 文件:将新的 MIDI 文件保存到指定的输出路径。

你需要将 midi_file_path 替换为实际的 MIDI 文件路径,将 output_file_path 替换为你希望保存的新 MIDI 文件的路径。

http://www.dtcms.com/wzjs/401371.html

相关文章:

  • 如何做一个网站推广自己的产品惠州百度关键词优化
  • 怎样在微信公众号里做微网站网站收录有什么用
  • 桥头网站仿做关键词优化seo排名
  • 无锡网站设计网站百度在线问答
  • 北京工程网站建设疫情防控最新政策
  • 网站建设与管理维护书籍如何推广网上国网
  • wordpress如何注册地址武汉seo网站管理
  • 武汉做网站找互赢网络2023网站seo
  • 哪个网站可以做自己的网页软文编辑
  • 近期热点舆情事件排名优化公司哪家好
  • 搜索网站有哪些优秀软文范例800字
  • 做网站的技术路线郑州网络营销与网站推广
  • 东莞网络网站建设绍兴seo排名
  • 中讯科技-运城网站建设新闻网最新消息
  • 为您服务网站陕西网站建设制作
  • 河南省住房城乡建设门户网站互联网营销案例
  • 定制专业网站软文素材
  • wordpress两个侧边栏廊坊seo优化排名
  • 用vs2013做网站济南seo网站关键词排名
  • 大连网站制作培训媒体发布平台
  • 建设现金分期网站seo排名
  • 哪些网站可以做邀请函怎么创建个人网站
  • 做网站什么内容吸引人做网站推广好做吗
  • 专业网站的特点品牌关键词优化哪家便宜
  • 西宁网站制作费用是多少钱汕头seo网络推广服务
  • 上海网站建设模版百度图片搜索引擎入口
  • 网站及推广seo内容优化方法
  • 平江高端网站建设哈尔滨网站优化
  • 狠狠做网站改成什么了百度广告联盟下载
  • 集宁网站建设SEO优化推广优化