                              ̃tH_̓eɂ
@@@                                                     24N1026
                                                        @@@   Ⓖq

@̃tH_ɂ́A{ŐĂvÕ\[XR[h𒆐SɊ֘A
t@CڂĂB܂A32bit}VŃRpCobjt@CcĂB
VɎśAU폜Ă悭A{Iɂ͓̃R[hobjt@C
ł悤ɂȂĂB

zz̃@[Wɂ
@@Revision.txtɔzz̗邽߁AȂ炸QƂ̂ƁB

t@C
@Program_id.xls @e̐
@Revision.txt   ܂ł̕AуvO̍XV

TEhɂ
@vOŗpo͂ĎcĂB
@{vOȊOō쐬ꂽATv͈ȉ̂ƂB
@   fot.bak.441.wav @Z
     fot.bak.44.wav@
     summer2006_5.wav@finaleō쐬sAmTv
@@tH_@summer2006  summer2006_5.wav ֘Ã@G[V

{vOWindows XP, Windows Vista, Windows 7œmFς݁B
@@@@@@@@܂A32bit}VłȂA64bit}VłmFς݁B

RpČxɂ
@bcc32ł́Aϐ`ĂȂAvOŎgpȂꍇW8057̃R[hŁA
@܂AϐɑĂȂA̍sȍ~ł̕ϐgpȂꍇW8005 ̃R[h
@xoB
@x W8057̗F
 @int abc;
   Ȍ̖{łabc ؎gpȂꍇB

@x W8004 ̗:
  @int def;
    def= 1.5*4;
    ̍sȍ~Ł@Eӂdef鎮ȂꍇB
 
{{TCgŏЉĂvOɂ́ǍxôB
W8057̓vO̊JrŕKvłϐŏIIɕsvƂȂAz̗{
ƓlɁAɂ͓P(폜)ׂł邪폜Yꂽ̂łB

W8004lɁAJrŕKvƂvZAɂ͂̌vZʂ𗘗pȂꍇȂ
B

́A{SɏׂłAƂ̍lRł͂邪Ał́Aȉ
lɂǍxc܂܂ƂB

ɂU͂Pv, SinuȂǂ̉pvÓAԃp[^͕ύXɂ͕KvƂ̔f
ȉ̖{RpC̓L̎ɂA{xׂłȂ̂xƂ邱ƂɂȂB

xȂ̗
    nwdw=2*L*nfft+1;
    hamwdw1(hwdw,nwdw);

x W8004 ̗:
    hamwdw1(hwdw,(nwdw=2*L*nfft+1));

vO̓͂܂ɂ炸A͌xoB

̌xς킵ꍇ́Aȉ̃RpCXCb`gp邱Ƃ߂B
vOtest.čx\ȂꍇB

    bcc32 -w-8057 test.c
    bcc32 -w-8004 test.c

vOɂ
@{ƂƂɂǂ݂B
---------------
3.4 ȒPȃvOyXg3.1z
st@C쐬 юs
 bcc32 hello.c
 hello
---------------
3.5 t@C̓ó@wavreadtest.cyXg3.2, 3.3, 3.4, 3.5z
st@C쐬
 bcc32 -c wavread.c
 bcc32 -c wavwrite.c
 bcc32 wavreadtest.c wavread.obj wavwrite.obj
s
 wavreadtest inputsound.wav outputsound.wav

---------------
3.7 gt@C̍쐬@sine.cyXg3.6z
st@C쐬iRpCENjюs
 bcc32 sine.c wavwrite.obj
 sine 88200 10000 440 44100 3.6.sine.wav

==========================================================================
Windows APIpvO
Ql
1. }`fBAvO~O
http://www13.plala.or.jp/kymats/study/multimedia.html

2. Atelier Blue@WAVEt@C̃f[^A^CɏčĐ
http://www.atelier-blue.com/memo/memo2006-4-22.htm

---------------
3.8.1 EBhE̕\@winapi_test.cyXg3.7z
st@C쐬@юs
 bcc32 -W winapi_test.c
 winapi_test

RpCɈȉ̌xoB
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
winapi_test.c:
x W8057 winapi_test.c 49: p[^ 'hPrevInstance' ͈xgpȂ(֐ WinMain )
x W8057 winapi_test.c 49: p[^ 'lpCmdLine' ͈xgpȂ(֐ WinMain )
x W8057 winapi_test.c 49: p[^ 'nCmdShow' ͈xgpȂ(֐ WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

̌x͕ϐ`Ă̂ɎgpĂȂƂɑ΂xłB
vOgp̎ۂɕss͂ȂB̗ł́Ainclude filewindows.h
 ̒łincludeĂwinbase.h ̒ŁA1262-1267s

WinMain(
    IN HINSTANCE hInstance,
    IN HINSTANCE hPrevInstance,
    IN LPSTR lpCmdLine,
    IN int nShowCmd
    );
ƒ`ĂA̒`ɉăXg3.7̂悤ɃvOŕKv̂Ȃ
ϐLqĂꍇɐxłBA̕ϐƁA
̒`ɔӖŁAtɃRpCɃG[ƂȂB

{ł́AWindows API̊ȒPȏЉɂƂǂ߂邽߁Ainclude file𗘗pĂ
BA̕ϐ_~[Ŏgp悤Ȗʂȏ͍sȂ߁A
RpČx͕sȂ̂ƂēoꂷBȍ~Windows APIgp
vOlȌۂoB
L}邽߂ɁA-w-8057B

bcc32 -W -w-8057 winapi_test.c

---------------
3.8.2 {^Enj{^̕\ƊȒPȕ`@winapi_test1.cyXg3.8z
st@C쐬@юs
 bcc32 -W winapi_test1.c
 winapi_test1

x}ꍇ̎st@C쐬
@bcc32 -W -w-8057 winapi_test1.c

---------------
3.9.1 fBXNt@C̍Đ@wav_multi_file.cyXg3.9z 
st@C쐬@юs
 bcc32 -W wav_multi_file.c wavread.obj
 wav_multi_file

G[Nꍇ́AXg3.915sڂꂽB
{ɂ悤ɁAƃtH_c:\srcłȂƃG[N邽߁Aӂ
vB
ȂA\[XR[h́ALQl@2)Qlɂȉ̓_lĐ삵B
1. XeIM̉HĐmM̍ĐƂB
2. t@C֌WʂopenWaveFile֐pwavreadpB
3. ȈՉ邽߁A349s̃vO194sƂB

FxW8060{̂̓ɂ͉eȂB
yx\ɂst@C쐬z
 bcc32 -W -w-8060 -w-8057 wav_multi_file.c wavread.obj

---------------
3.9.2 ֐g`̃A^CĐ@wav_multi.sine.cyXg3.10z
st@C쐬@юs
 bcc32 -W wav_multi.sine.c
 wav_multi.sine

FEBhEōNbNōĐAENbNŒ~BEBhE
͒~B
{vO̓
9s
double f=357.43 ; // M̎gkHzl
Ƃ悤ɁACӎg̐gr؂ꂸɁAivɌpčĐB

---------------
3.9.3 Րɂn[ɃNX̐@wav_multi.harm.cy{XgȂz
st@C쐬@юs
 bcc32 -W wav_multi.harm.c
 wav_multi.harm

yxCŁz@wav_multi.harm.v1.c
st@C쐬@юs
 bcc32 -W -w-8057 wav_multi.harm.v1.c
 wav_multi.harm.v1

FEBhĚՓōNbNōĐAENbNŒ~BEBhE
Ă͒~BȂA~ƍĐ݂ɍsƂ͍lĂ炸A
ʏ͈~Ɖ̍Đ͂ȂȂBčs߂ɂ́AՏŉEN
bNŒ~ƁAUEBhĚՊO֏oāANbNA莞
ôAՓɖ߂ƏԂɖ߂Đ\ƂȂB

---------------
3.9.4 g`e[u wavtable0.cy{XgȂz
st@C쐬@юs
 bcc32 -W wavtable0.c
 wavtable0

FEBhĚՓōNbNōĐAENbNŒ~BgbNo[
̈ʒu}EX̃hOɂړ邱ƂɂAg̎gύXłB
g͕\BF֐sine_funcŁAgقȂƂX[YɈڍs
ł悤UԂȂڑsiNXtF[hj

yx\ɂst@C쐬z
bcc32 -W -w-8057 wavtable0.c

==========================================================================
4.1@֐g`̍ func_gen.cyXg4.1z
st@C쐬@юs
 bcc32 func_gen.c wavwrite.obj
 func_gen func# n_data amp f fs filename

s
 G 2b@U:10000 (440̓_~[) TvOg:44100Hz
@func_gen 1 88200 10000 440 44100 outsound.wav

 Opg@2b U:10000 Mg:440Hz TvOg:44100Hz
@func_gen 2 88200 10000 440 44100 outsound.wav

---------------
4.2 ϒ@func_gen1.c yXg4.2()z
͏LvO42-51sځA 62-83s
st@C쐬@юs
 bcc32 func_gen1.c wavwrite.obj
 func_gen1 func# n_data amp f(fc) fm I fs filename

F\[XR[hcons1,cons2Ȃϐ͕svŃRpCxo邪A
s̃G[ɂ͂ȂȂB{Ƃ̑ΉACȂvO
cB
C
 func_gen1.v1.c

s:
ĝ悤ɁAقǑ̈Ȃg`A_~[̒lKB
ȉ̐g̏ꍇ15003.0A܂RM2 ̓_~[lłB

g@2b@U:10000 Mg: 440Hz TvOg:44100Hz 
         o̓t@C:outsound.wav
func_gen1 0 88200 10000 440 1500 3.0 44100 outsound.wav

RM 2b@U:10000 gfc: 440Hz ϒgfm: 2Hz TvOg:
         44100Hz@o̓t@C:outsound.wav
func_gen1 2 88200 10000 440 2 3.0 44100 outsound.wav

FM 2b  U:10000 gfc: 440Hz ϒgfm: 80Hz   ϒwI: 5.0
         2Hz TvOg:44100Hz     o̓t@C:outsound.wav
func_gen1 4 88200 10000 440 80 5.0 44100 outsound.wav

---------------
4.3 g`e[u
@3.9.4 Q

---------------
4.3.2 |֐ɂg`e[u
st@C쐬@юs
 bcc32 -W wavtable_sweep.c
 wavtable_sweep

́@3.9.4 g`e[ȗƓlB

yxCŁz wavtable_sweep.v1.c
st@C쐬@юs
 bcc32 -W -w-8057 wavtable_sweep.v1.c

---------------
4.4 Karplus-Strongɂ靛̍ Karplus.c yXg4.5z
st@C쐬@юs
 bcc32 Karplus.c wavwrite.obj
 Karplus n_data amp f fs filename ({p93 10sڂfLژR,
@܂lɃXg4.5ƘAfLژRƂȂĂB
@łKarplus.c͏CłڂB)

s
  ɂsb`880Hz, fs:44100Hz̉2boutsound.wavɍB
@Karplus 88200 10000 880 44100 outsound.wav

---------------
4.5 Karplus=StrongɂŊy퉹̍ Karplus_drum.c yXg4.6 ()z
st@C쐬@юs
 bcc32 Karplus_drum.c wavwrite.obj
 Karplus_drum wnoise n_data amp b f fs filename

s:
XlA̋@(b=0.5 XV@100Hz) Ԃ͒@2b
 Karplus_drum 88200 10000 0.5 100 44100 outsound.wav

XlA̋@(b=0.5 XV@800Hz) Ԃ͒Z@2b
 Karplus_drum 88200 10000 0.5 100 44100 outsound.wav

^bNȋ@(b=0.8 XV@100Hz) Ԃ͒@2b
 Karplus_drum 88200 10000 0.8 100 44100 outsound.wav

---------------
4.6.3 ꉹ'ieaou'̍@Formant_Vocoder.c yXg4.7z
st@C쐬@юs
 bcc32 Formant_Vocoder.c wavwrite.obj
 Formant_Vocoder

óFsig.wav
FRpCf0,iɊւđl̖gp̌x邪Aւ̉e͂ȂB
{Ƃ̐̂߁A\[XR[h͕ύXB

ȂAL̕ύX΁Ax͂łȂB
59sځ@ˁ@//  f0 = (F[0][0]+F[0][1])/2.0;@// i̍s폜j
64sځ@  for(/* i=*/ ipos=nrepeat=id=0;; /* i++ */) {  // iɊւ镔폜
70sځ@    nrepeat = fs/(/* f0=*/ (F[0][0]+F[0][1])/2.0 // f0Ɋւ镔폜

CŁ@Formant_Vocoder.v1.c
---------------
4.7@̐̍@(CHANTɂ̐̍)
4.7.6 vOƎۂ̌vZ@chantS.cyXg4.8z
@"                    @FOF֐ @FOF.cyXg4.9z
st@C쐬@юs
 bcc32 -c FOF.c
 bcc32 chantS.c FOF.obj wavwrite.obj
 chantS outfile.wav

FRpCɌxŒlgpƂȂNtaúAŏɒ߂2.4b̃T
v{}4.20̂悤ɃCpXtauÂ炷ƂɐCpX
̐ŐBύX⃂j^[ɗLpȕϐ䂦ݖgpł邪cĂB

x}RpC
 bcc32 -w-8004 chantS.c FOF.obj wavwrite.obj
---------------
4.8 Ō̍
4.8.4 Ō̍@{̃vO PhM_Armk1.c yXg4.10z
@"   ֐F3~3̋tsZo  inv3.c yXg4.11z
@"   ֐Fyid特Fp[^Zo  Timbre_Paraset.c yXg4.12z
yoOz
PhM_Armk1.c 91s
  for (j=0; j<=Nmaterial; j++) {
  for (j=0; j<Nmaterial; j++) {

Nmaterial̒O = 폜
*T[õt@C͖{̌Cς
yyȏCzi{ς)
73s Amp = 0.1;@@RgAEg@// Amp = 0.1;

st@C쐬
 bcc32 -c inv3.c
 bcc32 -c Timbre_Paraset.c
 bcc32 PhM_Armk1.c inv3.obj Timbre_Paraset.obj wavwrite.obj
 
s
 PhM_Armk1 xylo_ 0

́AxylophonẻF(id=0)ŁAo͂Ƃ
xylo_Glass.wav, xylo_Steel.wav, xylo_Wood.wav
3ނ̉t@CB

==========================================================================
5.1@ɂȈՃV[PT@Karplus.seq1.c yXg5.1z
st@C쐬@юs
 bcc32 Karplus.seq1.c wavwrite.obj
 Karplus.seq1

s
  Karplus.seq1 1 10000 80 44100 Melody_I.wav

---------------
5.3 zI[pXtB^HPF,BPF,BEF@filt_LPFapp.c yXg5.2z
5.3.1 [pXtB^݌v֐@lpfdsn֐@yXg5.3z
5.3.2 nCpXtB^݌v֐@hpfdsn֐  yXg5.4z
5.3.3 ohpXtB^݌v֐ bpfdsn֐ yXg5.5z
5.3.4 ohG~l[gtB^݌v֐ befdsn֐ yXg5.6z
st@C쐬@юs
 bcc32 filt_LPFapp.c wavread.obj wavwrite.obj
 filt_LPFapp func# inputfile outputfile

s
LPF fc=3000Hz
 filt_LPFapp 0 Melody_I.wav MelodyILPF3k.wav

---------------
5.4 ^tB^ƃI[pXtB^@filt_catalog1.c 
5.4.1 FIR^tB^(1)@Z̏ꍇ@case 4 Ɗ֐ FIRcomb yXg5.7z
5.4.2 FIR^tB^(2)@Z̏ꍇ@case 5 yXg5.8z
5.4.3 IIR^tB^(3)@Z̏ꍇ@case 6 Ɗ֐ IIRcomb yXg5.9z
5.5 I[pXtB^@I[pXtB^֐@Allpass֐ yXg5.10z
st@C쐬@юs
 bcc32 filt_catalog1.c wavread.obj wavwrite.obj

s@FIR^tB^(1)@Z
 filt_catalog1 4 Melody_I.wav Melody_CombAdd4.wav

---------------
5.6.1  1^bvx@onetap_delayline.c yXg5.11z
st@C쐬@юs
 bcc32 onetap_delayline.c wavread.obj wavwrite.obj

s
 onetap_delayline fot.bak.441.wav fot.bak.441.del1.8.wav

---------------
5.6.2  }`^bvx@Mtap_delayline.c yXg5.12z
st@C쐬@юs
 bcc32 Mtap_delayline.c wavread.obj wavwrite.obj

s
 Mtap_delayline fot.bak.441.wav fot.bak.441.Mtdel1.8.wav

---------------
5.7.4 c̃V~[V@rev_schoroeder1all.c yXg5.13z
@1-159s@CvO@yXg5.13 Pz
@160-208s@֐ IIRcomb_revOnly yXg5.13 2z
@209-249s  ֐ Allpass_rev yXg5.13 3z
  250-297s  ֐ MTdelay0yXg5.13 4z
st@C쐬@юs
 bcc32 rev_schroeder1all.c wavread.obj wavwrite.obj

s
 rev_schroeder1all summer2006_5.wav summer2006_5.rev.wav

VXeȉ̃G[o͂B
 The number of clipped samples: 11
NbsOcNTv11Ƃ̕񍐂łB
ŁA͂6dBႭAēxsƁAx̓G[ȂȂB

rev_schroeder1all summer2006_5.p.wav summer2006_5.p.rev.wav

---------------
5.8 `Av@nonlinamp.c yXg5.14z
st@C쐬@юs
 bcc32 nonlinamp.c wavread.obj wavwrite.obj

*ŕ\x́@Ĺ@RpČxɂĂ̍ŁA
W8004̌xŎRɂB82sځBāA폜ɎcB

yx\ɂst@C쐬z 
 bcc32 -w-8004 nonlinamp.c wavread.obj wavwrite.obj

s
 nonlinamp func# ̓t@C@o̓t@C
s
 nonlinamp 0 Karplus.demo.wav Karplus.demo.nonlin.wav
 magicN? 16


---------------
6.2.3 I[o[bvAh̊b overlapAdd_Basic.c@yXg6.1z
@@@n~O@֐@hamwdw1.c yXg6.2z
ȂI[o[bvAh

st@C쐬@юs
 bcc32 overlapAdd_Basic.c
 Karplus.seq1  -1 10000 80 44100 wave001
 overlapAdd_Basic

2Ԗڂ̃R}hoverlapAdd_Basic wave001Ƃt@C͂Ƃ邽߁A
쐬ĂB̂Ƃ̃R}ĥQԖڂ͕̈lłAwave001
wavt@CłȂArawt@CƂȂ邱ƂɒӁBȂgq͂ȂB
@o͂data1łB
ȂA`̂R͕̓ƂČ̒萔{ɂ͂ȂȂB{f[^͍ŏ
Ul傫߁A`̍ق͌łB

---------------
6.3.2-6.3.3 I[o[bvAhɂח overlapAdd_granular.c yXg6.3z
st@C쐬
 bcc32 -c wavRopen.c
 bcc32 -c wavWopen.c
 bcc32 -c wavWclose.c
 bcc32 overlapAdd_granular.c wavRopen.obj wavWopen.obj wavWclose.obj

s
 ovelapAdd_granular I_fn nwdw nshiftA ratio(real) O_fn
s
 overlapAdd_granular fot.bak.44.wav 1440 360 3.0 outSound1.wav

---------------
6.4 UXyNg̐Mg`ɂg`Lk  OLA_sigEst.c yXg6.4z
st@C쐬@юs
 bcc32 -c d1fft.c
 bcc32 OLA_sigEst.c d1fft.obj wavread.obj wavwrite.obj

s:
 OLA_sigEst ̓t@C@o̓t@C
s:
 OLA_sigEst fot.bak.441.wav fot.bak.441.st2.wav

Q{ɐLłBsɂ͌JԂvẐ߁Abot\ɂ邪A
1-2OォB
{łqׂĂƂAʑ̑I͂Rʂ肠ȂIɂ
e󂯂B{vO͂̎wWȉ̂Ƃu͌̕ʁv
̂́AƌŒ肵ĂB
vO 43-44s
 id_ph = 0;     // ʑ̎wW
                 // 0:͌̕ʂ@1:_@2:[

---------------
6.6.1 tF[Y{R[_@pv.c y{XgȂz
6.6.1  tF[Y{R[_ɂLk@pv_st.cy{XgȂz

tH_@Pv@Ɋ֘AvOSĊi[ĂB
͓tH_́@ReadmePv.txt Q

---------------
6.7 gf@geneMQ.c y{XgȂz
     ֐FgbN񂩂̉@genesinu.cyXg6.5z
@̓tH_GeneMQReadmeMQ.txtQƁB