mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
Merge pull request #19 from antonisauren/tmj-master
Logarytmiczny fade sampli dzwiekow skladanych.
This commit is contained in:
11
sound.cpp
11
sound.cpp
@@ -814,12 +814,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;
|
||||
}
|
||||
}
|
||||
@@ -831,12 +834,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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user