The Renoise tool formerly called Master Muter is now named Mister Master.

That name might not be long-lived either, but it is what it is for now.

The first version was created as a way to toggle mute on the master track of a Renoise song. It was part of a larger set of tools to aid in song mixing. The basic idea is to be able to quickly swap audio among the Renoise song and various reference songs.

But you know how it is: once you have one feature in place you start seeing how easy it would be to add another. Feeping creaturism.

When mixing it is handy to listen in mono. Managing this should be no harder than toggling mute. Add a stereo enhancer device, set it to L+R mono, and toggle the active state as needed.

However, this turned out to be trickier than working with a gainer device.

Accessing hidden properties

The general approach has been to use insert_device_at to add a device by name, then manipulate its values using the properties table.

This worked fine for the gainer; all the properties of interest were accessible. However, the stereo expander was not so agreeable. It’s possible to set “Expand” and “Surround” to zero, but there was no available property to set “Mono Mix” to “L+R”. This meant a trip to the Renoise forums.

danoise helpfully explained that you can set device properties by passing in some XML.

Presto:

stereo.active_preset_data = "<?xml version='1.0' encoding='UTF-8'?>
<FilterDevicePreset doc_version='9'>
 <DeviceSlot type='StereoExpanderDevice'><IsMaximized>true</IsMaximized>
 <MonoMixMode>L+R</MonoMixMode>
 <StereoWidth><Value>0.0</Value></StereoWidth>
 <SurroundWidth><Value>0.0</Value></SurroundWidth>
 </DeviceSlot>
</FilterDevicePreset>"

That sets all the properties, even ones that can be set using the properties table. Can you get away with just passing the XML for parts you can’t otherwise access?

Kinda sorta.

If you pass in XML defining just some parameters then the device takes on the defaults for all the others.

This …


  stereo.parameters[1].value = 0
  stereo.parameters[2].value = 0
  stereo.active_preset_data = "<?xml version='1.0' encoding='UTF-8'?><FilterDevicePreset doc_version='9'>
   <DeviceSlot type='StereoExpanderDevice'><MonoMixMode>L+R</MonoMixMode></DeviceSlot>
  </FilterDevicePreset>"

… is different from this …


  stereo.active_preset_data = "<?xml version='1.0' encoding='UTF-8'?><FilterDevicePreset doc_version='9'>
   <DeviceSlot type='StereoExpanderDevice'><MonoMixMode>L+R</MonoMixMode>
  </DeviceSlot></FilterDevicePreset>"
  stereo.parameters[1].value = 0
  stereo.parameters[2].value = 0

The second version is what works. The first version ends up resetting those first two properties back to their defaults.

One last detail. This XML is using doc_version='9'. Renoise 3.x would usually use doc_version='10', but this failed in Renoise 2.8.2.

The lower number has worked in both versions of Renoise, but this may just be a coincidence of the specific XML not using certain elements or attributes.