Skip to content

Commit 3785e28

Browse files
committed
Fix inverted ChatMix level for SteelSeries Arctis 7/Pro (#475)
The chatmix level calculation had game and chat directions swapped: max game volume produced level > 64 (indicating chat), and vice versa. This bug originated in the old C implementation (steelseries_arctis_7.c) and was carried over verbatim during the C++ rewrite (#443). It went unnoticed because the old code returned a plain int with no defined semantics for direction, users just saw a changing number. The bug became observable once ChatmixResult defined < 64 as game and > 64 as chat.
1 parent b627b4b commit 3785e28

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

lib/devices/steelseries_arctis_7.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,15 @@ class SteelSeriesArctis7 : public protocols::SteelSeriesLegacyDevice<SteelSeries
155155

156156
// The two values are between 255 and 191
157157
// Convert to 0-128 range with 64 being center
158+
// game==0 means game at max → level < 64 (game favored)
159+
// chat==0 means chat at max → level > 64 (chat favored)
158160
int level;
159161
if (game == 0 && chat == 0) {
160162
level = 64;
161163
} else if (game == 0) {
162-
level = 64 + 255 - chat;
164+
level = 64 - (255 - chat);
163165
} else {
164-
level = 64 + (-1) * (255 - game);
166+
level = 64 + (255 - game);
165167
}
166168

167169
// Calculate percentages (game/chat are 191-255, neutral at 255)

0 commit comments

Comments
 (0)