Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: MDCT Window (Read 4793 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

MDCT Window

Opus Celt uses Vorbis window (Modified_discrete_cosine_transform)
or this formula is used only from 60 to 180 and from 300 to 420 sample (whole window has 480 samples) as is in Fig. 3 in aes135_opus_celt.pdf ? I have written program which uses this window and results are not so good, the best results give me Dolph-Chebyshev Window (but if this window has features for overlapping?)

MDCT Window

Reply #1
The window formula only generates the smooth transition from 0 to 1, samples 60 to 180 for example in fig 3.

What do you mean with "not so good"? What are the criteria?
"I hear it when I see it."

MDCT Window

Reply #2
I have written program which uses this window and results are not so good, the best results give me Dolph-Chebyshev Window (but if this window has features for overlapping?)

Do you know the Princen-Bradley condition for MDCT windows? www.hydrogenaud.io/forums/index.php?showtopic=86431

Chris
If I don't reply to your reply, it means I agree with you.

MDCT Window

Reply #3
Code: [Select]
n = 0:119;
L = 120;
w = sin(pi/2*sin(pi*(n+1/2) / (2*L)).^2);
plot(n, w, n, w(end:-1:1), n, w.^2, n, w.^2+w(end:-1:1).^2)




with cheb:
Code: [Select]
w = chebwin(L*2); w = w(1:L);

"I hear it when I see it."

MDCT Window

Reply #4
The window formula only generates the smooth transition from 0 to 1, samples 60 to 180 for example in fig 3.

What do you mean with "not so good"? What are the criteria?

clt_mdct_forward uses (unlike aes135_opus_celt.pdf ) near square window: from 0 to 1/4-delta windows function is equal zero, from 1/4+delta to 3/4-delta is equal 1, from 3/4+delta to 1 is equal again zero, where delta is very small = 1/32.
This follows from: all window has 1920 points, is 1080 non zero points, and 120 is length Vorbis function.
That window generates big side lobes.
KBD is many better than Vorbis i see. Dolph-Chebychev not satisfy Princen-Bradley condition

Princen-Bradley condition:
2. h(k) = h(2N-1-k)
This condition disable non asymmetric windows?

MDCT Window

Reply #5
The condition is for a symmetric window to overlap resulting in a power sum of 1 at each point.

Fig. 3 shows the lengths of the parts of the window pretty clearly.
0-60 = 0
60-180 = Vorbis power-complementary window
180-300 = 1
...

Alse see https://www.xiph.org/vorbis/doc/Vorbis_I_sp...l#x1-230001.3.2
"I hear it when I see it."

MDCT Window

Reply #6
Also, the window code used in libcelt is:
Code: [Select]
 for (i=0;i<mode->overlap;i++)
    window[i] = Q15ONE*sin(.5*M_PI* sin(.5*M_PI*(i+.5)/mode->overlap) * sin(.5*M_PI*(i+.5)/mode->overlap));
"I hear it when I see it."