tau的 wavtool (工作日记)
作者: PaulLiu 日期: 2011.06.12 天气:


心情:


这方面的文件几乎没有. 我想可能的原因是太简单而微不足道.
但还是稍微的写下来. 除了避免别人重复花心力於此. 也可算是决心与毅力的证明.
当我们直接使用 wavtool.exe 时, 会发现他需要参数如下
wavtool2 <outfile> <infile> offset length p1 p2 p3 v1 v2 v3 v4 ovr p4 p5 v5
其中 outfile 就是要输出的档案. 也会拿来当做输入使用. 所以输出档以 out.wav.whd out.wav.dat 储存.
分别是 WAVE 的 header 及 WAVE 的资料部份.
而 infile 则是输入档, 会依据后面的参数来调整, 并且连接(或部份重叠)至 outfile.
而之后的参数则鲜少有文件说明. 不过只要用几个档案输入进去研究一下, 我们不需要一天就可以知道他的用途.
其中 offset 以 ms 为单位, 决定舍弃多少部份的 infile.
length 的格式为 XXX@TEMPO(+|-)YYY.YYY 其中 TEMPO 就是乐曲的节奏, XXX 的单位是 1/480 个四分之一音符.
而 YYY.YYY 单位则是 ms. 可以对前面的 XXX
@TEMPO 进行 +/- 的修正.
ovr 则为 overlap 的长度, 单位为 ms. 要注意的是 length 如果换算成 X ms, 而 ovr 为 Y ms, 则档案增加的长度应该是 X-Y ms. (因为 Y ms 要与之前留下的 Y ms 进行 mix)
而 p1 p2 p3 p4 p5, v1 v2 v3 v4 v5 分别表示 "点" 与 "声音大小".
pX 的单位为 ms, 为相对位置, 而 vX 的单位为百分比. 用来调整声音大小.
使用方法是, 假设档案开头(去除offset后)为 p0=0 ms, v0=0%. 档案结尾为 pe ms, ve=0%
p0=0 -> p1 -> p2 -> p5 ... p3 <- p4 <- pe
v0=0 -> v1 -> v2 -> v5 ... v3 <- v4 <- ve=0
也就是 p1 为距档案开头多少ms, p2为距p1多少ms.
我们必须调整声音的大小至 vX 於相对应的位置上.
中间的部份则用线性内插.
一般来说 p5 很少使用, 所以几乎都是 p5=0, v5=v2 这样设定.
也就是说, 要实做这个程式绝对不是件难事. 比起 resampler.exe, 这简单得太多.