Accessibility > Accessibility tools

AZ Accessible OSC for RME audio interfaces (AOSC)

(1/5) > >>

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.


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.

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:

* hardware input. That is where a cable can be connected. Options fro hardware inputs, for example input gain, are gobal and influence all streams where the input is used.
* software input. That is what a DAW, Skype or other programs see as an input. It can be corresponding hardware input or corresponding submix output. In both cases corresponding means from the same strip. So, software input 3 is hardware input 3 or submix 3. It can not be hardware input 5 or submix 1. I will explain submixes in a moment and give real world examples later.

* software output. So when you select particular output in a DAW, screen reader or other program. In RME that is called playback channel. Note that for RME these are input channels. Yes, for the software they are output channels, but from a mixer perspective they are inputs. Also note they are completely separated from any other channel types and not bounded to strips, software output 10 can separately be routed to any submix, f.e. it can be at unity in submix 10, -20dB in submix 1 and muted for all other.
* submix. At least RME call it so. More conventional will be a bus. All software inputs (potentially including other submixes outputs, that is why they are called submixes) and all playbacks are always mixed to any submix, so submix 4 can be a mix for hardware inputs 1 to 4, software outputs 8 and FX strip. Each submix is completely independent from other, if you let say add direct monitoring from input 1 to submix 4 that does not change direct submix 2. A submix can be set into loopback mode. In that case it is routed to the corresponding software input
* hardware output. There is where you connect monitors, headphones, etc. Each hardware output carry corresponding submix. So submix 1 is is routed to hardware output 1 and so on
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:

* Inputs. That is a combination of hardware and software input parameters. For example the gain controls the hardware input gain, while volume controls software input volume in currently selected submix.
* Playbacks. Software outputs, expliitly
* Outputs. Submix, hardware output parameters and one software input parameter. For example the volume is for hardware output. Loopback is for software input, when set, this submix is used as software input, the routing in this case is explained in a moment.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. 

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.



[0] Message Index

[#] Next page

Go to full version