How to convert a 5.1ch wave file to 2ch wave file?

11 visualizzazioni (ultimi 30 giorni)
I have wave files dropped from Front-Left, Front-Right, Rear-Left, Rear-Right and Center Speakers.
I want to synthesis these five waves to 2ch(Left and Right).
I tried sum them together and divide 5, but the result sounds not good.
Do you have any idea on converting 5.1ch to 2ch without losing audio quality?

Risposta accettata

Walter Roberson
Walter Roberson il 22 Feb 2022
For this purpose, you should know whether this was a "natural" recording, or if it was an "engineered" recording.
If it is a "natural" recording, then you would expect that, except for physical blockages, that all sounds would be recorded on all channels, and that by analyzing the delay correlations between the channels, you could determine the approximate physical distance to the source of the sound; you could then make a projection of what a two-channel receiver would hear if the receiver were placed at a particular reference position.
But for an "engineered" recording, such as professional music, or a movie with sound effects, then typically different sounds would be sent to different channels to give particular results. For example it turns out to be common to make the vocals from the lead singer mono instead of stereo, so that the vocals get "centered" on the listener -- a quite different result than if you were physically present listening to two signers un-amplified. It is also not uncommon (though not necessarily the best sound) to put the vocals on front channels and the instruments on the rear channels.
Also, on "engineered" recordings, the centre speaker is typically optimized for bass, which is not very directional to humans. It is common for the centre to be low-pass filtered, and intended to be omnidirectional, so any location timing information present should be taken with a proverbial grain of salt.
As a first pass, I would suggest that you decide on a front/back fraction; for the moment I will call that . And then output
left_out = alpha * left_front + (1-alpha) * left_rear;
right_out = alpha * right_front + (1-alpha) * right_rear;
and play with different values of alpha to decide which sounds best to you.
(If you use Audio System Toolbox and audio system objects, you can tie alpha into a slider so that you can dynamically alter the centering as you go, while you experiment.)
It is common for the model of channels that the "front" speakers are near to the listener, and that the "rear" speakers are some distance away. Back of the Hall. So although it seems "obvious" to use alpha = 1/2 to give equal weight to front and back, that is probably not what you want, as human listeners tend to prefer to be further forward than the middle.
  1 Commento
wu you
wu you il 23 Feb 2022
Thanks for your help.
Actually, I am focusing on vitural 3D surrounding effect. I think firstly i use HRTF response to generate "natural" recording, while my physical output devices have only two or one channel, i have to generate a "engineered" recording to match them.
I used different values of alpha and saved the better result. It almost meets my requirements, I will do further related research. Thank you again for your detailed and quickly reply.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Audio I/O and Waveform Generation in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by