|
@@ -39,20 +39,20 @@ function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
|
|
|
fprintf(file, 'import("stdfaust.lib");\n');
|
|
fprintf(file, 'import("stdfaust.lib");\n');
|
|
|
fprintf(file, '\n');
|
|
fprintf(file, '\n');
|
|
|
|
|
|
|
|
- bnames = cellstr(['w'; 'x'; 'y'; 'z']);
|
|
|
|
|
|
|
+ bnames = cellstr(['w'; 'x'; 'y'; 'z'; 'u'; 'v']);
|
|
|
|
|
|
|
|
%% write static A to B matrix rows
|
|
%% write static A to B matrix rows
|
|
|
- fuma = [sqrt(2)/2, 1, 1, 1];
|
|
|
|
|
|
|
+ fuma = [sqrt(2)/2, 1, 1, 1, 1, 1];
|
|
|
for a = 1:size(A2B,1)
|
|
for a = 1:size(A2B,1)
|
|
|
- for b = 1:4
|
|
|
|
|
|
|
+ for b = 1:size(FIR, 1)
|
|
|
fprintf(file, ["a" sprintf("%d", a) char(bnames(b)) " = "]);
|
|
fprintf(file, ["a" sprintf("%d", a) char(bnames(b)) " = "]);
|
|
|
write_faust_vector(file, fuma(b) * A2B(a, b));
|
|
write_faust_vector(file, fuma(b) * A2B(a, b));
|
|
|
fprintf(file, ';\n\n');
|
|
fprintf(file, ';\n\n');
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
- %% write four FIR filter coefficients
|
|
|
|
|
- for b = 1:4
|
|
|
|
|
|
|
+ %% write FIR filter coefficients
|
|
|
|
|
+ for b = 1:size(FIR,1)
|
|
|
bf_filter = reshape(FIR(b, :), 1, []);
|
|
bf_filter = reshape(FIR(b, :), 1, []);
|
|
|
fprintf(file, [char(bnames(b)) "_fir = "]);
|
|
fprintf(file, [char(bnames(b)) "_fir = "]);
|
|
|
write_faust_vector(file, bf_filter);
|
|
write_faust_vector(file, bf_filter);
|
|
@@ -64,7 +64,12 @@ function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
|
|
|
fprintf(file, 'process = _,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
|
|
fprintf(file, 'process = _,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
|
|
|
else
|
|
else
|
|
|
%% assume 8 input channels for now
|
|
%% assume 8 input channels for now
|
|
|
- fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
|
|
|
|
|
|
|
+ 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');
|
|
|
|
|
+ else
|
|
|
|
|
+ fprintf(file, 'process = _,_,_,_,_,_,_,_ <: w*wgain, x*gain, y*gain, z*gain \n');
|
|
|
|
|
+ end
|
|
|
end
|
|
end
|
|
|
fprintf(file, 'with {\n');
|
|
fprintf(file, 'with {\n');
|
|
|
if (size(A2B,1) == 4)
|
|
if (size(A2B,1) == 4)
|
|
@@ -77,10 +82,18 @@ function [] = sphear_write_simple_a2b_encoder(A2B, FIR)
|
|
|
fprintf(file, ' x = *(a1x), *(a2x), *(a3x), *(a4x), *(a5x), *(a6x), *(a7x), *(a8x) :> fi.fir(x_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, ' 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, ' z = *(a1z), *(a2z), *(a3z), *(a4z), *(a5z), *(a6z), *(a7z), *(a8z) :> fi.fir(z_fir) ;\n');
|
|
|
|
|
+ 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');
|
|
|
|
|
+ end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
- fprintf(file, ' gain = hslider("XYZ",1,0,1,0.01);\n');
|
|
|
|
|
fprintf(file, ' wgain = hslider("W",1,0,1,0.01);\n');
|
|
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, '};\n');
|
|
fprintf(file, '};\n');
|
|
|
fprintf(file, '\n');
|
|
fprintf(file, '\n');
|
|
|
fclose(file);
|
|
fclose(file);
|