@@ -16,6 +16,7 @@ public sealed class BassStemMixer : StemMixer
16
16
17
17
private StreamHandle _mainHandle ;
18
18
private int _songEndHandle ;
19
+ private float _speed ;
19
20
20
21
public override event Action SongEnd
21
22
{
@@ -44,10 +45,11 @@ void sync(int _, int __, int ___, IntPtr _____)
44
45
}
45
46
46
47
internal BassStemMixer ( string name , BassAudioManager manager , float speed , double volume , int handle , int sourceStream , bool clampStemVolume )
47
- : base ( name , manager , speed , clampStemVolume )
48
+ : base ( name , manager , clampStemVolume )
48
49
{
49
50
_mixerHandle = handle ;
50
51
_sourceStream = sourceStream ;
52
+ _speed = speed ;
51
53
SetVolume_Internal ( volume ) ;
52
54
_BufferSetter ( Settings . SettingsManager . Settings . EnablePlaybackBuffer . Value , Bass . PlaybackBufferLength ) ;
53
55
}
@@ -107,13 +109,7 @@ protected override double GetPosition_Internal()
107
109
108
110
if ( Settings . SettingsManager . Settings . EnablePlaybackBuffer . Value )
109
111
{
110
- if ( ! BassAudioManager . GetSpeed ( _mainHandle . Stream , out var speed ) )
111
- {
112
- YargLogger . LogFormatError ( "Failed to get channel speed for buffer compensation; assuming a speed of 1." , Bass . LastError ) ;
113
- speed = 1 ;
114
- }
115
-
116
- seconds -= ( Bass . PlaybackBufferLength / 1000.0f ) * speed ;
112
+ seconds -= ( Bass . PlaybackBufferLength / 1000.0f ) * _speed ;
117
113
// Gotta do this because ChannelBytes2Seconds() may not be less than the buffer at position 0
118
114
if ( seconds < 0 )
119
115
{
0 commit comments