如114514,1919810之类的(好臭)
想调到特定的数值,我用Domino最大只能调到105000bpm,我想调到更大
1 回答
人生苦短,我用Python。
将下列代码保存为py格式文件运行,按提示操作即可。
此代码没有经过事先测试,如有问题欢迎反馈。
import tkinter as tk
from tkinter import filedialog, messagebox
from mido import MidiFile, MidiTrack, MetaMessage
def select_midi():
global midi_file
midi_file = filedialog.askopenfilename(filetypes=[("MIDI Files", "*.mid *.midi")])
if midi_file:
try:
mid = MidiFile(midi_file)
for track in mid.tracks:
for msg in track:
if msg.type == 'set_tempo':
bpm = int(60000000 / msg.tempo)
bpm_label.config(text=f"当前BPM值: {bpm}")
break
except Exception as e:
messagebox.showerror("编辑器坏掉了!", "编辑器坏掉了!这不是作者的问题!绝对不是!")
root.destroy()
def change_bpm():
try:
new_bpm = int(bpm_entry.get())
mid = MidiFile(midi_file)
for track in mid.tracks:
for i, msg in enumerate(track):
if msg.type == 'set_tempo':
msg.tempo = int(60000000 / new_bpm)
track[i] = msg
break
save_path = midi_file.replace(".mid", f"_new_{new_bpm}.mid")
mid.save(save_path)
messagebox.showinfo("疑似是成功了", "已经将更改好的midi保存至脚本所在目录!")
root.destroy()
except Exception as e:
messagebox.showerror("编辑器坏掉了!", "编辑器坏掉了!这不是作者的问题!绝对不是!")
root.destroy()
root = tk.Tk()
root.title("欢迎使用MIDI BPM 编辑器测试版!(作者:エア小鳥遊さん)")
root.geometry("400x200")
label = tk.Label(root, text="请输入您想要更改的BPM值:")
label.pack(pady=10)
bpm_entry = tk.Entry(root)
bpm_entry.pack(pady=5)
bpm_entry.config(validate="key", validatecommand=(root.register(lambda text: text.isdigit()), '%P'))
bpm_label = tk.Label(root, text="当前BPM值: 未选择文件")
bpm_label.pack(pady=5)
select_button = tk.Button(root, text="选择midi", command=select_midi)
select_button.pack(side="left", padx=20, pady=20)
change_button = tk.Button(root, text="立即更改", command=change_bpm)
change_button.pack(side="right", padx=20, pady=20)
root.mainloop()
您的回答
登录以回答这儿是 MidiShow 问答区,欢迎您请教或帮大家解决关于音乐创作、MIDI 应用、MIDI 技术等音乐相关的问题。
问答区积分规则如下:
- 提问、回答或自问自答积分均不变
- 问题被赞成 : +10
- 问题被反对 : 提问者 -2,点击反对者不扣分
- 回答被赞成 : +10
- 回答被反对 : 回答者 -2,点击反对者 -1
- 提问者选出满意回答 :回答者 +15 ,提问者 +2
参与问答前请阅读:问答区玩法规则