OSDN Git Service

完成です 嬉しい
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 19 May 2018 10:53:31 +0000 (19:53 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 19 May 2018 10:53:31 +0000 (19:53 +0900)
effect.pas
wav_proj.dpr
wav_proj.dproj

index 4db71e7..1c6796b 100644 (file)
@@ -110,7 +110,7 @@ begin
     offset0 := sp.posOfData;
     offset1 := sp.posOfData;
     rate := 0.66;
-    k:=sp.sizeOfData div sp.channels;
+    k := sp.sizeOfData div sp.channels;
     while offset1 + 2 * pmax < k do
     begin
       ma := 0.0;
@@ -132,7 +132,7 @@ begin
         pMem[offset1 + i + p] := trunc(pCpy[offset0 + p + i] * (p - i) / p +
           pCpy[offset0 + i] * i / p);
       end;
-      q := trunc(rate * p / Abs(1.0 - rate) + 0.5);
+      q := trunc(rate * p / (1.0 - rate) + 0.5);
       for i := p to q - 1 do
       begin
         if offset1 + i + p >= k then
@@ -143,20 +143,20 @@ begin
       inc(offset1, p + q);
     end;
     pitch := 1.5;
-    for i := sp.posOfData to sp.sizeOfData - 1 do
+    for i := sp.posOfData to k - 1 do
     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] := pMem[i] + pCpy[a] * trunc(sinc(pi * (m - a)));
+          pMem[i] := pMem[a] + pCpy[a] * trunc(sinc(pi * (m - a)));
     end;
   except
     result := -1;
   end;
+  Finalize(pCpy);
   Finalize(r);
   s.Free;
-  Finalize(pCpy);
 end;
 
 function sinc(x: Single): Single;
index c710e44..80cb98b 100644 (file)
@@ -32,6 +32,7 @@ begin
       Readln;
       PlaySound(nil, 0, SND_PURGE);
     end;
+    pMem.SaveToFile(ExtractFilePath(ParamStr(1))+'effect.wav');
     pMem.Free;
     Finalize(sp.pWav^);
   except
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)'!=''">