16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 17:59:18 +02:00

Logarytmiczny fade sampli dzwiekow skladanych.

This commit is contained in:
stele
2021-07-26 12:25:46 +02:00
parent 2e86b3a5e9
commit f09e0ba1d9

View File

@@ -809,12 +809,15 @@ sound_source::update_crossfade( sound_handle const Chunk ) {
// chunks other than the first can have fadein
auto const fadeinwidth { chunkdata.threshold - chunkdata.fadein };
if( soundpoint < chunkdata.threshold ) {
m_properties.gain *=
float lineargain =
interpolate(
0.f, 1.f,
clamp(
( soundpoint - chunkdata.fadein ) / fadeinwidth,
0.f, 1.f ) );
m_properties.gain *=
lineargain /
(1 + (1 - lineargain) * (-0.57)); // approximation of logarytmic fade in
return;
}
}
@@ -826,12 +829,14 @@ sound_source::update_crossfade( sound_handle const Chunk ) {
auto const fadeoutwidth { chunkdata.fadeout - m_soundchunks[ chunkindex + 1 ].second.fadein };
auto const fadeoutstart { chunkdata.fadeout - fadeoutwidth };
if( soundpoint > fadeoutstart ) {
m_properties.gain *=
float lineargain =
interpolate(
1.f, 0.f,
0.f, 1.f,
clamp(
( soundpoint - fadeoutstart ) / fadeoutwidth,
0.f, 1.f ) );
m_properties.gain *= (-lineargain + 1) /
(1 + lineargain * (-0.57)); // approximation of logarytmic fade out
return;
}
}