Skip to main content
Version: 11.7.0

How to programmatically enable or disable audio tracks on Roku

This article describes how you can use the AudioTrack API, a sub-API of the MediaTrack API, to enable or disable audio tracks. Implementing this functionality is a common use-case for developers who want to build their own UI to toggle audio languages on and off.

Once you have programmatically selected a track, you can set its enabled property (or method) to true or false. Because only one audio track can play at a time, enabling an audio track automatically disables all other audio tracks. Note that this does not apply to text tracks: multiple text tracks can be active at the same time.

Usage

To set a preferred audio track, you can write a subroutine like setAudioLanguage. This subroutine accepts language as a string parameter. It then searches for the specified language in the audio tracks, and enables the track if it has a matching language.

sub setAudioLanguage(language as String)
audioTracks = m.player.audioTracks
for i = audioTracks.count() - 1 to 0 step -1
if audioTracks[i].language = language then
audioTracks[i].enabled = true
else
audioTracks[i].enabled = false
end if
end for
' Assignment of new roAssociativeArray is required, because Roku field values are copies, not references.
' Read more: https://developer.roku.com/en-gb/docs/developer-program/performance-guide/optimization-techniques.md#OptimizationTechniques-DataFlow
m.player.audioTracks = audioTracks
end sub