Accessibility => Accessibility tools => Topic started by: azslow3 on March 03, 2017, 07:03:44 PM

Title: AZ Accessible OSC for RME audio interfaces (AOSC)
Post by: azslow3 on March 03, 2017, 07:03:44 PM
AZ Accessible OSC

15.04.2019 - re-labeling for TotalMix preset
8.12.2017 - accelerators, also in menu
6.12.2017 - fixes in page switching, I hope working submix, level information (requires Send Peak Level option in TotalMIX)
4.12.2017 - attempt to add submix selection 0.1r1
3.3.2017 - The first beta, 0.1r0

AZ Accessible OSC (AOSC) is an Open Sound Control ( client for Windows operation system.
The interface is implemented using standard widgets and all functions are optimized for computer keyboard only control, making it accessible in terms of MSAA.

Current version is distributed with layout for RME TotalMix which will be loaded automatically. But the layout is defined in XML format and can be modified for other purpose.

The idea to develop this utility comes from Can Kirca (cankirca at We have developed it together using his RME interface.   

Please note license conditions in supplied LICENSE file.

1. Download ZIP file from;sa=downfile&id=52
2. Unpack it into user writable directory. There is no installer, the executable azaosc.exe is the program to run. If you move it, please do not forget to put azaosc.xml layout file into the same place.
3. In TotalMix application menu check OSC preferences. Specify your local host address as well as ports. Check TotalMix documentation for details. Notice these numbers.
4. Enable OSC in TotalMix.
5. Start azaosc.exe.
6. Open OSC configuration from menu or by pressing F3 key. Enter the information noticed at step 3. Note that port numbers should be reversed, TotalMIX listening port should be specified as "send to" port. Check enable option. Press OK button.

The interface consist of the navigation tree and current page with parameters, if it is selected in the navigation tree. The focus is initially in the communication status label.

In the navigation tree each entry is a page. Pages can have controls and sub pages. If current page has controls, you can switch to these controls with tab. You can always return to the navigation tree pressing Ctrl+1.

There are 3 types of control. Check boxes, buttons (currently also check boxes) and faders.

Check boxes ask TotalMix to change some binary parameter, such as Solo, Mute, etc. and indicate current state of that parameter.

Buttons ask TotalMix to execute some action, for example change channel bank. Corresponding check box is always unchecked.

Faders control continuous values. In OSC, all values are between 0 and 1. For example centered Pan has value 0.5 . Real meaning for current value is normally indicated in the label, but during changing you will hear slider position between 0 and 100. So to check real value, shortly move focus to different control so screen reader pronounce updated label. Value can be entered directly. If you first press Enter, you can edit current value. Otherwise you can just type new value. You can also use usual keys for faders, including arrows, page up, page down, home and end.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on March 03, 2017, 09:41:50 PM
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on October 04, 2018, 12:40:19 PM
I have a test version (not uploaded yet) which can work with Behringer mixers (X-Air, X32).

I have checked that I can control mix volume, input gain, channel mute and phantom power (no real values in dB for now, but be-directional).
Also using Debug window it is possible to manually check and change almost everything inside the mixer.

There is no preset yet, since I do not need it myself and I do not know anyone who needs.
Unlike with TotalMix, the number of parameters is huge. For me it is unrealistic to define everything just so it is there...

But when someone want control a subset of parameters,  let me know and I will provide corresponding version + preset.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 15, 2019, 02:18:50 PM
RME audio interfaces
All RME audio interfaces are full scale digital mixers. Even in case someone is going to use one of this device just as a DAW audio interface, I strongly recommend to understand what device can do. That is not only essential  for controlling it without frustration. The device has solutions for many common problems, especially in Windows OS. In particular it can route your screen read output where and how you want, in parallel with skype, podcasts, etc.

RME user manual describes complete functionality of particular device, with all corresponding settings of TotalMIX application. The following has no chance to replace it. I have decided to write just a brief introduction to introduce terms used in AOSC.

Audio channels.
Simple audio interfaces have 2 channel types. There are hardware inputs and hardware outputs, both  are visible in software and inputs and outputs. In case of ASIO driver model, audio streams are bit to bit the same. So what comes from a hardware input is received by a DAW, what the DAW output is sent to the hardware output. Most interfaces have yet another option call direct monitoring. When used, a part of hardware input signal is sent to the hardware output, bypassing the DAW.

RME interfaces can be configured the same way. In fact that is the factory default configuration. But it can be changed using TotalMix and AOSC. There are more then 2 channel types:

Channel types in TotalMix. While logically there are 5 channel types, RME interface expose 3 combined channel types. It is important to understand that different controls inside one interface type steer parameters of different logical channel types:
In RME OSC design there is just one page with controls for any channel. And so in AOSC. That means all channel types have all possible controls, even in case they make no sense. For example the gain for a hardware output. Corresponding controls will simply not work. Most confusing is looback. It exists for intput channel, influence input channel but should be set in output channel.

Loopback and routing.
That is a bit tricky, so I want explain that in more details. In any particular submix corresponding software input is always the hardware input. For example input 1 always mixed as hardware input 1 into submix 1, independent from submix 1 loopback mode. Logically, if we mix an output into itself we will create a direct audio loop. That is always useless and bad.
But once a submix in loopback mode, corresponding software input for all other perpose is coming from submix, not from the hardware input. So in the last example, in case a DAW will record input 1, it will get submix 1 there instead of hardware input 1. Also do not forget that loopback should be set in the output/submix channel configuration, not in the input channel.

RME by default gives the same name for all channel types of one strip. Already a bit confusing for a sighted user, that can be a brick wall for accessible steering. In the TotalMix menu there is layout setting, where meaningful names can be given for each channel type separately. For example let say you use Mics on first 2 analog inputs, your DAW output is using the first 2 playback channels and your primary monitors are connected to the first 2 analog outputs.  By default inputs, playbacks and outputs will be named as AN1/2. So when you change the volume parameter for AN1/2 without renaming, you should keep in the head currently selected channel type to know what are you really controlling, direct monitoring, DAW output or hardware output. 
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 15, 2019, 03:04:12 PM
Mono and stereo channels
All channels in RME interfaces are mono. But 2 sequential channels can be combined into one stereo. That can be done in the channel configuration in AOSC using "Stereo" option.
Once set, the interface will count both channels as one and corresponding parameters, for example pan, will work as expected.

Note that stereo combining works separately for 3 major channel types. So you can set inputs 1 and 2 to be mono, combine playbacks 1 and 2 into stereo and set submixes 1 and 2 as mono. The later can be desired in case the interface has limited number of channels, for example Babaface Pro, and you need very sophisticated routing.

Routing examples
I want demonstrate several real life cases when flexible RME routing options can help.

Just a DAW with a screen reader on the same channels:
* No loopback, so all software inputs are corresponding hardware inputs.
* all submixes have just one corresponding playback at unity, may be with some input.  That mimics a simple audio interface without or with direct monitoring.
* the DAW and the screen reader output to the same software outputs, RME driver supports that independent from the driver models in use.

A DAW with a screen reader on different channels.
* the screen reader/windows sounds set to output to unused channels, for example ADAT3/4.
* ADAT3/4 playback is used to mix the screen reader into required submixes
In comparison to the first example, that allows to route the screen reader differently. For example, mix it with the DAW output into headphones submix but not into monitor submix.

DAW output to skype, with mic and with or without screen reader.
* DAW output is sent to ADAT3/4, screen reader to ADAT 5/6, skype output to monitors/headphones directly
* ADAT3/4 output set too looback, playbacks ADATA3/4 and ADAT5/6 are mixed into it, together with Mic. Also windows/screen reader playback, if desired.
* skype  input is set to ADAT3/4 software input, which is submix
* DAW input mic from its original analog input

DAW, skype, mic, screen capture, screen reader, headphone mix separated from the monitor mix.
* DAW output to ADAT 3/4, skype to ADAT 5/6, screen reader to ADAT7/8
* ADAT 3/4 and ADAT5/6 are set to looback, preparing mixes for the screen capture and skype
That configuration is most flexible, so mic, skype, screen reader and the DAW can be arbitrary mixed to compose monitors and headphones outputs together with  skype and screen capture inputs.

Note that described configurations are possible even with Babyface Pro and require no extra cables or software, introduce no signal degradation, work with lowest possible latency including direct mic and/or instruments monitoring with FX and proved to work stable.


Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 15, 2019, 05:19:39 PM
Using AOSC
Enable OSC in the TotalMix and AOSC configurations. Check that port numbers match. IP address should be set to in both programs, as long as you start AOSC on the same computer where TotalMix is running. In case you want audition peak level, set corresponding option in the TotalMix OSC settings.

Precaution. TotalMix and AOSC are not programs which you can use intuitively without knowledge about RME interface. Please read RME documentation or at least my introduction.

As full scale digital mixers, RME interfaces have thousands of parameters and it is easy unintentionally modify something. TotalMix support saving configurations into files, I recommend to use that feature so you can always revert to working preset when in trouble.

For all operations in AOSC it is essential to know currently set channel type and currently set submix. Submix is reported at several relevant places. Current channel type is not obvious, please use custom names for different channels and types, setting that in the Totalmix layout. Otherwise no matter how long you use AOSC, at some moment you will enable direct monitoring instead of changing output volume. I repeat, by default all channel types have the same names and parameters. But these parameter control completely different things.

Channel type.
When working with channel parameters, current channel type determines which channels you can control. That setting is global for the Mixer and Selected channel trees. You can check and change current type using buttons on the top pages of both trees. You also can use Shift+I,O,P shortcuts to switch channel type. Note that there is no audition for shortcuts, till currently selected element text depends from the setting. For example, if you was controlling outputs and switch to inputs and you are on the channel name in the tree, the name will only change in case you have set custom name for each channel type as I have suggested before. In case you are on not named by channel name element, for example  Volume slider in the channel page, you will not get any audition after the type change.

Except Channel input page, almost all parameters are current submix specific. Submix is a part of several elements in the tree, to remind you what you are changing.
Switching submix is a bit complicated. First select outputs, then visit Mixer/Submix select or solo page. Here you can select desired submix by checking corresponding channel.
RME has combined solo and submix selection controls in OSC. Solo make no sense for outputs since each output is strictly bound to one particular submix, so that submix is always in solo for the output. Inputs and playbacks are not submixes, but logically can be soloed within current submix.

Switching banks.
If you have Babyface you probably will never need to change channel banks, but for other interfaces you need to use bank switching to select the range of channels you need.
Use buttons in the top page of both trees or Ctrl+Shift+N,P shortcuts.

Switching channels.
In the current channel tree, you can use Ctrl+N,P to switch the channel you want to control. It is simpler to do this when on an element with current channel name, to get immediate audition which channel you have selected. Please note that final selected channel depends from the channel type and in most cases current submix. You can not for example switch from an input to playback for phone submix just using the channel switch.

Volume, mute, solo, pan and phase are submix specific. Please note they are controlling submix only, till you are using loopback submixes. The volume does not influence recording level in the DAW. The DAW and other software records pre-fader. Other way of thinking about that: input volume controls direct monitoring level, playback volume controls application volume, output volume controls hardware output volume.
Input gain, phantom power and pad exist for hardware input channels only and global. You can not set different gains for one channel in different submixes, each channel physically has only one pre-amp.
Loopback works for output channels only and feed that output submix as input for all other submixes and software.
There are many other parameter, what they are doing you can find in RME documentation.

Please note that not all RME devices have equal functionality. AOSC was designed for UFX, so it includes all available for it parameters. Many settings have no meaning for UC(X), Babyface and other smaller interfaces.
Title: Re: AZ Accessible OSC (AOSC)
Post by: Luke on March 30, 2020, 10:37:30 PM
Hi. Is it possible to save and load mixes via AZOSC? This feature is available in TotalMix but wasn't sure if equivalent functionality was provided in AZOSC. Any help is much appreciated. Thanks!
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 03, 2020, 12:06:56 AM
Saving snapshots is not exposed to OSC, so AOSC can not control that TotalMix feature. But TotalMix Workspace loading and saving is exposed it its own File menu and so that is accessible. For fast switching, you can use Workspace Quick Select shortcut. That is also normal dialog and so accessible.
Title: Re: AZ Accessible OSC (AOSC)
Post by: Luke on December 30, 2020, 05:16:39 AM
I have an RME Fireface 802. This device provides different input settings for its analog inputs and outputs. For example, line inputs can be set to -10dbu or +4dbu and outputs have a "low gain" option. When examining settings in AZ OSC for a particular channel strip, I don't find this setting. I see options for phantom power, instrument or pad but these don't apply to line inputs and have no effect when I activate them. Is there a way to change from -10dbu to +4dbu on line inputs that support it?
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on December 30, 2020, 10:11:01 AM
AOSC mimics TouchOSC application, so what is not there can't be controller. I don't have 802 so I can't test how well original app works with it. And before I could check how all works with my own Babyface Pro, I have misinterpreted many points.
I propose you ask someone with 802 how parameters is question are controlled by TouchOSC.

RME has switched to proprietary remote protocol instead of OSC, so if something is not available it is unlikely they update OSC part. Especially for older devices only.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on April 26, 2021, 09:37:03 AM
Hello, I am curious about behringer xair overlay, since I need to start using one of these boards.  I know it's probably got some work to still be done, but with the demands of me no longer needing a full physical board, I need to do something, and this is the closest I can get.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 26, 2021, 03:06:47 PM
Hello. You can be surprised, but no one has shown any interest to cooperate implementing something usable for Behringer. In the mean time XAir is no longer on my table.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on April 26, 2021, 04:25:45 PM
well damn...  But there are other options that use Web UI, such as Soundcraft UI and  Allen & Heath QU.  Problem is, although they are HTML5 based web clients, screen readers don't see them very well.    They run a demo version of the software which you can apparently operate without the use of the hardware, but when using a screen reader, I just see a few pieces of text.  Maybe it's something we could work on.  YOu can see the UI here:

Problem is I can only see some things with OCR.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 26, 2021, 09:04:51 PM
I just checked, Soundcraft in fact is controlled by special text based protocol. Web UI is drawing things and use this protocol for communication, from how it looks I doubt it can be screen readers friendly. The protocol is not phallically documented, people which have the mixer can ask the browser to show what is sent and received and so kind of reverse-engineer it.

A&H QU documented MIDI protocol covers all options, I have used that documentation to create simple AZ Controller preset for it. What Web app is using I have not checked yet.

Behringer has community documented OSC with full coverage.

So working accessible solution for any of them is possible to write, but that should be written from scratch accessible program which support required features. And that is the problem. All these mixers have huge amount of features. So implementing all of them is a huge job, implementing basic features is manageable job. In all cases, writing such program without direct access to the device is not an option.

So, from practical perspective, if you get Behringer I can borrow XAir12 again for a while to make some rudimentary template for AOSC. I am definitively not ready to implement every single feature. But I am pretty sure you will never use most of its features, at least not on regular basis. And in case for one or another reason you will need to set something unusual, it is possible send text commands manually.

With other devices I can't help at all, I do not have and can't get any of them. With Soundcraft someone probably has published the list of commands, which you can type within browser. For A&H I have no ideas.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on April 26, 2021, 09:23:30 PM
I plan on getting Xair18 in next couple months for band.  We need something more reliable that can be controlled remotely. 

Features I would really need are:

Input controls, Gain, eq, pan, fader, aux sends, Aux Pre/post, MSR, master send, group send, FX, and recording.  if I can control via laptop while others can control via phone/tablet, that'd be useful. 
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 26, 2021, 09:29:46 PM
That is manageable.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 26, 2021, 10:32:37 PM
BTW Do you still have X-Touch Compact? Just an idea... if I let AZ Controller work with Behringer instead of Sonar, then Compact can be able control Behringer as Cakewalk. Again, basic staff only, but that is also manageable.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on April 26, 2021, 10:57:17 PM
I do not have xtouch compact right now, but if that's something we can look into, I can always get another one.  Pandemic has not been too kind to me.  I lost my TD-50 drum kit as well, but picking back up now.    Sounds like what all I really want is a baisc mixer and not al the overelaborate stuff.  just a way to know where my peaks are and stuff and make adjustments and eq and fx settings and routing as mentioned with aux sends.  If we can get xtouch compact to work as well, that would definitly be great.  I can always get one and hold it for 30 days  and see how it will work.  but it will have to come after I can verify that what we're doing is going to work.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 28, 2021, 08:58:05 AM
Ok, I will keep that in mind. Preparing AZ Controller for the task does not need any equipment.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on April 28, 2021, 12:04:11 PM
Is it possible with xair to save templates?  I thought it was.  So once a band's mix is set, it's easy to recall it.  Example, we get a good mix at a venue, and we play there regularly.  I can save that mix as a template, and recall it when we play there., so any adjustments will be monior.
Title: Re: AZ Accessible OSC (AOSC)
Post by: azslow3 on April 29, 2021, 04:00:31 PM
Behringer app support complete save and recall. How to make that operation accessible I don't know yet.
Title: Re: AZ Accessible OSC (AOSC)
Post by: gadeuvall2000 on November 28, 2021, 08:29:38 PM
I have X Air 18 now.  I sent email regarding use of item.  It took longer than anticipated to procure device, but I am trying to figure out how to even use string commands for now to at least mess with the hardware.  Also, I was wondering if it's possible to create web based client possibly that allows for string commands within web page to activate as  functions.  If so, I'd try learning how I can  design something in such a manner.