OSDN Git Service

リング変調
authoryamat0jp <yamat0jp@yahoo.co.jp>
Thu, 17 May 2018 13:06:01 +0000 (22:06 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Thu, 17 May 2018 13:06:01 +0000 (22:06 +0900)
中途半端に実装

effect.pas
wav_proj.dpr
wav_proj.identcache

index 14b6b32..b44b6e2 100644 (file)
@@ -38,8 +38,8 @@ begin
       inc(R, DuetR);
       L := max(-128, min(127, L));
       R := max(-128, min(127, R));
-      pMem[i + 0] := L+128;
-      pMem[i + 1] := R+128;
+      pMem[i + 0] := L + 128;
+      pMem[i + 1] := R + 128;
       inc(i, 2);
     end;
   except
@@ -48,12 +48,14 @@ begin
 end;
 
 function effect16BitWav(const sp: SpParam): integer;
+const
+  depth = 1.0;
+  rate = 150.0;
 var
-  i, delayStart: integer;
-  k: Single;
+  i: integer;
+  k, m: Single;
   pMem, pCpy: array of SmallInt;
   s: TMemoryStream;
-  L, R, DuetL, DuetR: integer;
 begin
   result := 0;
   s := TMemoryStream.Create;
@@ -63,21 +65,13 @@ begin
     s.Position := 0;
     s.Read(Pointer(pCpy)^, sp.sizeOfData);
     pMem := sp.pWav;
-    delayStart := sp.posOfData + sp.samplePerSec * sp.cyclicSec;
-    i := delayStart + sp.posOfData;
+    i := sp.posOfData;
     k := 8 * sp.sizeOfData / sp.bitsPerSample;
     while i < k do
     begin
-      L := pMem[i + 0];
-      R := pMem[i + 1];
-      DuetL := pCpy[i + 0 - delayStart];
-      DuetR := pCpy[i + 1 - delayStart];
-      inc(L, DuetL);
-      inc(R, DuetR);
-      L := max(-32768, min(32767, L));
-      R := max(-32768, min(32767, R));
-      pMem[i + 0] := L;
-      pMem[i + 1] := R;
+      m := sin(depth * rate * pi * i / sp.samplePerSec);
+      pMem[i + 0] := trunc(m * pMem[i + 0]);
+      pMem[i + 1] := trunc(m * pMem[i + 1]);
       inc(i, 2);
     end;
   except
index 1d8052d..a59ce19 100644 (file)
@@ -22,8 +22,6 @@ var
   i: integer;
 begin
   sp.pWav:=pMem.Memory;
-  Writeln('\82Q\8fd\8f¥\82Ì\8e\9e\8aÔ\8d·');
-  Readln(i);
   sp.cyclicSec:=i;
   result:=0;
 end;
index 4d0a59c..4993585 100644 (file)
Binary files a/wav_proj.identcache and b/wav_proj.identcache differ