 VORBIS.ACM𗘗pł̒ӓ_

̃hLgł́AȂ̍iVORBIS.ACM𗘗pł̒ӓ_
qׂĂ܂B

VORBIS.ACM̂ɂĂ͓README.TXTQƂĂB


 [JhCoƂĎgp

́ACZX̐ł͂Ȃw肢xȂ̂łAQ[Ȃǂ
VORBIS.ACM𗘗pꍇ(README.TXTɂĂʂ)AO[oh
CoƂăGh[U[VORBIS.ACMCXg[̂ł͂ȂA
ł邾[JhCoƂVORBIS.ACM𗘗p悤ɂĂB

VORBIS.ACMۏ؂ȃ\tgEFAł邱Ƃ܂Ao[Ẅ
ɂguh~̂ȖړIłB

README.TXTŏqׂwLIxpړIƂꍇA̗p(
̃zXg\tgEFAƓ̃f[^̑gݍ킹)ł̂ݐɈƂ
łΗp̂ŁAݓIȕsꂽƂĂAu
ɑ΂ӔC𕉂킸ɍςނł傤B

ƂƂŁApȃguh~邽߂̑[uł̂ŁA͂肢
܂BȂAۂɃ[JhCo𗘗pTv(?)ȉ
t@Cɂ܂̂ŁAQlɂĂ݂ĂB

"src/vorbisacm/dump.cpp"

vorbis.acm̃W[[h鎞(LoadLibrary())鎞AȂׂ
pX̎wsă[hĉB

char fullname[MAX_PATH];
GetModuleFileName(NULL,fullname,MAX_PATH);

char drive[_MAX_DRIVE];
char path[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(fullname,drive,path,fname,ext);
_makepath(fullname,NULL,NULL,"vorbis","acm");

HMODULE hModule = LoadLibrary(fullname);


 IōĐ

IŃgbNĐKvƂȂȂAWin32 APIPlaySound()ŉ
̍HvȂĐ\łBAqacmStreamSize()̉l̖
肩]ɃȀI[ĐȂȂǂ̕s
ꍇ܂B


 fR[h̃TCY\

ȂƂł́AVORBIS.ACMł̃GR[hʂVBRō\܂B
[CBȐꍇ܂߂āAmȃACg͂܂()Ak
ł͂܂BacmStreamSize()ɂĎ擾lf
R[hɕKvȐmȃobt@TCY𓾂邱Ƃ͂ł܂B

WAVEFORMATEX::nBlockAlign̓fR[h̃ACg\Ă܂

fR[h̃TCY\ߐmɗ\ɂ́A'fact'`N𗘗p
@܂B

Ȃ݂acmStreamSize()̉ĺAɗ]T̂TCYԂ()AX
g[ΐA̓obt@(wǂ̏ꍇ)Sɏ܂Ao
obt@(wǂ̏ꍇ)]T̂ԂɂȂ͂łBāA
𑽏ʂɂĂǂ̂ȂacmStreamSize()œl𗘗pĂ
ł傤B

ꕔ̃AvP[V(TEhR[_[)AA̓Xg[
SɏȂƁAcf[^̂ĂĂ܂Ƃ肪A
VORBIS.ACMł́A̓obt@OɁAo̓obt@
Ă܂̂h߁A̓TCY͏߂ɁAo̓TCY͑傫߂ɕ񍐂
dg݂ɂȂĂ܂B

܂ARŁAXg[ĐꍇɁAmȃV[NsƂ
܂BmȃV[NKvƂꍇAXg[Đ(fR[h)
āAUSŃfR[hPCM̏Ԃɖ߂Ă瑀삷Kvł
B


 acmStreamSize()Ńobt@TCY𓾂

܂Ao̓TCY̑OƂāA

Eo̓obt@ƁA̓obt@
  Oɏo̓obt@ςɂȂĂ܂ꍇ
E̓obt@ƁAϊ̌ʂȂ(o
  ̓oCgÖ)ꍇB

Aǂ̏󋵂ɊׂĂIɃobt@OsĂ̂
CODEC͐ɓ삷(͂)łA

E̓obt@SɏȂƁÂ̕Ă
  ܂AvP[V݂B
Eo͂ȂƁAϊXg[ÎƔf
  Ă܂AvP[V݂B

̂ŁA͂Əo͂̃TCY𗼕Ƃ擾āAꂼ̌񐔂obt@
TCYƂč̗p̂Ǝv܂B

TEhR[_[ł́AŒ̓TCYŁAo̓TCYNG[悤ł
WMP6.4AWMP7ł́A擾Ĕf悤ł
SoundForge 4.5ł́A{Iɂ͗擾Ĕf悤ł(f̊
͕܂񂪁AŒ͂Ŕfꍇ悤ł)

vɁAACM_STREAMSIZEF_DESTINATIONŃNG[āAꂽl𔽕
IACM_STREAMSIZEF_SOURCEɓnăNG[΁ACODEC{ɕKv
TCYƌłB


 o[ẄႤCODECmode3f[^Đ

readme.txtɂʂAmode3(܂mode3+)ō쐬f[^CODEC̃o[
WłȂƐɍĐȂꍇ܂B

̏ꍇAf[^쐬Ɏgpo[WCODECgpāA_~[p
mode2̃t@C쐬AacmStreamOpen()pwfxSrcɃ_~[t@C
WAVEFORMATEXnĂΖwǂ̏ꍇɃfR[hł͂łB

AgbL[ȕ@łccB
