Skip to content

Commit 74bbc88

Browse files
committed
Make native a bit equilevant to web target?
1 parent 6fd229b commit 74bbc88

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/lime/media/AudioFilter.hx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class AudioFilter
100100

101101
@:noCompletion private inline function set_frequency(value:Float):Float
102102
{
103+
value = Math.min(Math.max(value, 0), 24000);
103104
if (frequency != value)
104105
{
105106
frequency = value;
@@ -113,6 +114,7 @@ class AudioFilter
113114
{
114115
#if lime_openal
115116
var linearValue = Math.max(Math.min((frequency - 140) / 19860, 1), 0);
117+
var shelfLinear = 1.0 + Math.min((frequency - 140) / 140, 0) - Math.max((frequency - 20000) / 4000, 0);
116118

117119
switch (type)
118120
{
@@ -122,21 +124,24 @@ class AudioFilter
122124
{
123125
AL.filteri(__alFilter, AL.FILTER_TYPE, AL.FILTER_LOWPASS);
124126
AL.filterf(__alFilter, AL.LOWPASS_GAINHF, linearValue);
127+
AL.filteri(__alFilter, AL.LOWPASS_GAIN, shelfLinear);
125128
}
126129

127130
case HIGHPASS:
128131
__filterDisconnected = frequency <= 0;
129132
if (!__filterDisconnected)
130133
{
131134
AL.filteri(__alFilter, AL.FILTER_TYPE, AL.FILTER_HIGHPASS);
132-
AL.filterf(__alFilter, AL.HIGHPASS_GAINLF, 1 - linearValue);
135+
AL.filterf(__alFilter, AL.HIGHPASS_GAINLF, 1 - Math.pow(linearValue, 0.25));
136+
AL.filteri(__alFilter, AL.HIGHPASS_GAIN, shelfLinear * Math.pow(linearValue, 0.5));
133137
}
134138

135139
case BANDPASS:
136140
__filterDisconnected = false;
137141
AL.filteri(__alFilter, AL.FILTER_TYPE, AL.FILTER_BANDPASS);
138-
AL.filterf(__alFilter, AL.LOWPASS_GAINHF, linearValue);
139-
AL.filterf(__alFilter, AL.HIGHPASS_GAINLF, 1 - linearValue);
142+
AL.filterf(__alFilter, AL.BANDPASS_GAINHF, linearValue);
143+
AL.filterf(__alFilter, AL.BANDPASS_GAINLF, 1 - Math.pow(linearValue, 0.35));
144+
AL.filteri(__alFilter, AL.BANDPASS_GAIN, shelfLinear);
140145

141146
default:
142147
__filterDisconnected = true;

0 commit comments

Comments
 (0)