Make hq-mode the default and update ambisonics.txt
This commit is contained in:
+3
-4
@@ -509,9 +509,8 @@ void InitCustomPanning(ALCdevice *device, bool hqdec, const AmbDecConf *conf, co
|
||||
auto accum_spkr_dist = std::bind(std::plus<float>{}, _1,
|
||||
std::bind(std::mem_fn(&AmbDecConf::SpeakerConf::Distance), _2));
|
||||
const ALfloat avg_dist{
|
||||
std::accumulate(conf->Speakers.begin(), conf->Speakers.end(), float{0.0f},
|
||||
accum_spkr_dist) / static_cast<ALfloat>(conf->Speakers.size())
|
||||
};
|
||||
std::accumulate(conf->Speakers.begin(), conf->Speakers.end(), 0.0f, accum_spkr_dist) /
|
||||
static_cast<ALfloat>(conf->Speakers.size())};
|
||||
InitNearFieldCtrl(device, avg_dist, order,
|
||||
(conf->ChanMask&AMBI_PERIPHONIC_MASK) ? chans_per_order3d : chans_per_order2d);
|
||||
|
||||
@@ -717,7 +716,7 @@ void aluInitRenderer(ALCdevice *device, ALint hrtf_id, HrtfRequestMode hrtf_appr
|
||||
InitPanning(device);
|
||||
else
|
||||
{
|
||||
int hqdec{GetConfigValueBool(devname, "decoder", "hq-mode", 0)};
|
||||
int hqdec{GetConfigValueBool(devname, "decoder", "hq-mode", 1)};
|
||||
InitCustomPanning(device, !!hqdec, pconf, speakermap);
|
||||
}
|
||||
if(device->AmbiDecoder)
|
||||
|
||||
+1
-1
@@ -272,7 +272,7 @@
|
||||
# configuration files for the appropriate speaker configuration you intend to
|
||||
# use (see the quad, surround51, etc options below). Currently, up to third-
|
||||
# order decoding is supported.
|
||||
#hq-mode = false
|
||||
#hq-mode = true
|
||||
|
||||
## distance-comp:
|
||||
# Enables compensation for the speakers' relative distances to the listener.
|
||||
|
||||
+16
-23
@@ -79,30 +79,23 @@ Soft (or any other OpenAL implementation that wishes to) can render using
|
||||
Ambisonics and decode the ambisonic mix for a high level of accuracy over what
|
||||
simple pan-pot could provide.
|
||||
|
||||
This is effectively what the high-quality mode option does, when given an
|
||||
appropriate decoder configuation for the playback channel layout. 3D rendering
|
||||
and effect mixing is done to an ambisonic buffer, which is later decoded for
|
||||
output utilizing the benefits available to ambisonic processing.
|
||||
When given an appropriate decoder configuration for the channel layout, the
|
||||
ambisonic mix can be decoded utilizing the benefits available to ambisonic
|
||||
processing, including frequency-dependent processing and near-field effects.
|
||||
Without a decoder configuration, the ambisonic mix can still be decoded for
|
||||
good stereo or surround sound output, although without near-field effects as
|
||||
there's no speaker distance information.
|
||||
|
||||
The basic, non-high-quality, renderer uses similar principles, however it skips
|
||||
the frequency-dependent processing (so low frequency sounds are treated the
|
||||
same as high frequency sounds) and does some creative manipulation of the
|
||||
involved math to skip the intermediate ambisonic buffer, rendering more
|
||||
directly to the output while still taking advantage of all the available
|
||||
speakers to reconstruct the sound wave. This method trades away some playback
|
||||
quality for less memory and processor usage.
|
||||
|
||||
In addition to providing good support for surround sound playback, Ambisonics
|
||||
also has benefits with stereo output. 2-channel UHJ is a stereo-compatible
|
||||
format that encodes some surround sound information using a wide-band 90-degree
|
||||
phase shift filter. It works by taking a B-Format signal, and deriving a
|
||||
frontal stereo mix with the rear sounds attenuated and filtered in with it.
|
||||
Although the result is not as good as 3-channel (2D) B-Format, it has the
|
||||
distinct advantage of only using 2 channels and being compatible with stereo
|
||||
output. This means it will sound just fine when played as-is through a normal
|
||||
stereo device, or it may optionally be fed to a properly configured surround
|
||||
sound receiver which can extract the encoded information and restore some of
|
||||
the original surround sound signal.
|
||||
In addition to surround sound output, Ambisonics also has benefits with stereo
|
||||
output. 2-channel UHJ is a stereo-compatible format that encodes some surround
|
||||
sound information using a wide-band 90-degree phase shift filter. This is
|
||||
generated by taking the ambisonic mix and deriving a front-stereo mix with
|
||||
with the rear sounds filtered in with it. Although the result is not as good as
|
||||
3-channel (2D) B-Format, it has the distinct advantage of only using 2 channels
|
||||
and being compatible with stereo output. This means it will sound just fine
|
||||
when played as-is through a normal stereo device, or it may optionally be fed
|
||||
to a properly configured surround sound receiver which can extract the encoded
|
||||
information and restore some of the original surround sound signal.
|
||||
|
||||
|
||||
What Are Its Limitations?
|
||||
|
||||
@@ -716,7 +716,7 @@ void MainWindow::loadConfig(const QString &fname)
|
||||
}
|
||||
}
|
||||
|
||||
bool hqmode{settings.value("decoder/hq-mode", false).toBool()};
|
||||
bool hqmode{settings.value("decoder/hq-mode", true).toBool()};
|
||||
ui->decoderHQModeCheckBox->setChecked(hqmode);
|
||||
ui->decoderDistCompCheckBox->setCheckState(getCheckState(settings.value("decoder/distance-comp")));
|
||||
ui->decoderNFEffectsCheckBox->setCheckState(getCheckState(settings.value("decoder/nfc")));
|
||||
@@ -976,7 +976,7 @@ void MainWindow::saveConfig(const QString &fname) const
|
||||
settings.setValue("dither", getCheckValue(ui->outputDitherCheckBox));
|
||||
|
||||
settings.setValue("decoder/hq-mode",
|
||||
ui->decoderHQModeCheckBox->isChecked() ? QString{"true"} : QString{/*"false"*/}
|
||||
ui->decoderHQModeCheckBox->isChecked() ? QString{/*"true"*/} : QString{"false"}
|
||||
);
|
||||
settings.setValue("decoder/distance-comp", getCheckValue(ui->decoderDistCompCheckBox));
|
||||
settings.setValue("decoder/nfc", getCheckValue(ui->decoderNFEffectsCheckBox));
|
||||
|
||||
Reference in New Issue
Block a user