Batch conversion and modification of mml text in mml2vgm format
0.0 win32程序,运行程序时先读取同目录下的setting.ini文件,该setting.ini记录了转换时必要的参数。若同目录下没有此文件,则自动创建一个。配置文件主要针对没有返回值的转换过程,比如定义音量的最大值或最小值,转换后的新文件名(一般默认为原文件名-out),等参数。并且会在ini文件中加入是否自动转换的选项,若需要自动转换,则该程序运行全过程都无需用户输入任何数据。若不需要自动转换,则每一个文件将询问以下描述的转换功能。
0.1 自动转换模式下,自动扫描同目录下所有gwi文件并按照ini中的参数实现批量自动化转换。
0.2 ini参数设定:
tmax、tmin 目标音量最大、最小值。如tmax=127,tmin=100
vmax、vmin 通道音量最值。这两条必须有区分。如vmax=127,vmin=0.
mode 转换模式 mode=0自动模式,mode=1手动模式。后期将添加其他功能的参数。目前的参数仅适用于音量修改。
vrate 音量比例压缩系数,默认0.1
outname 输出文件名尾缀,如outname=-out
1.音量修改v
2.音高o
3.音色@
4.通道'
1.音量修改。首先自动扫描gwi文件里面所有形如v68这样的字符串。v后面的数值范围是0~127。修改要求是用户先给出音量最大值和最小值。程序按照比例提升音量值,并使得音量值落在最大值和最小值区间之中。
2.音高修改。o后面跟着一位数。直接让用户输入要增加的音高。
3.音色修改,先扫描一遍文本中出现的所有@开头的字符串。并且打印在屏幕上。然后询问用户需要将什么改成什么。
4.通道修改类似的,跟上面一样。
1.先扫描所有vxxx,xxx表示二位或三位数字如v64,v120.xxx范围在ini中定义的通道音量最大值vmax与最小值vmin,目前默认0-127。扫描结果存入v[n]数组
2.对v[n]数组求平均数得a
3.将v[n]/a得数组va[n],比例系数数组
4.将目标音量最大值tmax与最小值tmin求平均数得vma
5.va[n]*vma=vma[n]
6.检查vma[n]中的最大值与最小值,若超出tmax与tmin区间,则执行比例压缩。若出现小数,则四舍五入。
7.比例压缩子程序。将va[n]中小于1的比例系数加vrate,大于1的减vrate,之后循环执行5-7步骤,直到vma[n]都落入tmax,tmin区间。
8.将gwi文件中所有vxxx(实际上是v[n])都替换为vma[n]并保存新文件,文件名为原文件名outname。