[Feature] Orbiter [Finder) - volume control sensitivity/granularity
In MacOS one can change the volume 1/4 of a click (or square in the GUI) with the key commands option + shift + volume up/down (F11/12). This would be great to be able to do with a Monogram Orbiter or dial.
As it stands when using Monogram's Audio Volume preset in MacOS mode, Orbiter adjusts volume one click at a time. Sensitivity settings don't actually make the control more granular, it just means you have to turn the Orbiter more or less to initiate one click of volume change.
I suspect this would be an easy thing to implement on your end, and would make the Orbiter so much more useful as a volume knob in a finder profile.
A couple of notes:
Mapping option-shift F11 and F12 in Creator doesn't work (with keyboard settings to use F keys as MacOS system keys).
Conceivably one could set keyboard to use F keys as standard function keys and use keyboard mode to set a key command for fn-opt-shift F11/12 in Creator, but Creator won't allow for FN as a modifier key.
Thanks!
-
Official comment
Hey Todd, great request. I've logged this with our team as a feature request but have a pretty effective workaround for you in the meantime:
Long story short, there are two ways of addressing macOS volume. One is by emulating HID media keys. As you've noticed, this produces larger incrementation but is the most reliable method of control—recognition for these HID keycodes are built right into macOS and every major media player.
The other way is by calling a macOS API for volume. There are a small number of cases where this doesn't work, so we rely on the more reliable but slightly less elegant HID keycode method by default. By calling the macOS API, though, we can send nearly any arbitrary value for a volume increase/decrease rather than being restricted to the larger HID increments.
I've put together some module settings that use the macOS API to send much more finely-incremented messages. Please try these steps below to use the custom module settings:
1. Enable Manual Entry
- Go to Creator > Preferences > Advanced
- Locate the preference "Enable debugging of module settings via Manual Entry" and enable it
2. Paste in the custom module settings:
- Select a dial or Orbiter module
- Select "Manual Entry" from the left-hand side
- Delete all existing code
- Copy and paste in one of the below code snippets
- Select "Check and Save" — if you do not receive a confirmation, please double-check for errors in your pasted code. I use a JSON validator for this.
- Select "Done"
Orbiter settings:
{
"info":"Adjusts the System Volume using Operating System API",
"label":"System Volume",
"name":"system.volume",
"tiltSensitivity":2,
"tiltY":{
"input":"system.volume",
"step":0.5
},
"turn":{
"input":"system.volume",
"step":0.25
},
"turnSensitivity":9
}Dial settings:
{
"info":"Adjusts the System Volume using Operating System API",
"label":"System Volume",
"name":"system.volume",
"press":{
"input":"audio_mute"
},
"turn":{
"input":"system.volume",
"step":0.25
},
"turnSensitivity":9
}Known issues:
As noted above, you may run into the odd case where this doesn't work as expected. The only two issues I've noticed consistently are:
1. It may not work with certain virtual audio outputs like iShowU Audio Capture (used to loop back system audio to a stream output)
2. It doesn't display the volume change graphic.
Both are likely inherent limitations of the macOS API being used.
Comment actions -
thanks for this andy-- very cool solution, and glad to hear that this will one day be a feature built into creator (with sensitivity slider to determine increase/decrease value amount, hopefully!).
in the meantime i used better touch tool (which for me has been a great companion to Monogram CC for mapping complex custom system and mouse actions to key commands that can then be mapped to the console) to map the key commands for +/- .25 volume change (shift-option-fn-f11 / f12) and it works well, and as a bonus, includes the volume change graphic.
-
Hey Todd, I was able to get the HID implementation working, at least on my MacBook Pro w/touchbar, running Big Sur. Haven't verified it on other systems.
The code below is for a dial module, but if you remove the press assignment it'll work equally well on an Orbiter, at least for the outer ring. Maybe this will help too?
Either way, BetterTouchTool is a great suggestion... glad it worked for you!
{
"label":"Audio Volume",
"leftTurn":{
"key":"f11",
"localCharacter":"f11",
"modifiers":[
"alt",
"shift"
],
"virtual":false
},
"press":{
"input":"audio_mute"
},
"rightTurn":{
"key":"f12",
"localCharacter":"f12",
"modifiers":[
"alt",
"shift"
],
"virtual":false
},
"sensitivity":8
} -
I suspected there was a gotcha there!
Okay so in summary it looks like we have a few valid workarounds (thanks again for the BTT one; I didn't even think of it), and I've logged a request internally to add the more precise volume slider control. Thanks again for the feedback on this one.
Please sign in to leave a comment.
Comments
6 comments