OSDN Git Service

音声ファイルの最後まで残すことができましたが、終盤音が乱れます。
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sun, 20 May 2018 10:07:15 +0000 (19:07 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sun, 20 May 2018 10:07:15 +0000 (19:07 +0900)
effect.pas
wav_proj.dproj
wav_proj.dproj.local

index 00c8cbf..d934c22 100644 (file)
@@ -23,12 +23,12 @@ var
   i, k, a, b, pmin, pmax: integer;
   len, temp_size, offset0, offset1, p, q: integer;
   m, ma, pitch, rate: Single;
-  pMem, pCpy: array of SmallInt;
+  pMem, pCpy, pRes: array of SmallInt;
+  s: TMemoryStream;
   r: array of Single;
 begin
   result := 0;
   try
-    pMem := sp.pWav;
     temp_size := trunc(sp.samplePerSec * sp.bitsPerSample * sp.channels * 0.01);
     pmin := trunc(sp.samplePerSec * sp.bitsPerSample * sp.channels * 0.005);
     pmax := trunc(sp.samplePerSec * sp.bitsPerSample * sp.channels * 0.02);
@@ -38,6 +38,13 @@ begin
     rate := 0.66;
     len := trunc(sp.sizeOfData / (rate * sp.channels));
     SetLength(pCpy, len);
+    SetLength(pRes,len);
+    s:=TMemoryStream.Create;
+    s.Write(sp.pWav^,sp.sizeOfData);
+    s.Position:=0;
+    s.Read(Pointer(pRes)^,s.Size);
+    s.Free;
+    pMem:=sp.pWav;
     k := (sp.sizeOfData - sp.posOfData) div sp.channels;
     for b := 0 to pmax - pmin - 1 do
     begin
@@ -56,9 +63,9 @@ begin
       p := pmin;
       for i := 0 to p do
       begin
-        pCpy[offset1 + i] := pMem[offset0 + i];
-        pCpy[offset1 + i + p] := trunc(pMem[offset0 + p + i] * (p - i) / p +
-          pMem[offset0 + i] * i / p);
+        pCpy[offset1 + i] := pRes[offset0 + i];
+        pCpy[offset1 + i + p] := trunc(pRes[offset0 + p + i] * (p - i) / p +
+          pRes[offset0 + i] * i / p);
       end;
       q := trunc(rate * p / (1.0 - rate) + 0.5);
       for i := p to q - 1 do
@@ -76,14 +83,15 @@ begin
       m := pitch * i;
       q := trunc(m);
       for a := q - j div 2 to q + j div 2 do
-        if (a >= sp.posOfData) and (a < k) then
-          pMem[i] := pCpy[a] + pMem[a] * trunc(sinc(pi * (m - a)))
+        if (a >= sp.posOfData) and (a < len) then
+          pMem[i] := pCpy[a] + pRes[a] * trunc(sinc(pi * (m - a)))
         else
           pMem[i] := 0;
     end;
   except
     result := -1;
   end;
+  Finalize(pRes);
   Finalize(pCpy);
   Finalize(r);
 end;
index 3142374..ba7f3a8 100644 (file)
         <DCC_RemoteDebug>true</DCC_RemoteDebug>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <Debugger_RunParams>toujyo.wav  </Debugger_RunParams>
+        <Debugger_RunParams>temp.wav</Debugger_RunParams>
         <DCC_RemoteDebug>false</DCC_RemoteDebug>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
index 04ed60a..1291feb 100644 (file)
@@ -9,19 +9,19 @@
     <Transaction>2017/10/19 20:48:10.000.837,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:48:11.000.893,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:15.000.988,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2017/10/19 20:49:16.000.218,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:16.000.125,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+    <Transaction>2017/10/19 20:49:16.000.218,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:45.000.913,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:45.000.816,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:50:18.000.999,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:50:19.000.049,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 21:37:00.000.271,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2017/10/19 21:37:00.000.652,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 21:37:00.000.365,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+    <Transaction>2017/10/19 21:37:00.000.652,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/28 22:58:31.000.296,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2017/10/29 14:44:00.000.024,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2017/10/29 16:13:37.000.037,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2017/10/29 16:13:37.000.174,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+    <Transaction>2017/10/29 16:13:37.000.037,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2017/10/29 16:13:37.000.809,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/29 16:55:16.000.109,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2017/10/29 16:55:16.000.343,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:12:24.000.771,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:21:25.000.947,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:21:26.000.254,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
-    <Transaction>2017/11/01 18:23:22.000.344,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:23:22.000.193,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\FormUnit1.pas</Transaction>
+    <Transaction>2017/11/01 18:23:22.000.344,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:23:22.000.440,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
-    <Transaction>2017/11/01 18:33:21.000.133,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:33:21.000.032,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+    <Transaction>2017/11/01 18:33:21.000.133,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:33:39.000.795,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/11/01 19:08:03.000.193,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/11/30 19:11:41.000.772,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/01/01 12:40:34.000.125,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/01/01 12:40:55.000.044,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/05/07 18:00:45.000.726,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2018/05/07 18:01:10.000.795,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2018/05/07 18:01:39.000.274,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav_proj.dproj=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
+    <Transaction>2018/05/07 18:01:10.000.795,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas</Transaction>
+    <Transaction>2018/05/07 18:01:39.000.274,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav_proj.dproj</Transaction>
     <Transaction>2018/05/07 21:20:21.000.796,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
-    <Transaction>2018/05/07 21:20:27.000.646,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWave.pas</Transaction>
+    <Transaction>2018/05/07 21:20:27.000.646,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWave.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
     <Transaction>2018/05/09 21:56:39.000.226,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
-    <Transaction>2018/05/09 21:56:54.000.027,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas</Transaction>
+    <Transaction>2018/05/09 21:56:54.000.027,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
     <Transaction>2018/05/13 12:45:57.000.431,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWav.pas</Transaction>
     <Transaction>2018/05/13 21:58:37.000.377,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
-    <Transaction>2018/05/13 21:58:48.000.578,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\effect.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
+    <Transaction>2018/05/13 21:58:48.000.578,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\effect.pas</Transaction>
     <Transaction>2018/05/13 22:29:03.000.282,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas</Transaction>
     <Transaction>2018/05/13 22:46:16.000.228,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas</Transaction>
     <Transaction>2018/05/14 20:20:05.000.202,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\selectFile.pas</Transaction>