Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Volume Limiter Support #353

Closed
duckman opened this issue Jun 3, 2024 · 5 comments · Fixed by #356
Closed

Add Volume Limiter Support #353

duckman opened this issue Jun 3, 2024 · 5 comments · Fixed by #356

Comments

@duckman
Copy link

duckman commented Jun 3, 2024

Description

Would love to be able to disable the volume limiter on the SteelSeries Arctis Nova 7. Looks like there is a function in the device file but I don't see a way to execute it.

Headset Name

SteelSeries Arctis Nova 7

@Sapd
Copy link
Owner

Sapd commented Jun 9, 2024

Looks like there is a function in the device file but I don't see a way to execute it.

Yeah the guy implementing it found it probably during his WireShark Session but didn't implement it as headsetcontrol currently has no command for that.

You can feel free to add one (not really complicated, you can just copy the code for send_microphone_volume):

  • Add here a new funtion, similar to send_microphone_volume:
    int (*send_microphone_volume)(hid_device* hid_device, uint8_t num);
  • In the Arctis 7 file, reference the function you saw here:
    device_arctis.send_sidetone = &arctis_7_send_sidetone;
  • Also in device.h add a capbability just calling it CAP_VOLUME_LIMITER :
    CAP_MICROPHONE_VOLUME,
  • Now you just need to implement the parameter in main.c:
    • Add an option here { "volume-limiter", required_argument, NULL, 0 },
      { "microphone-volume", required_argument, NULL, 0 },
    • Handle that option here, simply copy the microphone volume code and rename things (and create a variable on top):

      HeadsetControl/src/main.c

      Lines 706 to 712 in f64ac48

      } else if (strcmp(opts[option_index].name, "microphone-volume") == 0) {
      microphone_volume = strtol(optarg, &endptr, 10);
      if (*endptr != '\0' || endptr == optarg || microphone_volume < 0 || microphone_volume > 128) {
      fprintf(stderr, "Usage: %s --microphone-volume 0-128\n", argv[0]);
      return 1;
      }
    • Also here:
      { CAP_MICROPHONE_VOLUME, CAPABILITYTYPE_ACTION, &microphone_volume, microphone_volume != -1, {} },
    • Then call your new function in handle feature:
      case CAP_MICROPHONE_VOLUME:

Feel free if you struggle somewhere

@nicola02nb
Copy link
Contributor

I created a pull request for some missing features of the Steelseries Artic Nova 7:

  • microphone mute led brightness
  • microphone volume
  • volume limiter

@nicola02nb
Copy link
Contributor

nicola02nb commented Jun 10, 2024

@duckman all the feature for your headphones will be included with my pull request

@duckman
Copy link
Author

duckman commented Jun 10, 2024

You sir are a gentleman and a scholar. I'll try it out tonight.

@nicola02nb
Copy link
Contributor

If you want to checck out also my GUI you're welcome.

@Sapd Sapd linked a pull request Jun 11, 2024 that will close this issue
2 tasks
@Sapd Sapd closed this as completed Jun 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants