diff -Naur Audio-DSP-0.02/DSP.xs Audio-DSP-0.02b/DSP.xs --- Audio-DSP-0.02/DSP.xs 2000-09-11 05:54:07.000000000 +0200 +++ Audio-DSP-0.02b/DSP.xs 2003-02-04 00:12:52.000000000 +0100 @@ -9,6 +9,7 @@ #include <sys/soundcard.h> #define AUDIO_FILE_BUFFER_SIZE 4096 +#define INTERNAL_BUFFER_SIZE 4096 static int not_here(char *s) @@ -203,7 +204,7 @@ HV* construct = newHV(); HV* thistash = newHV(); - SV* buff = newSViv(4096); /* read/write buffer size */ + SV* buff = newSViv(INTERNAL_BUFFER_SIZE); /* read/write buffer size */ SV* chan = newSViv(1); /* mono(1) or stereo(2) */ SV* data = newSVpv("",0); /* stored audio data */ SV* device = newSVpv("/dev/dsp",8); @@ -251,7 +252,11 @@ if (audio_fd < 0) croak("failed to open %s", audio_file); for (;;) { - status = read(audio_fd, audio_buff, AUDIO_FILE_BUFFER_SIZE); if (status == 0) + /* Mod by Pat Deegan (psychogenic.com) - probably overkill but it's nice to know what's in our + buffer... */ + memset(audio_buff, 0, AUDIO_FILE_BUFFER_SIZE); + status = read(audio_fd, audio_buff, AUDIO_FILE_BUFFER_SIZE); + if (status == 0) break; else sv_catpvn(data, audio_buff, status); @@ -638,6 +643,8 @@ } for (;;) { + /* Mod by Pat Deegan (psychogenic.com) - using memset to clear buffer, overkill... */ + memset(audio_buff, 0, AUDIO_FILE_BUFFER_SIZE); status = read(audio_fd, audio_buff, AUDIO_FILE_BUFFER_SIZE); if (status == 0) break; @@ -698,6 +705,7 @@ int status; char buf[count]; + memset(buf, 0, count); status = read(fd, buf, count); /* record some sound */ if (status != count) { hv_store(caller, "errstr", 6, @@ -730,6 +738,7 @@ int dlength = SvCUR(*hv_fetch(caller, "data", 4, 0)); int fd = SvIV(*hv_fetch(caller, "file_indicator", 14, 0)); int mark = SvIV(*hv_fetch(caller, "mark", 4, 0)); + int remain; int status; char* data; @@ -738,6 +747,13 @@ data = SvPVX(*hv_fetch(caller, "data", 4, 0)); + /* Mod by Pat Deegan (psychogenic.com) - make sure we don't write data that is located past + dlength (as this causes pops and crunchies at the end of play) */ + remain = dlength - mark; + if (count > remain) + count = remain; + /* end of Pat Deegan mods */ + status = write(fd, &data[mark], count); /*** This just causes unnecessary problems... diff -Naur Audio-DSP-0.02/README Audio-DSP-0.02b/README --- Audio-DSP-0.02/README 2000-09-11 03:41:43.000000000 +0200 +++ Audio-DSP-0.02b/README 2003-02-04 00:12:52.000000000 +0100 @@ -1,6 +1,7 @@ Audio::DSP - Perl interface to *NIX digital audio device -Version 0.02 +Version 0.02 B - This version was patched by Pat Deegan for use with the +VOCP IVR system (http://www.vocpsystem.com) Description diff -Naur Audio-DSP-0.02/out.test Audio-DSP-0.02b/out.test --- Audio-DSP-0.02/out.test 1970-01-01 01:00:00.000000000 +0100 +++ Audio-DSP-0.02b/out.test 2003-02-04 00:12:52.000000000 +0100 @@ -0,0 +1 @@ +~~}}~~~~{}~~ ~~~|z|~|{zy|{zz||z}~}|}{|~~~~}|~~~~}~~~~~||~~~~~~~}{z}~}}|}~~}}~~}|~ ~}}~|yxxxwvwwvuuvy }zwwwtqopppmrwy {wxywqorrnkil£~ou ~{yzysooqojihu¦nn }{{{xrppolijfn¬zjq} {||vssqljjjdv£°pmx{{|yuvsqnjigf©¨}ory ~~~}}yxtppnhhhk®¡votz~~~||zwrpokijf{¥¨{stt ~~|yywroljkioªwtsz~{zzvqonjjhmzsqy~~}{y{vqpokigo© {qp||~~~zy{uqqnjkho§~|qp~~}{|{usrojmkn¢~vr{ |{{utsqnmkmxsx }z{xtsspmmjtwu} ~|zwxwuropoq}{{ }zyyyxxvsssqx ~ ~{{}{{{zxxvttv| ~|{zyxxy{~ ~~}|}~}}{}|}|~~~~}~~~~~}}}~}}~~}~~~~~~~~~~~~~~~~}~}~}~~}~~~~~~}~~~~~}}~}~|~~}}}}}~~}}~}}~}}}}}}~|~~}~~|}||}|~|~|~}|{|~}}}~}~}~||~}~}~~~}~~~~~~~~~~~~~~~~~~~~}}}}|||}~ ~}}}}}~~~~~}}}}}}}}}}}}}||||{{{z{|~ }|||||}~~~~~~~~~~}}}}}}}||||{{{zzyyyy|} ~}|{{{|} ~}}}}}}}~~~~}}||{zyyxwwwwx|~ ~~||{zzyy{}~~~~~}|{yyxwwvuvuvwz~zxxxxzzz}}~}~ {zxvvuuvvwwxxyy~yutsvz{ {{z{ ~zxwuuuuvwxyzxxxwy |uqrtx |zy|~~}||{yywwwwwxwxvuvvzzqrtx }|}~~}|}}|{zxwvuuuuuusssv~wnqtz |{{~zz| |zz|~~|yvsqrrsuutttzypnty zx{{uv{zwx}|vqooqtwxvrpow xqko{yvv} zsru~~{z zvtstvwvtqnmns}trsy|y~~zwx} ~~zwuttttsroprw {rux}z |yy{~z||wuuwwwurpnnrwvwz ~~ ~{~ |} |zzyyxvurqqqruxsw{}}||}| ~{zxxxwvtrrrstw{wt{~}|}~{| {yz{{zwtrrtuuttv~yqx~z{{}yz }|}}}|ywuvvvuttssvv}xu| {{ }|}zz~ ~|{{{{{ywuttuuuutuyvw|y|| {xy} |z}||{{|{yywvutssstv|zxx~}~}~ zx|}||~}}}|{ywwwwvtssvz}{x}} ~ }|} ~ ~}}}||{{zzyyxwwvz|~~~ ~~~~ ~~||}}}|{zzyyxwz{{~~~~~~}~}||||~~~~~~~~~~}}}}}}|||}~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}||||~~~~~~~~~~~~~~~~~~~~}}}}}}|||~~~~~~~~}~~~ ~~ }~~~}~}~}}|~{|{{}|}}~~~}~|}{~|||{}|~}~~~}}}}~~}}}~}~~~~}}~~~~}}~ ~~}~~~{{|{{y{~ ~~~~}}~~~~~}|{|{{||}|zyxwxwx}|{z~~ ~~~~~~}}||}}~}||z{{z{zyyxy ~}{x{|~ ~}~ }~~}~~}~}||||}||{zz{yzzyy{}{{y|~ ~~}}~~~}}}}}}}}}}||{{{zz} ~}|{|}~ ~~~~~~~~~~~~~~~}}}|||{{{{{|~ ~}|||}~~~~~~~~~~~~~}}}}}|||{{{|}~ }||||}~~~~~~~~~~~~}~}}||{{z{|} ~||||}}~~~~~~~~~~~~}}||{{{z{}~ ~}||}}~~~~~~~}}}}|||{{{{{|~ ~~~~}~~~}}~~}|{{{{{zyxxxyy~~~{z{{| }|{z|{zzyxyxvwutuv~ zz{yxwx} ~}|{yxxxwvvvwvuvwyy {zyyz|z} ~|{zxxvuuuustuuvwz|z}{wy{z|}~ }|{{xwwvtuustvvw} zx{zwz|{| ~~~|||zyyxwvvutuwux{} ||}xx{zy|~} ~}~~||}{z{zyyxvxvtxxx|~}z{{yz}|| ~}~}{||zz{{yzywxyvwyv|y |{~{z}}{~ }|}}{|}{z|zyyyxxxyx}{ }~{|~|| ~~}}}||}{{|{{zzzxy{yx}z }|}}} ~~}~~}~~||}|{|{zz{yy{z|~| ~~~~~ ~~~}}~}}~~~}~~|~~|}~{|||}{}~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|}~~~~~~~~~~~~~|}}|||{{{zz{zz{ ~}}}}~}~~}||{{zzzzyzyxxyywz|} ~~}|}~~ ~}}}||{{{{{{zzyyzxx{z} ~}}~~ ~~~}|||||||||{zzzzyz{z} ~~~~~~~}~}|}}||~}{~}z}}{|{z{{z~~ }~} ~~~}}}}}}|~~|~{|~z||z{|z{}| ~~}~ ~~}~}}}}}}}~~~~~~|}~{{}zz|zz}|} ~~~ ~~~}}~}}~~~~~~~}{}~{}{}}|}{}~~ ~~~~~}~~~~~}|}}|~}}~}~|}~| ~~}}}}|~}}~{z|| ~ ~~~~~}~~~~~~}}|{z|} ~~~}~~}}~}~~~}}~}}}|~|~}zzzyyz~|~}~~}~~~}~}||}}~~~~}||{||}}~}}}{{zzz{ }}~~~~~~}}~}}~~~}}||||}}}}||||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}~}}}}}}}}}~~~}}}}||||||||||||}~~~~~~~~~~}}}}|||||||{{|||~~~~~}|||{{{{{{{{{{|~~ ~~~}|||~~~ ~}}}}{xwwxyxwvw{|wtvy|y~ }~ }~}{vwyuw{uswx{zmo{wy} }}}{{wuxyvwyrr{zolz{wwy |}} } ~{xxxwvtvzsowxopx{£zqv x~~ }|{wtvzxwwqpssmjwxsu|~|~~ } |}~yuvuvywutnormht¡wnp x{ ~|{yuuvxxsuvuqkjorx§|vkw{v~~ ~ {wwvuwwvwrptmgqpo¨zjs}x| ~~ |{xuvuvwvwurqqmlok§ ml w}~~~ ~zzyxwwyzxxtttolsufrwk} {z~~ }|{z|{z}{wyyutxwqptpt ~w~~ ~}}|}~}{yy{{zyyyz{yvsqqw}~~ ~}|}~}~~}}~~}~~~~}}~~}}~~~|}~~~~~ ~~~~}}~}{~~}||~}|{|{zzzzzz{zz{{{z{{{zzzzzzzz{z{|z{|{|||}}|{}~}~~ ~~~~~~~}|||{{zzzyxxwvwuvwuvwuvvuuvtvutuvuvvuuvttusttsssssttvxxz} |wrpmjheb``acfhkmnnlheccedbabbdgjnqtvz ~~}||{|~}~~}~~~~~}~~}~~}~~}~}||}|{{zy|}|~~~}~}{|||||{}}}}~~~~~~~~~}~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~}~~~}~~~~~~}~}~~~}~}~~~~~}|~~~}}~~~}}~~~}~~~~}||}}}~|~|}~}~|} |~y{~}}~{}~}}|~}}|~~~~~~~~~~}~}~~~~~~~}~~}}~}}}~~ ~}|zwxwutuutwxv| ts}yqy}z|wy}~{{xuxttyusxyr{sy~wzx| z}v {xz}wsy|vuxxxuqrsqnlx}twu ||~zwwwuuuuvxwwzyx{{xx|xv ~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~ ~~~|||{{zzyyyyxxx{{{ z}}}}~~ ||}}~~ }|{zyxxvuuuutv}wyyz{zz ~{{{{|}} }} }|{zzyyyyyxxxw~{|{{||y| }}~~||~~~}|}}|}||||{{{z|}}~~~~}~~~}~}~}~~}~}~~~}~~}}~~~~~~~~~~||~{||}}~~ }}~~~}~~}zz~z} ~~|~~~~~yz~}~|}~{~~ }}~~}~~~~ z|~~~{ ~~~~|{|~~}|z ~}~~~~~}~~}xz }||~|}|} ~}~|{z{yy ~|}||~~|~~}||}~~~~}zxww{|{}|||{{ }{|}~ ~||~~~~}|{wuuvxy|{{{z|zy|~~~|{}~|{{yutttu~vvzyxy{} zwy}~}~zz|}{xwvtqsvv} vqvyxxy~ }vv{~~{yyzxtqstrprv tntzyww| }ut{ }yxyyvrqrsqpsvrlv|yts{~vw }zzyxvsqppqpppu~ln|~unq} vx {}~{zvwyxsonnppoq lkylkxzw~z~ yxzyvqnmnoosnoyij|y{z|}xx{ysooopmqswyjl| |~|}~{z|{wsrrrpnuyxqv||~|~~|z{{yvtstrolw|yyqp}uv ~{}{xy||xuuwvsqox}|ztrvv }{~zxz}{wvwywurqx~~wv~vw }}}yz||zyyzxwxwts| }~~y~{w| ~~~zz~}zy~yy|{ywy ~|~z|~|~|~~{~}{|~z|}~}}~~~~~~~}~ |~~~~}~~~|~~~~|}~|~|}~~~}}{~~z| }~z~| ~~|}~~}~~~}|~}~~~|~~}|}}}}{~|~}}}~~ }|~y~x}w||u|z}~ } ~}}~{|~~~} ~}~~{z{zxyxuyxv{{z{}|y~{||}}|}~~~ }}}{{}}{z{||xwxxxv| }z~}{~~} ~~~~~}~~}}|||zxyxxx}{|~}~~~|} }~~~~~~~}||}|{xvyzy~}~}~~~}~ ~~}~~~}}~}||||{{wx{x|~|~~~~ ~~}~~~}|}~}}}|||zzzz ~}~~}}}}||||||~~~~~~~~}}}|||||~~~~}}}||}|~~~~~}}}}}~~~~~ }}~}|~~~}~~~~}{}~}~}|z{{}yx{|||~|z}}~{| ~~~~~~~~~}}}||{z|}{yxxxvvxxy~ ~}{zyxwuutqoopoyxpvz| }|~~~|wuvtokikmn ¤©~{gky{xxyz ~zyuroolgkty¥ zijuxyy~v|yssusmjmsyz~¡zrorv}}v{~}| zvuxwsolotz{x ~}vrsv}~vy~~{zyxxwvpmsxywx~|wssy|x{ |||zyxurqrtux|}vsvz}z{} ~}}|zyxxvsqrsuz~wrtw~||{~~~~{z||wstsqnos ~ppw{}~|} ~}~}|zyyvurppnn~ wqx|}~}~}|zxwwvspools{ry|~} ~~}||{yyxwwwvstusu~ ~~~~}}}|{|||~~|{zzyy{}~}~~}~}~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~}~}~}~~~}~~~~~}}~~~~~~~~~~~ } | ~~~~}~|}~ } }~}~~~~}~}}~}~~~}~}~~}{~|~|}}~~|~|}~~|}~~y~{{ ~ { ~~}z~z}y|}{{~~~z{{zz{~yx{yv{~}~{}y}}x~ ~| ~}{wxxtxustqtsnqvpoupqrmotrmrqmnomptlpvoovus{yx~~z }{zxwvtsutruusutsuutw{x{ ~}|||zy|wuwurqqmllkimrrwy yvyuoonjiiidp svz}ymuyrqsx|}| {tuwkhqlfmpr~£ wv{vz {tuohjmhhqv ~vtyvuw~ytsngjjenqt |tsvttw}}vuqikifkopvtwtrtz}{yuoiihdiio{~tswsprxy}|xspkhehjft~w twxtpuyx~}{tpnjhjjgv~vvyzuswz{zxsmnnklo~~{x|zwvy|~|vooplimpx} wvwutux} }yuommmijorx~ususrsx|~zvrpnkmmlnsv~}{tstttwzz~}xttqonqpnruw~~}|vvvtuxzz|}|yvwrqppropruy~}{wvvuvxyz}|{zxwusrsttrsvx}}zxxvvxzzz~}||zyyxvvututtvw}}{{xwxz{{}~ ~~}}|{z{zxwvvvuttvz~ }||ywxyyzz|}~~}}}|||zyxxwutstuw|}} }||yxyyz{|} ~}}|{zywuwxx~ ||{||} }|{zyxwvvxw}~ ~}}zzzyz{}}~ }|{zyxxwwwwyx{ }}|{|{{|~ ~~ ~}|zzzyyyyyyyzz| ~}}|}|{|~~~~~~~ }||{z{zzz{zz{{{{} ~}~}}}~~~~}}||{{{{{||||||||{ ~~~~~~}||||}}}}}}}|}}|} ~~~~~~}}}}}~~}~~~~~~~~~~~ {~~~~~}~~~~~~~~~}~}~~}~}}|||z{} ~}}}}}}|}|||{{{zzy}~~~~}}~}~}~~~~~~~~~}~~}}~}~~~~}~~}~~ ~~~~~~~~}~~~~~~~~|zzzxwxwxwvuvtrrrrqopsrqsuvvwwxxvuvvuttwxxyyyzxvwwwwuvxwvvvwwuuvvvuuuvvuuwwwwvuu} ~}|«}~ ~}{ywuutsqqppujp¢~wh|zo}|x{zw| ~~~~||{wttttrpqqqoqth¤nnvt~{x}|yy}~~ ~~}yvwwwvrsusqquqpzm||xy ~{y{y|} ~~~|xwxxvssttqprtpxwq~{wz {{zyz~ {xyzyuttvtrrtvux }u}}xz~~~{z ~{yz{xvuvvtrsvus|z|y} ||} ~~~~}}}}||z{{{zyzzzy|~~~~}}}||||{{zzzz|} ~~~~~~~}}}}}||||{{{| ~~~~~~~~~}}}}}||||||||~~~}}}}~}|}}}|||}~}~~~~~~~}}}}|}}|~~~~~~~~~~~}}}}}}}}~~~~~~~~~}}}}}}}}|~~~~~~~~}~~}}}}}}}}~~~~~~}~}}}}}}}}}|}|}~~~~~~~~~~~}}|||||{{|||~~~~~~~}~~}}}}|||||{{}|z~ }~~~}}}}||}|{{|{{}{z} ~}~ ~~}}}}|{}}z{}zz|}~~~}~~~}|}}||}|{||z|{{~}~}~|~~~ ~}~}|}}{|}|{|}{z{{zx~z ~~|{{~~~ ~}~}||||{||}||~|{{{zwzy{}zz~}~}~}}~~ ~|~~||}}|}}|}}}}{z|{xx}}~x{|{~~~}}}|~~ ~|}~}}~}~~|}}}}}|y{{xww~ z}zz|~}~~|| }~~~}~~~~~}}~}}}}||}{yzx} |||}~~~~~~}}}}}}}}~ ~}{{|{zzx|~zz{{yxwwyzyxxyzzzz{|{zz{||||}~~ ~~~~}~~~~~~}~}|~}{~z{z}}{x| ~}{{~}~z }~~~{|{~ } |~~{}~~}|~}|~||||}y~}{||z~yy}|}yz~zx|~{~ ~~~~|}xxzt|~y~~wxyqw~{}~ |z|zwz|ywxwtuvttwrqsv |{yz ~ ~}yyzvrturqpxxottrw¥z~yyow{ }vz~x }{~}ustsplptpmu|qu¥v£w~yxukw } ypv}yv|}}xqpuqjnspoqw{w}w|rtot ~xrtxwu~ }~ }zytrronooqqnyt{v|qupt|zuvxvt~ ~ ~}}wsusoopponu~u£¢|ruqq{y zxxurz } ~yxwtrrporqow|v|£|svrv|zx}xtv|{z ~{ywusqpqqqpu|v¡£}xvtuyyu {wwzzw} |{ywurssrqrsyysu¤| vwxxxux {{{yvz ~}|zwvvssurruuxt}{¢z~t~|wvu~~{yy{|{~ ~}}zwxwusvustv{r}}}y{xwx}||{{{z{~ }||yxxwxvtwvtxysx}{}|yy{||z~|z|~}}~}||zyzyxxxywuzxsvz |z||{{{~ |}}||} ~~}|||zzzyyzyxxyvv{}{~z{|~} ~|}~~}~ ~}|||z{|zz{{yyzw x~}|z|}}}} }~~}~~ ~~~}|}|}{|~|z}{zw}v|z|{{|~~}| ~~}~~~~~~~~~|{|u~ t}zz}{~}||~~ ~~~~~|||zxv|~}~~}}~~~~~~~~}~}{{z~y ~ ~~}~~~~~~~}}}|{{}{}~ ~~~~~~~~~~}}~}|}~}~~~~~~}}~~~~~~|~}~}~}| ~~~}} |~~~|}~}}|}}~|| ~~{y|z|xz}{}xy}{|}{z~| |~{}{ ~~| }~|}}|}~} {~}}{~{~~|~{|~||}}~~~~~~~}}{~}}~~~~~}~~~~~~}| }~}}~~~~~~~}~}~~~~|{|~~|}~~~~~~~~~}}}|}||||{|||{{{{||{{} }}{yzzyxxwyyxxyyywvtz~~}{yy|~|ywvtsqppqrtvvu}zurvy{| }{xwvvvutttuvwwxwv{ ~}|~~}||{zzzzyyyyyy} ~}~}}~~~~~~}|||{{{{zzzzyzz| ~~~}~~~~~}}}}|||{{||{{{{{~ ~~~~~~~~~~~~~}|}}}}}}}||||}~~~~~~~~~~}~~}~~~~~ ~~~|}}|~~~}}|||{}}~}}~}}|}|}{zzz{yz{}~|}~~ ~~~~~|}}}}}}}~}}~~~}}}~~~~~~~~~~~~~~~}}}~}}~}}~}~~ ~~~}~~~}}|}}|||||| }~|{{z{{{zzzzzz ~|zywvvutsuv{ ~{}~}~ |yuqqrnkoqv |~|xy~ yutsolnnt}x~|z|{y|~}|xusqnyys} |~}~}~xwwsqpz{s|~}~}yxytqqy{q| ~}|{yyvsrw}sx | ~||~yvytqs|wsz }~|}|vxxrq{zo|y| ~}||{xxwsu~ru{w } ~{~zxywr{zq}v}~ ~||{xxxu{yt~~w| ~ }}y}{ww|zt}~x}~~ ||}{xy}yw}x| ~|||y|}x|z}~~~{}}z|}|}~~~~}|}{|~~~~~}~}||~}~}~}~}~~~~~~~~~}~~~~}~~~~~~~~~~~}}||~}|}~~~}}}~|}}}~ ~~~}~ ~}}~}|}}{yz|{|~ ||}}}|~ }}}||{yyyyxw} |{|{z{|}~ }|{{zzyxyxxyzy| {~|yy}}|~ ~~ ~}||{{{{{{{{{||z|~yvw{ |}}|}} }~| ~}}~~}|}~}{{{{zyxyxwwv }~~}~~ ~ ~~~~~~}}||z{}zy{zz{}{xy} ~~}~}}|}~}}}}~~}}}{~}|~~{{~ ~~~}~~|}~~~}~~}~~~}~~}~z~~~}~ }~|~~y~{~~}~}~|~{|}}|~~}~~~}~~}~~~}}~~~}~|~}}~~|~}}~~}~~~}~~~~~}~~~~~~~~~~~~~~~~~~~~~~~}}|||{{yxxwx }z|}~~~~~~}}}}}}|}|{zyxxv~ {}zz~~~}}}~~ ~~~~}}|}}}||{{zzxx{}||~~~~~~~}}}}}}}}|{{yz~}}}}~~~~~~~~~~~}||{z}~ ~~~}~~~~~~~~~~}}|{z{|} ~}}}}~~~~~~~~~~~~~~~~~~}}}|{zy{|~ ~}||||}~~~}}~~~~~}}}|||||{zyww|~ ~||zz{} }|||{}~~}|}}~ ~}}~~}|{{{{{{{zywwvy~xz|y|{{zz|{|}~|{}}|~ ~}|}~~}|zzzy{|{|{xxvtsz}zx{|tz ~x|zy{z~~}{{|{| }}}||~ ~ |{{}}{zyyxvtnu|zyyn~{zvq{ ~|xuz }zw{ ~ }}~~~{yyzzywuvsu|xpuxxprz}~uv~ }{{~~|~ }~ xz~{w{|xwttzypyro}|}us}}}~}|{z} {{}}}~z{|}}{y{{wvxzxx tv ~~~{{~~ ~~~||}}||}|{{}{yz|xsz z}| ~ }~|~}~~~}|~}y{~zx~~~~~~}~~~~~~}~}z~~~|~}~|}~~~{y~{z{ }z|~y|z ~||~||y~~|{y{~}yx|w {|~|x}y~~}|||~x ~{x~y~{~{z{|~zz y~~ y|{z~|x z{zwy {~|~~}}~} z~|y|y}z||~| |{|y|z~~}{ ~~}~ }z}||z~}}{ {} w ~w } y ww|z|z y}}z~ wv~ww y} ~zv~xv vz}v~x}}~|||}{{{x{}{~}}}}{}|~~~~|~~}|~}}~~}}}~~~~~~~}~~}~~~~}}~~~~}~~~~~~~~}~}||}|z{{z{{zzz} }~ ~~}||{zyyxxwx{{{|~|}~~~~~ ~~}|{{{zzzxyyz{{ ~~~}}}~}|||{{{zzzyy{{~ ~~~~~~~~~}}}|||{{||~ ~~~~}}}}}||||||}~~~~}}}}}|||||}|~~~~~~~~~~~}}}}}}||||}}~~~~}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}~~~~~~~~~~~~~~~~~~~~~{yzzz|~~~~}}{zywuuvv{ |{zxx{z~ |||z{} ~~~~~{{zz||||{{zz{zzzww|xvx}zx~}{~ |{zz{|}||zyyxxxxyzyysv{} |x{ ~|~~}~{zzz}}|}|yxywwx{zyur{~| ~zy~ {}}~~ |}~|~|z||{~~{yxxxwyzuzs{zz|}|~~{ ~{~~~}~||{{{}~|zwz|ww|yu z{zt~z{| |} ~|~}|yy}}|~~{{xwxxzvssp~ |y|}||~~{{~ ||~}{y{z{~}|{{|{xwz{vw ~uy}||{|~~~}~ ~}}}~}|{zz|zz||||z{|xyw||yz}}~ }~~~~~~}||}|z{||}|z|}{z{|}~~}}~~~~~~~~~}~~|{|}}}}{{||{{|}||~~~~~~ }~~~~}~~}~~~~~~~~~}}~~~~|{|}~}{||}}}~~~{yyxy} ~~~}|{|||{{zxxxyxwwwvvst|x|}} ~}||{zyyyxvuutssvpq}rs{ }|} ~}{{zxwwvuvusutt~vw{| ~}{zzzxvxyvutvurxz|| ~}{{{{yyzyxxyxwvs|{~ ~}}}}|||||zz|{{zxxzyvvz~ ~~~~}~~~}}~}}~~~~~~}~~}~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~}}}||{{{zyyxwwwwqy~zzwz|~z~ ~~|~ ~}|}}|||{|zyz}z| ~}}}}|{{{zyy|z} |~}~~~~~~}}}}|||{{{zz{{z~ ~~}~~~~~~~}}}}}}||}}|} ~~~~~~}}}}}|||||||~~~~~~~~~~~}}}}}}}}}}}}}}~~~~~~~~~~}}}}}}}}}}~~~~~~~~~~~~~~}}}~~~~~~~~~~~~~~~~~~~~~}}}~~~~~~}}~~~}}~}|{|zx }|{~}~~}~~}~}|~~}}~~{{|zw }~|||} }}~~~}}~~~}}}~~}}}}}}}|{zyy ~~~~~ ~~~}|||{{zywutssrqsssuvwwxwxxxzz{}}~ ~~}~~~~} ~}}~~~~ ~~}{~}|~}~~|{}{{~}|{ ~~~~{|| ||{y}~|{|}}}~~||~}~~}~|{~~~{}}}|} ~~~| ~~|~ }}|{{~~||~~}~|~}z{zy}}~~~}~ ~~~||||{}~|{zyy||y{{yxuor~}{~ ~ } }|{z{{zyz{yxxvwwutthn©tztu w{ }y |||y{||{vuvxxvtsprymr£ªpvsxwz~x {z|~ }~zy|~{vuvxvrpqttrmª§wn}qwv{{w ~wx~z{}}|x{~yuuwwsprtuso{¢¨|oy uu~zyv{yu~ |z| }|}xy|}{wuvvusqrsroªxptw} |||w|yv ~zx} ~|~zz|}|zwvwurssutrs£yqywz{~zy} }xz z{|}zxz~|vsuvvtsttvu }s}}zx}| {z|{~ }{ }zy{}~zuuvwyvtsqwzw}|y| ~{}~} ~~ |{|}}{yxwxxwvtswyx~}y } }|~ ~|{||{zyxxxxwvuvx{|~{{ ~{| }} }{{|}|zyyyyyxuvwz ~}~~|| ~ }{{~|~ }}~}{z{{|{ywwxyxwwy|{~{}}|{{~ ~}}}}}}|{zzz{{yyxwxy} }~~}~ ~|{}~}}||||{{{zzzzzyxxz|}}~~~~~~ ~}}}}}}||{zzzz{{yxxz}}|~~~ ~}||}}}|{zzz{{zzzz|~~~~~}}}|||{{zzzzzzzz{} ~~~}}}||{{{{{{zzz{|}~~~~~}}}}}||||{||}~~~~~~~}}}}}|||{{||~~~~~~~~~}}}}|||||}}~~~~~~~~~}}}}||}}}~~~~~~}}~}}~~~~~~~~~~~~~~~}~~~~~~~~~~~~ ~}|{{zxw}{y{~}}~~}}}}}~~~}|{{{{{zzzzyyyxyyxwvuvwt}z~}{}}z|~~~~}}|zz}~~~~~||{{}~}~~~~~|{{v}}x}~ ~~ ~y{~~}{}~~~}{{||}}|zyyts{sx}}} }}~ }} } ~~~}}{wxzw|}}~~} |~~~} ~~~~~}|{xx|y{}|} }}}~~~~~}~~~~~}}}{y{{z}||~~~~}~~~~~~~~~}|||{{}{~}}~~~~~~~~~~~~|||}~~~~~~~~~~~}}}{}~~~~ }~~~~|}~|}~~~}~~~~~~~~}}}~{~~~~~~~~~}}}~~ \ No newline at end of file diff -Naur Audio-DSP-0.02/test.pl Audio-DSP-0.02b/test.pl --- Audio-DSP-0.02/test.pl 2000-09-10 10:16:13.000000000 +0200 +++ Audio-DSP-0.02b/test.pl 2003-02-04 00:12:52.000000000 +0100 @@ -13,6 +13,7 @@ #### construct, initialize #### print "Initializing audio device... "; my ($buf, $chan, $fmt, $rate) = (4096, 1, 8, 8192); +#my ($buf, $chan, $fmt, $rate) = (4096, 1, 8, 8192); my $dsp = new Audio::DSP(buffer => $buf, channels => $chan, format => $fmt, @@ -20,8 +21,10 @@ my $seconds = 2; my $length = ($chan * $fmt * $rate * $seconds) / 8; +my $tryrate = 8000; +$dsp->open(); -$dsp->init() || die "not ok 2 (" . $dsp->errstr . ")\n"; +# $dsp->init() || die "not ok 2 (" . $dsp->errstr . ")\n"; print "ok 2\n"; #### read 2 seconds #### @@ -29,8 +32,8 @@ for (my $i = 0; $i < $length; $i += $buf) { $dsp->read() || die "not okay 3 (" . $dsp->errstr . ")\n"; } -if ($dsp->datalen != 16384) { - print "not ok 3 (" . $dsp->datalen . " bytes recorded\; should've been 16384\n"; +if ($dsp->datalen != $length) { + print "not ok 3 (" . $dsp->datalen . " bytes recorded\; should've been $length\n"; } else { print "ok 3\n"; } @@ -38,10 +41,14 @@ #### load/play test file #### print "Loading and playing test file... "; $dsp->clear; -$dsp->audiofile('kazan.raw') || die "not okay 4 (" . $dsp->errstr . ")\n"; -for (;;) { - $dsp->write || last; +$dsp->audiofile('out.test') || die "not okay 4 (" . $dsp->errstr . ")\n"; +while ($dsp->write) +{ +; } +#for (;;) { +# $dsp->write || last; +#} print "ok 4\n"; #### close ####