Skip to content
/ m2v-conv Public
forked from denjhang/m2v-conv

Batch conversion and modification of mml text in mml2vgm format

License

Notifications You must be signed in to change notification settings

idrey/m2v-conv

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

m2v-conv

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。

About

Batch conversion and modification of mml text in mml2vgm format

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%