How to use ASIO devices
With the 2.6 version of the SDK, you can use ASIO devices as audio sources and renderers. The functionality requires the ASIO plugin license. To test it, please contact our sales team (sales@medialooks.com) for a trial license. The audio devices can't be covered with a video logotype so it is available only if a license is implemented properly.
Once the ASIO plugin license is implemented, you can find the ASIO devices in the external audio sources list. The elements of the external audio list are marked with (ASIO) suffix, and these elements are located after the PC Sound (Loopback). So, for input, you can use the ASIO devices just like a regular external audio source.
For output, the devices are listed in the "audio.renderer_list" property of a preview object. It works as an external sound device for an audio preview. The ASIO devices are listed after the regular (WASAPI) sound devices.
MRenderer/MFRenderer with ASIO external device
With ASIO devices you are able to specify external_audio device for MRenderer/MFRenderer objects, output audio will be duplicated into the specified audio device.
If you want to use this feature specifies the external_audio.enabled=true
MFormats
HKEY_CURRENT_USER\SOFTWARE\Medialooks\MFormats\MFRenderer
external_audio.enabled=true
MPlatform
HKEY_CURRENT_USER\SOFTWARE\Medialooks\MPlatform\MRenderer
external_audio.enabled=true
Specify the ASIO based audio device via IMFProps/IMProps
m_objRenderer.PropsSet("external_audio", "Yamaha Steinberg USB ASIO (ASIO)");
ASIO Audio control via IMProps/IMFProps
If you need to use an ASIO device via different SDK applications or different object instances you have to split your current physical device into logical ones split by audio channels
For example
You want to output two different previews via the same ASIO device, but via different audio channels, split_audio_channels should make a trick
6-channel audio Yamaha Steinberg USB ASIO (ASIO)
//split the ASIO device on 2-channel logical devices
//as a result 6-channels audio device will be splitted to three different 2-channels audio devices
m_objPreview.PropsSet("audio_renderer::split_audio_channels", "2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2");
Split Yamaha Steinberg USB ASIO devices
The same is true for Live objects instance - if you want to use audio from different ASIO audio channels as a Live external audio device you will have to split your ASIO device into logical ones
m_objLive.PropsSet("external_audio::split_audio_channels", "2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2");
Addition information about your ASIO device you can get via
- audio_channel_number - return initial device audio channel count
- audio_samples_per_sec -return information about audio samples
- audio_bits_per_sample - return information about bit per sample
- audio_name_channel - return channel name
//For Preview renderers ASIO device
m_objPreview.PropsGet("audio_renderer::audio_channel_number", out strValue);
m_objPreview.PropsGet("audio_renderer::audio_samples_per_sec", out strValue);
m_objPreview.PropsGet("audio_renderer::audio_bits_per_sample", out strValue);
m_objPreview.PropsGet("audio_renderer::audio_name_channel", out strValue);
//For Live external audio ASIO device
m_objLive.PropsGet("external_audio::audio_channel_number", out strValue);
m_objLive.PropsGet("external_audio::audio_samples_per_sec", out strValue);
m_objLive.PropsGet("external_audio::audio_bits_per_sample", out strValue);
m_objLive.PropsGet("external_audio::audio_name_channel", out strValue);