如何自动批量转换MIDI到MP3并调整各通道音量?
实现多通道音量自定义的MIDI转MP3自动化方案
1. 用Timidity++实现单通道音量调整
Timidity++支持通过通道增益参数或自定义配置文件单独调整每个MIDI通道的音量,你之前未成功是因为没用到正确的参数逻辑。
方法1:命令行直接指定通道增益
先通过timidity -i input.mid查看你的MIDI文件对应通道号(MIDI通道从0开始计数),假设低音、次中音、中音、高音对应通道0、1、2、3,要生成指定音量组合的文件,直接用如下命令:
# 示例:b=+0、t=-12dB、a=-12dB、s=-12dB timidity input.mid -c "gain 0 0; gain 1 -12; gain 2 -12; gain 3 -12" -Ow -o output_b0_t-12_a-12_s-12.wav
参数说明:
gain [通道号] [dB值]:dB值正负均可,+为提升音量,-为降低-Ow:输出WAV格式(Timidity直接转MP3依赖lame,先转WAV更稳定)-o:指定输出文件路径
方法2:配置文件批量管理音量方案
如果有大量音量组合,写配置文件更高效。创建vol_profiles.cfg,每个段落对应一种方案:
; 方案1:全通道0dB [all_0] gain 0 0 gain 1 0 gain 2 0 gain 3 0 ; 方案2:低音保留,其他降12dB [b_only] gain 0 0 gain 1 -12 gain 2 -12 gain 3 -12 ; 方案3:次中音保留,其他降12dB [t_only] gain 0 -12 gain 1 0 gain 2 -12 gain 3 -12
调用时指定配置文件和方案:
timidity input.mid -c vol_profiles.cfg --profile b_only -Ow -o output_b_only.wav
2. WAV转MP3
用lame工具(需提前安装)完成格式转换,命令如下:
lame -V2 output_b_only.wav output_b_only.mp3
-V2为中等音质,平衡文件大小与音质需求,可自行调整(V0为最高音质,V9为最小文件)。
3. 自动化批量生成所有方案
写脚本自动遍历所有音量组合,一键生成所有MP3文件。
Linux/macOS 脚本(batch_convert.sh)
#!/bin/bash MIDI_FILE="input.mid" # 定义所有音量组合:格式为 "方案名 通道0增益 通道1增益 通道2增益 通道3增益" VOL_PROFILES=( "all_0 0 0 0 0" "b0_t-12_a-12_s-12 0 -12 -12 -12" "b-12_t0_a-12_s-12 -12 0 -12 -12" # 可继续添加更多组合 ) for profile in "${VOL_PROFILES[@]}"; do read NAME GAIN0 GAIN1 GAIN2 GAIN3 <<< "$profile" # 生成WAV timidity "$MIDI_FILE" -c "gain 0 $GAIN0; gain 1 $GAIN1; gain 2 $GAIN2; gain 3 $GAIN3" -Ow -o "temp_$NAME.wav" # 转MP3 lame -V2 "temp_$NAME.wav" "output_$NAME.mp3" # 删除临时WAV rm "temp_$NAME.wav" done
添加执行权限后运行:chmod +x batch_convert.sh && ./batch_convert.sh
Windows 批处理脚本(batch_convert.bat)
@echo off set MIDI_FILE=input.mid :: 定义音量组合,用分号分隔 set "VOL_PROFILES=all_0 0 0 0 0;b0_t-12_a-12_s-12 0 -12 -12 -12;b-12_t0_a-12_s-12 -12 0 -12 -12" for %%p in (%VOL_PROFILES%) do ( for /f "tokens=1-5 delims= " %%a in ("%%p") do ( timidity "%MIDI_FILE%" -c "gain 0 %%b; gain 1 %%c; gain 2 %%d; gain 3 %%e" -Ow -o "temp_%%a.wav" lame -V2 "temp_%%a.wav" "output_%%a.mp3" del "temp_%%a.wav" ) )
直接双击运行批处理文件即可。
注意事项
- 先确认通道对应关系:用
timidity -i input.mid查看MIDI文件的通道乐器信息,确保通道号与低音/次中音等对应正确。 - 安装依赖:提前安装
timidity++和lame,Linux用包管理器(如apt install timidity lame),macOS用Homebrew(brew install timidity lame),Windows可下载绿色版。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

