it passes the definitely written analysis.
[IRC.git] / Robust / src / Tests / ssJava / mp3decoder / SynthesisFilter.java
index de26687e03b03b7f31de5afa38c1d8a4cda44104..4774619403d0c6cbbd79757ce0398e327f52a7f3 100644 (file)
  * from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. Frequencies above 4 kHz\r
  * are removed by ignoring higher subbands.\r
  */\r
-@LATTICE("OUT<V1,V1<V,V<NEWV,NEWV<SAMPLE,SAMPLE<EQ,EQ<IDX,NEWV*,IDX*")\r
+@LATTICE("OUT<V2,V2<V1,V1<V,V<NEWV,NEWV<SAMPLE,SAMPLE<EQ,EQ<IDX,V*,NEWV*,IDX*")\r
 @METHODDEFAULT("OUT<THIS,THIS<C,C<IN,C*,THISLOC=THIS,GLOBALLOC=THIS")\r
 final class SynthesisFilter {\r
 \r
   @LOC("IDX")\r
   public int vidx;\r
+  @LOC("V1")\r
+  public float[] v1;\r
+  @LOC("V1")\r
+  public float[] v2;\r
+\r
   @LOC("V")\r
-  private float[] v1;\r
+  public float[] prev1;\r
   @LOC("V")\r
-  private float[] v2;\r
+  public float[] prev2;\r
+\r
   // private float[] actual_v; // v1 or v2\r
   @LOC("IDX")\r
   public int actual_write_pos; // 0-15\r
@@ -81,6 +87,8 @@ final class SynthesisFilter {
 \r
     v1 = new float[512];\r
     v2 = new float[512];\r
+    prev1 = new float[512];\r
+    prev2 = new float[512];\r
     samples = new float[32];\r
     channel = channelnumber;\r
     scalefactor = factor;\r
@@ -485,6 +493,86 @@ final class SynthesisFilter {
     v1[464 + pos] = new_v18;\r
     v1[480 + pos] = new_v17;\r
     v1[496 + pos] = new_v16;\r
+\r
+    /*\r
+     * setup PREV\r
+     */\r
+\r
+    prev2[0 + pos] = new_v0;\r
+    prev2[16 + pos] = new_v1;\r
+    prev2[32 + pos] = new_v2;\r
+    prev2[48 + pos] = new_v3;\r
+    prev2[64 + pos] = new_v4;\r
+    prev2[80 + pos] = new_v5;\r
+    prev2[96 + pos] = new_v6;\r
+    prev2[112 + pos] = new_v7;\r
+    prev2[128 + pos] = new_v8;\r
+    prev2[144 + pos] = new_v9;\r
+    prev2[160 + pos] = new_v10;\r
+    prev2[176 + pos] = new_v11;\r
+    prev2[192 + pos] = new_v12;\r
+    prev2[208 + pos] = new_v13;\r
+    prev2[224 + pos] = new_v14;\r
+    prev2[240 + pos] = new_v15;\r
+\r
+    // V[16] is always 0.0:\r
+    prev2[256 + pos] = 0.0f;\r
+\r
+    // insert V[17-31] (== -new_v[15-1]) into actual v:\r
+    prev2[272 + pos] = -new_v15;\r
+    prev2[288 + pos] = -new_v14;\r
+    prev2[304 + pos] = -new_v13;\r
+    prev2[320 + pos] = -new_v12;\r
+    prev2[336 + pos] = -new_v11;\r
+    prev2[352 + pos] = -new_v10;\r
+    prev2[368 + pos] = -new_v9;\r
+    prev2[384 + pos] = -new_v8;\r
+    prev2[400 + pos] = -new_v7;\r
+    prev2[416 + pos] = -new_v6;\r
+    prev2[432 + pos] = -new_v5;\r
+    prev2[448 + pos] = -new_v4;\r
+    prev2[464 + pos] = -new_v3;\r
+    prev2[480 + pos] = -new_v2;\r
+    prev2[496 + pos] = -new_v1;\r
+\r
+    // insert V[32] (== -new_v[0]) into other v:\r
+    // dest = (actual_v == v1) ? v2 : v1;\r
+\r
+    prev1[0 + pos] = -new_v0;\r
+    // insert V[33-48] (== new_v[16-31]) into other v:\r
+    prev1[16 + pos] = new_v16;\r
+    prev1[32 + pos] = new_v17;\r
+    prev1[48 + pos] = new_v18;\r
+    prev1[64 + pos] = new_v19;\r
+    prev1[80 + pos] = new_v20;\r
+    prev1[96 + pos] = new_v21;\r
+    prev1[112 + pos] = new_v22;\r
+    prev1[128 + pos] = new_v23;\r
+    prev1[144 + pos] = new_v24;\r
+    prev1[160 + pos] = new_v25;\r
+    prev1[176 + pos] = new_v26;\r
+    prev1[192 + pos] = new_v27;\r
+    prev1[208 + pos] = new_v28;\r
+    prev1[224 + pos] = new_v29;\r
+    prev1[240 + pos] = new_v30;\r
+    prev1[256 + pos] = new_v31;\r
+\r
+    // insert V[49-63] (== new_v[30-16]) into other v:\r
+    prev1[272 + pos] = new_v30;\r
+    prev1[288 + pos] = new_v29;\r
+    prev1[304 + pos] = new_v28;\r
+    prev1[320 + pos] = new_v27;\r
+    prev1[336 + pos] = new_v26;\r
+    prev1[352 + pos] = new_v25;\r
+    prev1[368 + pos] = new_v24;\r
+    prev1[384 + pos] = new_v23;\r
+    prev1[400 + pos] = new_v22;\r
+    prev1[416 + pos] = new_v21;\r
+    prev1[432 + pos] = new_v20;\r
+    prev1[448 + pos] = new_v19;\r
+    prev1[464 + pos] = new_v18;\r
+    prev1[480 + pos] = new_v17;\r
+    prev1[496 + pos] = new_v16;\r
   }\r
 \r
   private void compute_new_v1_v2() {\r
@@ -841,6 +929,86 @@ final class SynthesisFilter {
     v2[464 + pos] = new_v18;\r
     v2[480 + pos] = new_v17;\r
     v2[496 + pos] = new_v16;\r
+\r
+    /*\r
+     * setup PREV\r
+     */\r
+\r
+    prev1[0 + pos] = new_v0;\r
+    prev1[16 + pos] = new_v1;\r
+    prev1[32 + pos] = new_v2;\r
+    prev1[48 + pos] = new_v3;\r
+    prev1[64 + pos] = new_v4;\r
+    prev1[80 + pos] = new_v5;\r
+    prev1[96 + pos] = new_v6;\r
+    prev1[112 + pos] = new_v7;\r
+    prev1[128 + pos] = new_v8;\r
+    prev1[144 + pos] = new_v9;\r
+    prev1[160 + pos] = new_v10;\r
+    prev1[176 + pos] = new_v11;\r
+    prev1[192 + pos] = new_v12;\r
+    prev1[208 + pos] = new_v13;\r
+    prev1[224 + pos] = new_v14;\r
+    prev1[240 + pos] = new_v15;\r
+\r
+    // V[16] is always 0.0:\r
+    prev1[256 + pos] = 0.0f;\r
+\r
+    // insert V[17-31] (== -new_v[15-1]) into actual v:\r
+    prev1[272 + pos] = -new_v15;\r
+    prev1[288 + pos] = -new_v14;\r
+    prev1[304 + pos] = -new_v13;\r
+    prev1[320 + pos] = -new_v12;\r
+    prev1[336 + pos] = -new_v11;\r
+    prev1[352 + pos] = -new_v10;\r
+    prev1[368 + pos] = -new_v9;\r
+    prev1[384 + pos] = -new_v8;\r
+    prev1[400 + pos] = -new_v7;\r
+    prev1[416 + pos] = -new_v6;\r
+    prev1[432 + pos] = -new_v5;\r
+    prev1[448 + pos] = -new_v4;\r
+    prev1[464 + pos] = -new_v3;\r
+    prev1[480 + pos] = -new_v2;\r
+    prev1[496 + pos] = -new_v1;\r
+\r
+    // insert V[32] (== -new_v[0]) into other v:\r
+    // dest = (actual_v == v1) ? v2 : v1;\r
+\r
+    prev2[0 + pos] = -new_v0;\r
+    // insert V[33-48] (== new_v[16-31]) into other v:\r
+    prev2[16 + pos] = new_v16;\r
+    prev2[32 + pos] = new_v17;\r
+    prev2[48 + pos] = new_v18;\r
+    prev2[64 + pos] = new_v19;\r
+    prev2[80 + pos] = new_v20;\r
+    prev2[96 + pos] = new_v21;\r
+    prev2[112 + pos] = new_v22;\r
+    prev2[128 + pos] = new_v23;\r
+    prev2[144 + pos] = new_v24;\r
+    prev2[160 + pos] = new_v25;\r
+    prev2[176 + pos] = new_v26;\r
+    prev2[192 + pos] = new_v27;\r
+    prev2[208 + pos] = new_v28;\r
+    prev2[224 + pos] = new_v29;\r
+    prev2[240 + pos] = new_v30;\r
+    prev2[256 + pos] = new_v31;\r
+\r
+    // insert V[49-63] (== new_v[30-16]) into other v:\r
+    prev2[272 + pos] = new_v30;\r
+    prev2[288 + pos] = new_v29;\r
+    prev2[304 + pos] = new_v28;\r
+    prev2[320 + pos] = new_v27;\r
+    prev2[336 + pos] = new_v26;\r
+    prev2[352 + pos] = new_v25;\r
+    prev2[368 + pos] = new_v24;\r
+    prev2[384 + pos] = new_v23;\r
+    prev2[400 + pos] = new_v22;\r
+    prev2[416 + pos] = new_v21;\r
+    prev2[432 + pos] = new_v20;\r
+    prev2[448 + pos] = new_v19;\r
+    prev2[464 + pos] = new_v18;\r
+    prev2[480 + pos] = new_v17;\r
+    prev2[496 + pos] = new_v16;\r
   }\r
 \r
   /**\r
@@ -860,7 +1028,7 @@ final class SynthesisFilter {
 \r
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
         // final float[] dp = d16[i];\r
         pcm_sample =\r
             (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1])\r
@@ -884,7 +1052,7 @@ final class SynthesisFilter {
 \r
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
         // final float[] dp = d16[i];\r
         pcm_sample =\r
             (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1])\r
@@ -915,7 +1083,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1])\r
@@ -940,7 +1108,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1])\r
@@ -971,7 +1139,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1])\r
@@ -996,7 +1164,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1])\r
@@ -1028,7 +1196,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1])\r
@@ -1054,7 +1222,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1])\r
@@ -1086,7 +1254,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1])\r
@@ -1111,7 +1279,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1])\r
@@ -1142,7 +1310,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1])\r
@@ -1167,7 +1335,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1])\r
@@ -1198,7 +1366,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1])\r
@@ -1223,7 +1391,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1])\r
@@ -1254,7 +1422,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1])\r
@@ -1279,7 +1447,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1])\r
@@ -1311,7 +1479,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1])\r
@@ -1337,7 +1505,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1])\r
@@ -1368,7 +1536,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1])\r
@@ -1393,7 +1561,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1])\r
@@ -1422,7 +1590,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1])\r
@@ -1446,7 +1614,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1])\r
@@ -1477,7 +1645,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1])\r
@@ -1502,7 +1670,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1])\r
@@ -1532,7 +1700,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1])\r
@@ -1556,7 +1724,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1])\r
@@ -1587,7 +1755,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1])\r
@@ -1612,7 +1780,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1])\r
@@ -1643,7 +1811,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1])\r
@@ -1668,7 +1836,7 @@ final class SynthesisFilter {
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
 \r
         pcm_sample =\r
             (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1])\r
@@ -1697,7 +1865,7 @@ final class SynthesisFilter {
 \r
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
         // final float d16[i][] = d16[i];\r
         pcm_sample =\r
             (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1])\r
@@ -1720,7 +1888,7 @@ final class SynthesisFilter {
 \r
       // fat chance of having this loop unroll\r
       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
-        @LOC("THIS,SynthesisFilter.V1") float pcm_sample;\r
+        @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
         // final float d16[i][] = d16[i];\r
         pcm_sample =\r
             (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1])\r
@@ -1811,6 +1979,23 @@ final class SynthesisFilter {
      */\r
   }\r
 \r
+  @LATTICE("THIS<C,C*,THISLOC=THIS")\r
+  public void clear() {\r
+    // clear out v1,v2\r
+    SSJAVA.arrayinit(v1, 0);\r
+    SSJAVA.arrayinit(v2, 0);\r
+    // copy previous v1,v2\r
+    for (@LOC("THIS,SynthesisFilter.V") int i = 0; i < prev1.length; i++) {\r
+      v1[i] = prev1[i];\r
+    }\r
+    for (@LOC("THIS,SynthesisFilter.V") int i = 0; i < prev2.length; i++) {\r
+      v2[i] = prev2[i];\r
+    }\r
+    // clear out previous buffer\r
+    SSJAVA.arrayinit(prev1, 0);\r
+    SSJAVA.arrayinit(prev2, 0);\r
+  }\r
+\r
   /**\r
    * Calculate 32 PCM samples and put the into the Obuffer-object.\r
    */\r
@@ -1830,7 +2015,7 @@ final class SynthesisFilter {
     // System.out.println("3.actual_v=" + (actual_v == v1) + " vidx=" + vidx);\r
 \r
     actual_write_pos = (actual_write_pos + 1) & 0xf;\r
-//    System.out.println("actual_write_pos="+actual_write_pos);\r
+    // System.out.println("actual_write_pos="+actual_write_pos);\r
     // actual_v = (actual_v == v1) ? v2 : v1;\r
 \r
     if (vidx == 1) {\r
@@ -1890,9 +2075,9 @@ final class SynthesisFilter {
    * d[] split into subarrays of length 16. This provides for more faster access\r
    * by allowing a block of 16 to be addressed with constant offset.\r
    **/\r
-  //TODO CONST\r
+  // TODO CONST\r
   @LOC("V")\r
-  private final static float d16[][] = null; \r
+  private final static float d16[][] = null;\r
 \r
   /**\r
    * Converts a 1D array into a number of smaller arrays. This is used to\r