From: drowe67 Date: Thu, 12 Jan 2017 00:46:37 +0000 (+0000) Subject: part way through indexes_model refactoring X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=858714c03cff717620f9e5d6327e3df3b02da2cf;p=freetel-svn-tracking.git part way through indexes_model refactoring git-svn-id: https://svn.code.sf.net/p/freetel/code@2958 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/tnewamp1.m b/codec2-dev/octave/tnewamp1.m index 2f9ba7d9..d405090f 100644 --- a/codec2-dev/octave/tnewamp1.m +++ b/codec2-dev/octave/tnewamp1.m @@ -95,8 +95,7 @@ function tnewamp1(input_prefix) Nfft_phase = 128; model_ = zeros(frames, max_amp+2); voicing_ = zeros(1,frames); - Hm = zeros(frames, max_amp); - phi = zeros(1,max_amp); + H = zeros(frames, max_amp); for f=1:M:frames if voicing(f) index = encode_log_Wo(model(f,1), 6); @@ -129,8 +128,7 @@ function tnewamp1(input_prefix) phase = determine_phase(model_, k, Nfft_phase); for m=1:model_(k,2) b = round(m*model_(k,1)*Nfft_phase/(2*pi)); % map harmonic centre to DFT bin - phi(m) = phase(b+1); - Hm(k,m) = exp(-j*phi(m)); + H(k,m) = exp(-j*phase(b+1)); end end @@ -150,11 +148,11 @@ function tnewamp1(input_prefix) %Hm(2,:) - Hm_c(2,:) figure(1); - mesh(angle(Hm)); + mesh(angle(H)); figure(2); - mesh(angle(Hm_c)); + mesh(angle(H_c)); figure(3); - mesh(abs(Hm - Hm_c)); + mesh(abs(H - H_c)); check(rate_K_surface, rate_K_surface_c, 'rate_K_surface', 0.01); check(mean_f, mean_c, 'mean', 0.01); @@ -162,8 +160,8 @@ function tnewamp1(input_prefix) check(interpolated_surface_, interpolated_surface__c, 'interpolated_surface_', 0.01); check(model_(:,1), model__c(:,1), 'interpolated Wo_', 0.001); check(voicing_, voicing__c, 'interpolated voicing'); - check(model_(:,3:max_amp+2), model__c(:,3:max_amp+2), 'rate L surface at dec', 0.1); - check(Hm, Hm_c, 'phase surface'); + check(model_(:,3:max_amp+2), model__c(:,3:max_amp+2), 'rate L Am surface ', 0.1); + check(H, H_c, 'phase surface'); #{ diff --git a/codec2-dev/src/newamp1.c b/codec2-dev/src/newamp1.c index a1f1a397..6736adb5 100644 --- a/codec2-dev/src/newamp1.c +++ b/codec2-dev/src/newamp1.c @@ -278,10 +278,10 @@ void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_g \*---------------------------------------------------------------------------*/ -void interp_Wo_v(float Wo_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2) +void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2) { int i; - int M = 4; + int M = 4; /* interpolation rate */ for(i=0; iL; m++) { b = floorf(0.5+m*model->Wo*Nfft/(2.0*M_PI)); - model->phi[m] = phase[b]; + H[m].real = cos(phase[b]); H[m].imag = -sin(phase[b]); } } @@ -459,21 +463,45 @@ void newamp1_model_to_indexes(int indexes[], /*---------------------------------------------------------------------------*\ - FUNCTION....: newamp1_indexes_to_model + FUNCTION....: newamp1_interpolate + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + +\*---------------------------------------------------------------------------*/ + +void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K) +{ + int i, k; + int M = 4; + float c; + + /* (linearly) interpolate 25Hz amplitude vectors back to 100Hz */ + + for(i=0,c=1.0; i= M) { - - /* interpolate 25Hz amplitude vectors back to 100Hz */ + if (f >= M) { + /* float *left_vec = &rate_K_surface_[f-M][0]; float *right_vec = &rate_K_surface_[f][0]; - for(i=f-M,c=1.0; i tnewamp1(\"../build_linux/src/hts1a\")\n");