ericaddison / Algs_Term_Project

Term project for the UT Austin ECE course "Algorithmic Foundation for Software Systems"
0 stars 0 forks source link

Mdct #22

Closed ericaddison closed 7 years ago

ericaddison commented 7 years ago

This branch adds the simple implementation of the Modified Discrete Cosine Transform (MDCT).

It also adds ByteBufferizer steps for coming out of MDCT or straight out of the filter bank. There are also two "adaptive" ByteBufferizer steps that can adapt to the dynamic range within a window of signal. This seems to result in better fidelity byteification, but will take extra space in the compressed file (which shouldn't be much of a big deal if the window sizes are sufficiently large). This will be another "tradeoff" we can discuss in the report.

It is not clear to me that the MDCT will actually help us!!! I think its utility comes in when you define a sophisticated psychoacoustic model ... it does not provide any additional compression on its own. But for completeness and extra report fodder, now we have it. It is currently implemented in an O(N^2) fashion, but fancy use of FFT can get it down to O(NlgN). This is something we can mention in the report.

I'm thinking we might want to throw in a dog-simple psycho-acoustic model of our own. One idea for a very simple model is to reduce the number of bytes used to store a sample for frequencies outside of a certain range, which could circle back to the idea of tweaking the algorithm to perform better for known audio characteristics (e.g. bass track, voice, etc).

JoshMusick commented 7 years ago

seems good to me!