소스 검색

write encoder: add parameter for encoder name, make code compatible with both original Faust and Faust 2

Fernando Pablo Lopez-Lezcano 8 년 전
부모
커밋
5e0530b8fb
1개의 변경된 파일과 35개의 추가작업 그리고 23개의 파일을 삭제
  1. 35 23
      calibration/src/sphear_write_simple_a2b_encoder.m

+ 35 - 23
calibration/src/sphear_write_simple_a2b_encoder.m

@@ -27,17 +27,32 @@
 %%  You should have received a copy of the GNU General Public License
 %%  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
+function [] = sphear_write_simple_a2b_encoder(A2B, FIR, name = "A2B_encoder", faust_version = 2)
 
-  filename = '../data/current/cal/simple_a2b_encoder.dsp';
+  filename = strcat('../data/current/cal/', name, '.dsp');
   [file, msg] = fopen(filename,'w');
   if msg
     error([msg ': ' filename]);
   end
 
+  fprintf(file, strcat('declare name "', name, '";\n'));
+  fprintf(file, 'declare version "1.0";\n');
+  fprintf(file, 'declare author "Fernando Lopez-Lezcano";\n');
+  fprintf(file, 'declare license "GPL";\n');
+  fprintf(file, 'declare copyright "(c) Fernando Lopez-Lezcano 2016-17";\n\n');
+
   %% write beginning of file...
-  fprintf(file, 'import("stdfaust.lib");\n');
-  fprintf(file, '\n');
+  if (faust_version == 2)
+    fprintf(file, 'import("stdfaust.lib");\n');
+    fprintf(file, '\n');
+    firname = "fi.fir";
+  else
+    fprintf(file, 'import("filter.lib");\n');
+    fprintf(file, 'import("music.lib");\n');
+    fprintf(file, 'import("oscillator.lib");\n');
+    fprintf(file, '\n');
+    firname = "fir";
+  end
 
   bnames = cellstr(['w'; 'x'; 'y'; 'z'; 'u'; 'v']);
 
@@ -47,9 +62,10 @@ function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
     for b = 1:size(FIR, 1)
       fprintf(file, ["a" sprintf("%d", a) char(bnames(b)) " = "]);
       write_faust_vector(file, fuma(b) * A2B(a, b));
-      fprintf(file, ';\n\n');
+      fprintf(file, ';\n');
     end
   end
+  fprintf(file, '\n');
   
   %% write FIR filter coefficients
   for b = 1:size(FIR,1)
@@ -61,39 +77,35 @@ function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
   
   %% be done with it...
   if (size(A2B,1) == 4)
-    fprintf(file, 'process = _,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
+    fprintf(file, 'process = _,_,_,_ <: w*gain, x*gain, y*gain, z*gain \n');
   else
     %% assume 8 input channels for now
     if (size(A2B,2) > 4)
       %% add second order horizontal
-      fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*wgain, x*gain, y*gain, z*gain, u*uvgain, v*uvgain \n');
+      fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*gain, x*gain, y*gain, z*gain, u*gain, v*gain \n');
     else
-      fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
+      fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*gain, x*gain, y*gain, z*gain \n');
     end
   end
   fprintf(file, 'with {\n');
   if (size(A2B,1) == 4)
-    fprintf(file, '     w = *(a1w), *(a2w), *(a3w), *(a4w) :> fi.fir(w_fir) ;\n');
-    fprintf(file, '     x = *(a1x), *(a2x), *(a3x), *(a4x) :> fi.fir(x_fir) ;\n');
-    fprintf(file, '     y = *(a1y), *(a2y), *(a3y), *(a4y) :> fi.fir(y_fir) ;\n');
-    fprintf(file, '     z = *(a1z), *(a2z), *(a3z), *(a4z) :> fi.fir(z_fir) ;\n');
+    fprintf(file, sprintf('     w = *(a1w), *(a2w), *(a3w), *(a4w) :> %s(w_fir) ;\n', firname));
+    fprintf(file, sprintf('     x = *(a1x), *(a2x), *(a3x), *(a4x) :> %s(x_fir) ;\n', firname));
+    fprintf(file, sprintf('     y = *(a1y), *(a2y), *(a3y), *(a4y) :> %s(y_fir) ;\n', firname));
+    fprintf(file, sprintf('     z = *(a1z), *(a2z), *(a3z), *(a4z) :> %s(z_fir) ;\n', firname));
   else
-    fprintf(file, '     w = *(a1w), *(a2w), *(a3w), *(a4w), *(a5w), *(a6w), *(a7w), *(a8w) :> fi.fir(w_fir) ;\n');
-    fprintf(file, '     x = *(a1x), *(a2x), *(a3x), *(a4x), *(a5x), *(a6x), *(a7x), *(a8x) :> fi.fir(x_fir) ;\n');
-    fprintf(file, '     y = *(a1y), *(a2y), *(a3y), *(a4y), *(a5y), *(a6y), *(a7y), *(a8y) :> fi.fir(y_fir) ;\n');
-    fprintf(file, '     z = *(a1z), *(a2z), *(a3z), *(a4z), *(a5z), *(a6z), *(a7z), *(a8z) :> fi.fir(z_fir) ;\n');
+    fprintf(file, sprintf('     w = *(a1w), *(a2w), *(a3w), *(a4w), *(a5w), *(a6w), *(a7w), *(a8w) :> %s(w_fir) ;\n', firname));
+    fprintf(file, sprintf('     x = *(a1x), *(a2x), *(a3x), *(a4x), *(a5x), *(a6x), *(a7x), *(a8x) :> %s(x_fir) ;\n', firname));
+    fprintf(file, sprintf('     y = *(a1y), *(a2y), *(a3y), *(a4y), *(a5y), *(a6y), *(a7y), *(a8y) :> %s(y_fir) ;\n', firname));
+    fprintf(file, sprintf('     z = *(a1z), *(a2z), *(a3z), *(a4z), *(a5z), *(a6z), *(a7z), *(a8z) :> %s(z_fir) ;\n', firname));
     if (size(A2B,2) > 4)
       %% add second order horizontal
-      fprintf(file, '     u = *(a1u), *(a2u), *(a3u), *(a4u), *(a5u), *(a6u), *(a7u), *(a8u) :> fi.fir(u_fir) ;\n');
-      fprintf(file, '     v = *(a1v), *(a2v), *(a3v), *(a4v), *(a5v), *(a6v), *(a7v), *(a8v) :> fi.fir(v_fir) ;\n');
+      fprintf(file, sprintf('     u = *(a1u), *(a2u), *(a3u), *(a4u), *(a5u), *(a6u), *(a7u), *(a8u) :> %s(u_fir) ;\n', firname));
+      fprintf(file, sprintf('     v = *(a1v), *(a2v), *(a3v), *(a4v), *(a5v), *(a6v), *(a7v), *(a8v) :> %s(v_fir) ;\n', firname));
     end
   end
   
-  fprintf(file, '     wgain = hslider("W",1,0,1,0.01);\n');
-  fprintf(file, '     gain = hslider("XYZ",1,0,1,0.01);\n');
-  if (size(A2B,2) > 4)
-    fprintf(file, '     uvgain = hslider("UV",1,0,1,0.01);\n');
-  end
+  fprintf(file, '     gain = hslider("Gain",1,0,1,0.01);\n');
   fprintf(file, '};\n');
   fprintf(file, '\n');
   fclose(file);