Virtual Chambers

The main goal of the DSP algorithm is to implement a virtual chamber, based on the physical resonator, i.e., to manipulate the resonator’s signals and re-construct them to minimize the difference D between the Chameleon Guitar’s output (captured by a microphone, 20cm in front of an acoustic amplifier) and the reference guitar:

Where Sr is the reference guitar’s signal, Sis are the four sensors’ signals, cij are the band coefficients per signal’s channel and his are the filters. D value can be minimized by a good filter bank design (hj values) and right coefficients (cij) choice. First, each of the signals has a filter bank that its bands‘ regions are tuned according to a given acoustic guitar’s eigen-frequencies. The best candidates per band were selected from the four signals. Then, each band was multiplied to achieve the required reference level. However, when more than one signal was a good candidate for a specific band, the one with the higher SNR was chosen. After tuning the algorithm of the guitar to minimize that difference, tuning it to a sound like it has a smaller or bigger chamber, is relatively easy.

The resonance mode relates to the spectral amplitude and decay rate of the relevant frequency. When the acoustic waves in the guitar are closer to guitars resonance modes, their decay rate is slower. IIR can imitate such a behavior coherently; the resonance behavior of the IIR can be tuned by the distance of the filters poles from the ROC. The IIR can add slower decay rate to the transferred band, i.e., by tuning the filter bank’s IIRs, we can fit artificial reverberation to selected bands. Practically, the filter bank was implemented by a Second Order Section Direct Form II filters.

An iterative sequential implementation for an IIR in Matlab is presented here:


% ------------------------------------------------

function Out=IIR(In, Hd)


% SOS Direct Form II IIR

% This part was replaced by the sampling management

% in the C implementation


% In: input signal

% Out: output signal

% Hd: IIR filter parameters


SOS = Hd.sosMatrix;

% SOS: L-by-6 matrix that contains the coefficients

% of each second-order section in its rows


G = Hd.ScaleValues;

% G: gain for each section


global X;

X = zeros(length(G),3);


for n=1:length(In),

    Out(n)=IIR_d(In(n),SOS,G);

end


% ------------------------------------------------


function Out=IIR_d(In, SOS, G)


% SOS Direct Form II IIR, one sample

% This part was implemented in C code


global X;


X(:,2:3)=X(:,1:2);

X(1,1)=In;


for i=2:length(G),

    X(i,1)=G(i-1)*(SOS(i-1,1)*X(i-1,1)...

   +SOS(i-1,3)*X(i-1,3))...

           -SOS(i-1,5)*X(i,2)-SOS(i-1,6)*X(i,3);

end


Out=G(end)*X(end,1);


% ------------------------------------------------


The filter bank implementation is simple, and is based on summing and amplifying the relevant signals bands. Actual Values of ais and Hdis are attached in the above .mat file.


% ------------------------------------------------


% Hd1-Hd13 are the IIR filters structures

% a1-a13 are the bands coefficients,

% (0s were optimized out)

% s1-s4 are the four channels signals


S = ...

a1*IIR(Hd1,s2)+a2*IIR(Hd2,s2)+a3*IIR(Hd3,s1)+...    a4*IIR(Hd4,s4)+a5*IIR(Hd5,s4)+a6*IIR(Hd6,s4)+... a7*IIR(Hd7,s2)+a8*IIR(Hd8,s4)+a9*IIR(Hd9,s2)+... a10*IIR(Hd10,s1)+a11*IIR(Hd11,s4)+a12*IIR(Hd12,s4)+... a13*IIR(Hd13,s4)+a14*IIR(Hd14,s4);


% ------------------------------------------------


The impulse response of resonator no. 1 was used for tuning the filter banks. The IIR coefficients were optimized in Matlab’s FDAtool, in a brute-force process. This Matlab system required 14 bands and mainly processed resonance modes below 1KHz. It was implemented on the guitar with fewer bands (starting at seven and leading down to four), depending on the amplifier’s volume; morphing between the guitar’s acoustic sound and the amplifier’s output tends to give interesting overall results, when the digital processing contributes mainly to the lower modes.


Alternative Algorithms (D1)

The algorithm described above is an implementation suggestion for the virtual chamber. However, the use of a DSP enables implementation of a variety of sound processing standards and synthesized algorithms. The Chameleon Guitar resonator has four authentic channels; all of them represent the same acoustic event, but with a different timbre. Each of those signals is a different superposition of the resonator’s vibration modes. The distance between the signals can be represented as Dnm,






Dnm is highly dependent on the medium; it is a unique property of the resonator, which contains rich acoustic information that can be used to synthesize or control the sound. For example, using the output of one sensor to manipulate another sensor’s signal.


% ------------------------------------------------


% Hd14 is the IIR filter structure

% b1-b3 are the bands coefficients,

% (0s were optimized out)

% s2-s4 are three of the four channels signals


S = s4*sin( b1*IIR(s2,Hd14)+b2*s3 ) + b3*s2;


% ------------------------------------------------


A suggestion for such a processing is described in the above Matlab code (D1 will be the name of that process). This is a combination of phase modulation with a distortion effect, depending on the bi coefficients values. The amplitude of s4, that is low frequency oriented, controls the clipping of the non-linear part of the formula (inside the sinusoid). At the same time that is mid frequency oriented, gives a natural signal. In case of a resonator that allows easy, non-coupled manipulation of s4 (like in resonator no. 6), an interesting overall effect is given.

 

Home        Concept   Tech  Video   Sound  Vision   Process   Press   Credits

DSP

The signal-processing algorithm was developed and tested with Matlab. It was implemented on the guitar signal-processing unit using C code and Freescale’s Eight-channel-C-template software. Freescale’s Symphony™ Studio Development Tools used as the development platform.



Home        Concept   Tech   Sound  Video  Vision   Press   Process   Credits

[.mat file with Matlab simulation’s filters]