主题 : 【测试】如何转换可循环播放的adx
YZB
级别: 超级版主

UID: 12451
精华: 6
发帖: 19106
威望: 173 星
金钱: 2058 浮游币
贡献值: 10284 点
好评度: 54894 点
人气: 4322 点
在线时间: 19818(时)
注册时间: 2004-10-02
最后登录: 2024-12-26
楼主  发表于: 2012-06-03 00:31

【测试】如何转换可循环播放的adx

管理提醒: 本帖被 YZB 执行提前操作(2014-08-21)
原来一直想写个教程的,都懒得动手,近日kona又提到以前做的那个街霸,想起来那游戏音乐没循环,重新做个又麻烦,授人以鱼不如授人以渔,所冶ΡΥ个简单的教程,方便大家自由转换 diy adx音乐吧~、

wav转换成adx音乐的程序好像有一些,不过支持音乐循环的好像没几个,个人习惯用dos窗口转换的adxencd.了,出错率小一点~

先下载附件的压缩包,解压,里面包含了4个文件


CinePackcc.exe 播放adx音乐的播放器,用来测试转换后的adx文件

2.wav 测试转换用的wav文件

adxencd.exe 转换程序

test.bat 转换用的bat快捷方式(修改编辑就是用这个文件了)


先看看adxencd程序的说明:


复制代码
  1. ||||||||||||   ADX Audio decompression tool Ver.4.70    ||||||||||
  2. Software Audio Encoder for "CRI ADX for Dreamcast"     1999-11-30
  3. Copyright(c) 1996-1999 CRI
  4.        Usage: adxencd <Input PCM File> [Output Dir] [Options]
  5. <PARAMETER>
  6.     Input  PCM File : Input audio data file [.wav|.aif]
  7.     Output Dir|FIle : ADX output directory or file
  8.                       'File' should be specified extention[.adx]
  9. <OPTIONS>
  10.     -sf<sfreq>      : Sampling freq. for compression [Hz] def=same as input
  11.     -ch<mode>       : Audio data channel  def=not specified
  12.                       0=Left  1=Right  2=L/R exchange  3=(L+R)/2(MONO)
  13.     -lmsec<msec>    : Compression data size [msec] def=input data size
  14.     -lcof<freq>     : CutOff freq. for down-sampling LPF [Hz] def=Auto
  15.     -ldim<dim>      : Down-sampling LPF dimension
  16.     -lps<pos>       : Loop start position [smpl]
  17.     -lpe<pos>       : Loop end position [smpl]
  18.     -lpa            : Loop all
  19.          -p2g<switch>    : Gain data, 2's power  ON=1/OFF=0 def=OFF
  20.     -sbg<switch>    : Gain data, number of bit shift ON=1/OFF=0 def=OFF
  21.     -dflt           : Specify ByMatch as DFLT filter type
  22.     -k<k1>          : Factor of filter1(double value) def=not specified
  23.     -nf<nfilt>      : Specify filters to be optimized (0..nfilt-1 are specified)
  24.     -lkb<byte>      : Max. size of compress data[Kbyte] def=not specified
  25.     -cof2<freq>     : ADPCM2 High-pass filter CutOff freq. def=%s Hz
  26.     -b<blksize>     : Compression data block size [smpl] def=%s
  27.     -f<filtno>      : Fixed filter number [-1..3] , -1=Optimize def=ADPCM2
  28.     -dbg<pos>       : Sample number, encoding information required.
  29.     -r<type>        : Output RDS file [??r.wav]
  30.                       1=RDS  2=After gain adjust 3=Reproduced signal
  31.     -w[filename]    : Output encoded audio data file
  32.                       WAV data after LPF and down-sampling
  33.                       [??@.wav] is used if filename was not specified.
  34.     -opt            : Display all options (including DebugOption)






英文不好的是不是和我一样看着很晕,嘿嘿,其实弄懂几个关键的指令就可以了~~(求英语达人翻译一下上面那段说明)

用记事本打开test.bat文件,然后会发现下面就写了1行

adxencd 2.wav D:\adx\2.adx -sf=44100Hz -lps=220500 -lpe=441000

来看下这些都代表什么意思~

adxencd 主程序文件,不用说

2.wav 需要转换的wav文件记得必须查看采样率,下面需要用到,大部分的音乐播放器都可以查看采样率的,目前这个文件是44100hz

D:\adx\2.adx 输出文件位置,这个只能是绝对地址,不能是相对地址~~

-sf=44100Hz 输出采样码率 (转换的文件和输出的adx文件采样率必须一致) dc只认那几个标准的采样率 22050 32000 44100 48000.........

-lps=220500循环起点
-lpe=441000 循环结尾

这2个的计算方法为 开始时间(单位秒)x采样率

比如我这个测试文件想从第5秒开始到第10秒一直循环播放,第一个就填 5x44100(采样率)=220500第2个就填 10x44100(采样率)=441000

如果你是想整个音乐从头到尾都循环的话就不需要计算了,直接在输出采样码率后面写上一个 -lpa 就可以了~


这样写好以后保存,在运行bat就可以得到可循环的adx文件了~
赶紧用播放器测试一下吧~


最后说一下,这个也是支持批量转换的,在bat上编辑好就可以了~

比如像这样


adxencd 0.wav D:\adx\0.adx -sf=44100Hz -lps=220500 -lpe=441000
adxencd 1.wav D:\adx\1.adx -sf=44100Hz -lps=220500 -lpe=441000
adxencd 2.wav D:\adx\2.adx -sf=44100Hz -lps=220500 -lpe=441000
adxencd 3.wav D:\adx\3.adx -sf=44100Hz -lps=220500 -lpe=441000


关键就是要编辑好循环起点 和循环结尾就可以了~~
[ 此帖被YZB在2012-06-03 00:49重新编辑 ]
附件: adx.rar (873 K) 下载次数:22
级别: DCLT汉化组
UID: 320459
精华: 16
发帖: 541
威望: 161 星
金钱: 719 浮游币
贡献值: 96 点
好评度: 1748 点
人气: 34 点
在线时间: 988(时)
注册时间: 2012-10-02
最后登录: 2024-02-18
沙发  发表于: 2014-06-20 10:54

这么不错的帖子.竟然没几个人
试了下效果不错!自己来掐循环ADX难免有点不准~
Y大!有没有办法修改一下里面的test.bat

能不能让他自动识别当前文件夹(就是D:/ADX文件夹)下的wav文件!
每次修改名字有点麻烦!然后让其输出也是此名字!

意思就是我吧wav丢进去!然后修改循环.执行就可以了

这样就方便多了!不知道可不可以实现~