Early Access Release 7 of the Metric Halo 3d software is now available for download

A detailed change log is available at the bottom of this message.

The direct download link for the software is:

3d Early Access - pb7

3d Early Access Quick Start Guide

There is an abbreviated quick start guide linked below to help you get started; it has been updated for pb7:

3d Early Access Quickstart Guide

The component versions in this release are:

Package Version:pb7Updated
MIO Console Version:6.0.0 [4020]Updated
Firmware Version :6.0.89Updated
Driver Version :2.0.68Updated

Release 7 of Metric Halo’s 3d software includes over 70 new features and hundreds of stability and performance enhancements. This document details these new features and enhancements.

Table of Contents

New Features Overview
Native UI rendering
Satellite Computer Port (SCP) Support
Enhanced MADI support
Enhanced External Clock Sync detection and reporting
Mixer UI Enhancements
Monitor Control State Management
Other Monitor Control/Cue Control Enhancements
Record Panel Enhancements
Embedded Firmware and Driver
Software version check and download
Integrated Product Registration
USB Improvements
Simultaneous connection with MHLink and USB
MHLinkDriver Improvements

Detailed Changes
Overall bugfixes and stability improvements
Release highlights list
Detailed Changelog

Polarity Invert

New Features Overview: Native UI rendering

This version of MIOConsole3d introduces support to allow you to choose what rendering engine is used when drawing the UI. Up until now, MIOConsole3d always used OpenGL. While the default remains OpenGL, with this release you have three options you can choose from:

  1. Native
  2. OpenGL
  3. Native with OpenGL Record Panel

Use the MIOConsole3d > Preferences > Appearance > Rendering control to choose the rendering engine you would like to use. You will have to quit and relaunch MIOConsole3d for the change to take effect fully.

The Native rendering engine may use a bit more CPU than OpenGL depending on your OS and machine. It does provide better text rendering than the OpenGL engine; text is heavier and antialiased better with the native engine. It may also provide more compatibility with a wider variety of video cards than the OpenGL engine.

The OpenGL rendering engine is the engine that has been shipping with MIOConsole from the start; it offloads more of the task of drawing the UI to the GPU and offers the lowest CPU load.

The Native with OpenGL Record Panel option provides a hybrid; Native is used for all of the windows except for the Record Panel, which uses OpenGL. Scrolling the waveforms in the Record Panel is the drawing operation that uses the most CPU during drawing and benefits the most from being OpenGL accelerated. This may be the best choice for a wide variety of users.

New Features Overview: Satellite Computer Port (SCP) Support

SCP Routing Selector

MIOConsole3d now supports explicit routing to and from the USB connector on any unit in the MHLink chain. When used in this way the USB ports are referred to as Satellite Computer Ports.

This new feature allows you to integrate audio from multiple devices without having to purchase additional interfaces. It automatically keeps your devices synchronized with your system and provides device to device routing as well as integrated mixing and processing.

You can connect a sampler running on a another computer and directly mix its outputs with the rest of your sources. You route directly between computers/devices or mult signals to multiple computers/devices - so you can set up a computer or an iPad as an effects rack or backup recorder.

Since iOS devices provide native support for UAC2 (USB audio), you can integrate the output of multiple iOS instruments into your MHLink Mixer via the direct digital link, and you can record real-time performances by routing them to your main recording computer.

You can use the SCP functionality to integrate multiple computers (or iOS devices) into your MHLink mixing engine. Each USB port is available for connection with a USB audio host. The SCP USB source and destination categories in the routing selector popups allow you to select explicit USB channels to route to and from.

To use a USB port as an SCP port, simply connect the device to one of the USB ports on one of the units in your MHLink chain. Then on the device, select the USB interface of the connected 3d unit as the audio interface for the device, signal processing software or DAW.

NOTE: As with all things MHLink, there can only be one copy of MIOConsole3d running on all the computers connected to the boxes, and if multiple boxes will be in the MHLink chain, the computer running MIOConsole3d must be connected via MHLink in order to control the multi-box chain. See below for new functionality that enables the simultaneous connection of MHLink and USB on one computer.

New Features Overview: Enhanced MADI support

The previous version of the 3d firmware interoperated with most modern MADI implementations, but had limitations when connected with older devices, or devices that were operating in a mode consistent with the original AES-10 specification.

MADI DIO The version of the firmware included in this release, coupled with the new version of MIOConsole3d fully supports the AES-10 specification and interoperates with all possible configurations of the MADI stream. MIOConsole3d now also allows you to control the configuration of the MADI output streams and also detects the format of the incoming input streams.

There are two different ways that the format can vary, both of which have two valid settings; this means MADI streams can have 4 different valid formats:

When running at higher sample rates (e.g. 2x [88.2/96] or 4x [176.4/192]), the number of channels available on each MADI port is divided by the sample rate multiplier (so for 2x rates, it will be 28/32 channels, and for 4x rates it will be 14/16 channels).

For each output port you can select the output mode from the Digital I/O status for the unit that has the MADI port. You can choose any of the 4 modes listed above.

For each input port, the MADI receiver will automatically detect the format of the incoming stream and decode it. The detected format will be shown in the input lock indicator for the associated port in the Digital I/O status pane.

New Features Overview: Enhanced External Clock Sync detection and reporting

The previous release of MIOConsole3d only reported if the a given digital input was correctly formated and the decoder for that port was able to recover signal; this was indicated as "Locked" and shown as a green indicator for the Input lock for the port in the Digital I/O status pane.


With this version of the software, we have greatly enhanced the capabilities of the lock detection in the hardware and reporting in MIOConsole3d. Now, the hardware detects the following aspects of the signal on each digital input port:

If the signal is either not present or invalid on a given port, the Input Lock indicator will be black, and show the text "Invalid / No Signal". This will be the case if the external device is not connected, turned off, or is sending the wrong type of digital signal to the port.

When the input signal is valid, matches the system sample rate, and is phase-locked to the system clock, the indicator will be green, and show the text "Locked". This will be the case if the external device is locked to the same clock as the 3d system.

When the input signal is valid and matches the system sample rate, but is not phase-locked to the system clock, the indicator will be yellow, and show the text "Wild". This will be the case if the external device is set to the same sample rate as the 3d system, but is not locked to the same clock. In this case the audio may be acceptable, but there will be the periodic sample duplicated or dropped as the relative phase of the two clocks wraps around. This condition is not guaranteed to yield clean audio, and the clocking for the external device should be fixed before using it as a source.

When the input signal is valid and does not match the system sample rate, the indicator will be red, and show the sample rate of the external source. This will occur when the external device is on a different clock and sample rate from the 3d System. This condition will not yield clean audio, and the clocking for the external device should be fixed before trying to use it as a source.

As before, if the physical input port supports multiple formats (e.g. ADAT and TOSLINK), the detected format will also be indicated in the input lock indicator.

New Features Overview: Mixer UI Enhancements

Route availability indication

The Mixer UI now indicates which channels in the system are actually active and available for routing given the currently connected hardware. Since the routing capabilities of the system may exceed the currently connected hardware or driver configuration, it is useful to be able to see at a glance if any of the routes in your mixer are disabled. Disabled routes are drawn using the same color as bypassed plugins.


Along the same lines, sources and destinations that are associated with offline boxes or channel limits in current driver configuration have the "[Offline]" suffix added to them in the source and destination selector windows. This allows you to see at a glance what channels are available for routing with your currently connected HW, without limiting your ability to pre-configure mixers without hardware attached.

Pane Synchronization Improvements

The Mixer UI now properly keeps the state of the split-panes synchronized for all parameters; this includes bus, output, link-group, DCA and mute group assignments. In previous versions of MIOConsole3d, these parameters would only update (immediately) in the pane they were changed in.

Link Group Improvements

The Link Group pane now includes a header with labels to make it clear what the controls indicate:


You can now <option>-click on the link-group assign of a strip to toggle the enable for the link groups that are assigned to that strip; this will be reflected in the Link Group pane as well.

If the link groups assigned to a given strip are all disabled, the link group assign for that strip will be drawn in a bypassed state.

Software Version Pane

The Mixer window now shows the version of MIOConsole3d and the running MHLinkDriver in the top-left corner at the top of the MHLink domains panel. You can use this to immediately see what version of the software is running. The pane will also indicate when newer versions of the software are available (see below for more details).

Layout recall

The Mixer window now properly recalls the pane splits that were set when the .cnsl3d file was saved (both manually and automatically to the system state preferences). This ensures that the window layout is recalled as you left it.

Bus/DCA Direct Delete support

You can now remove arbitrary Buses and DCAs by deleting the master strip associated with the bus or DCA. This allows you to use the same mechanism you use to remove input strips for Buses and DCAs. It also allows you to remove arbitrary buses and DCAs; before you could only remove buses and DCAs from the end of the list via the Configure Mixer dialog.

To Delete a bus or DCA, select the master fader strip for the bus or DCA, and the choose the Mixer > Delete Strips command.

Performance Improvements

We have substantially optimized the drawing process in the Mixer window.

New Features Overview: Monitor Control State Management

The Monitor Controller now supports more ways of saving and recalling its state.

There are now two new commands in the Monitor menu:

You may use these commands to save and restore the configuration of the Monitor Controller for your domain to and from a file. Currently, there is no remapping available for these files, so they will only work properly with the domain that they were created with. When we have the remapping feature completed, it will extend to the monitor controller files as well.

We have also added support to allow you to optionally restore the monitor controller configuration from the state stored within the .cnsl3d file. Previous versions of MIOConsole3d did not save the monitor controller configuration in the .cnsl3d file, so this will only work with files saved with pb7 or newer.

This is implemented as a preference: Interaction > Load Monitor Controller. You can choose to load from the .cnsl3d file (when you load a file), or from the global saved state (which is the old behavior). Loading from the global saved state will maintain your Monitor Configuration between files. Loading from the .cnsl3d file will allow you to have a tailored MC configuration per .cnsl3d file.

We have also added a new preference to allow you to control whether or not the MC gain is asserted to the hardware when the MC state is loaded. With the previous version of MIOConsole3d, the current MC gain was always loaded from the attached hardware (if the hardware was attached). This has the effect of not causing an unexpected jump in gain. That said, for some usage models it is appropriate to restore the monitor gain with the rest of the MC configuration. This new preference (Interaction > Monitor Controller) allows you to control this behavior.

New Features Overview: Other Monitor Control/Cue Control Enhancements

The Monitor Controller now validates Mix buses before attempting to access them; this fixes a crash that can occur when the saved MC state does not match the current mixer configuration. It now also properly manages the state of the Solo bus when the solo mode is set to Solo-in-place.

In certain situations the MC was affected by the Talkback Enable state; this should never happen and has been fixed.

The Enable Talkback and Enable Listenback commands are now available as menu commands in the Monitor Menu.

The Enable Talkback command is now only available if there is a Talkback source assigned. If the talkback source is unassigned, the Talkback will automatically be disabled.

The state of Enable Talkback and Enable Listenback are no longer restored from a saved .cnsl3d file, as this is not what you want and can lead to confusion.

New Features Overview: Record Panel Enhancements

We have made significant enhancements to the Record Panel engine and UI.

The Record Panel overview and streaming engine has received significant optimization and is capable of recording all 128 channels @ 192k, including to mirrors if the drives are fast enough, all at very low CPU load.

The Record Panel engine now utilizes the entire pre-roll buffer for buffering of audio when writes to the disk(s) take longer than expected. This allows for a substantial amount of buffering to occur while the system waits for the disk to catch up. The earlier version of the record panel could intermittently lose samples on some tracks when the disk was temporarily too slow to handle the write stream. This no longer happens.

Under certain circumstances the RP Engine could allocate memory in the audio callback which could cause intermittent CoreAudio overloads. This issue has been resolved.

The Rendering engine for the overviews in the Record Panel has also been heavily optimized and can now draw scrolling waveforms with low CPU overhead.

The Record Panel now has new Menu and Key commands to adjust the zoom factor of the overviews:

You can now choose to hide tracks that are routed to the computer, but not record enabled. To do this, check the Show only Record Enabled tracks in the Hamburger Menu in the Record Panel.

The trigger mode settings in the Hamburger menu and in the RP UI are now synchronized; before if you changed the setting with the menu, it was not propagated to the UI.

The Record Panel now has UI to show the Current Take number and the Next Take number. You can control the visibility of this UI element with the Show Take item in the Hamburger Menu in the Record Panel.

The Current Take is the take number for the take that is currently recording or has just ended. The Next Take is the take number that will be used when the next take starts. You can edit that take number by clicking on it; it will turn into an edit box and you can enter the new take number you would like to use.

Time Display section now has labels for all of the different time information that is displayed in the UI. The time displays now use cached glyphs for the digits in the display; this decreases the CPU load required to update the displays and also removes the annoying character width jitter that sometimes occurred as the displays were updated.

The Timecode section of the Time Display now shows the decoded timecode format as well as the actual timecode value. This will show the frame rate as well as the NDF/DF status.

The Take field of the Recording preferences has been repurposed as the Take Name field. You can cause it to be inserted in the generated file or folder names by using the $takename$ token.


The various numeric tokens used for filename and folder name generation can now have an optional field width specified. The tokens that this applies to are:

For each of these tokens, you can add a .{number} after the token name, but before the closing $. So, for example you could use $take.4$ to indicate the take; that would cause the take number to always have 4 digits (e.g. 0001, 0002, ...). Without the optional field width the number will not have any leading zeros.

You can now specify an Auto-break file length. The options are: Never, 1GB, 2GB, 3GB and 4GB. While the files that the RP writes are not actually length limited, some older DAW and audio products do not properly support files that are > 2GB or > 4GB. So if you want the maximum compatibility or know that you will be targeting a DAW that doesn't support large files, you can set the autobreak to ensure that the files created by the Record Panel never exceed the specified length.

When the RP auto-breaks, it will trigger on the longest file in the take (e.g. stereo files grow faster than mono files), but it will break all the files in the take at the same instant.

You can control the overlap behavior of successive takes when an auto-break occurs with the Auto-break Overlap preference. This can be set to: Gapless or Pre-roll. When it is set to Gapless, the first sample of the new take will be the next sample that follows the last sample of the take that was broken. This allows you to butt the files up with no fades for continuous playback.

BWF files will be timestamped with either the selected LTC timecode or the TOD; the TC is guaranteed to be seamless across the breaks, so you can spot the files to their record times and there will be no gaps.

When Auto-break Overlap is set to Pre-roll, the RP will use your current Pre-roll time to overlap the new take with the take that was broken. The broken take ends at the point of the break, and the new take will start the specified pre-roll time before the break.

We have also added a new preference Manual Break Overlap that allows you to specify how much overlap there should be between a manually broken take (e.g. one where you hit the Record button while you are already in record) and the new take. As with the Auto-break Overlap, the broken take ends when you hit the Record button, and the new take starts the specified time before the previous take ends. If this is set to Gapless, then the break will be seamless.

New Features Overview: Embedded Firmware and Driver

MIOConsole3d now has the up-to-date versions of the 3d Firmware and the MHLinkDriver embedded within the application package. As a result, these are no longer included as separate files in the download.

With this change, MIOConsole3d knows the versions of the embedded components and can determine if they represent an update to the driver and/or firmware that is currently installed on your system.

For the Firmware, the version is checked per unit, and when MIOConsole3d determines that the firmware on a given unit should be updated, it will draw the firmware version for that unit in the MHLink Domain panel in an amber/orange color. This allows you to tell, at a glance if there are updates available for your boxes.


If the firmware version number indicates that an update is available, you can click on it, and that will initiate the firmware update process (after displaying a confirmation dialog that tells you which version the firmware will be updated to). Remember, you must power cycle or reboot your boxes for the newly installed firmware to be used.


For the MHLink Driver, MIOConsole3d will check the version against the version of the driver that is currently running on your system. If there is no driver installed, or if it is older than the one included with MIOConsole3d, the Driver version number in the version header displayed in the top-left corner of the Mixer window will be drawn in amber/orange.


As with the firmware, clicking on the Driver version number will initiate the installation process for the new driver (after displaying a confirmation dialog).


New Features Overview: Software version check and download

MIOConsoled3d can now check to see if a new version is available for download. If a newer version of the software is available, the MIOConsole version number displayed in the upper left hand corner of the Mixer window will be drawn in an amber/orange color. This allows you to tell, at a glance if there is a software update available.


If the MIOConsole version number indicates that an update is available, you can click on it, and that will initiate a download of the software update using your default web browser (after displaying a confirmation dialog that tells you which version will be downloaded). After the download is complete, you can replace the old version of the software with the newly downloaded version at your convenience.


New Features Overview: Integrated Product Registration

MIOConsole3d now checks to see if your connected boxes are registered with Metric Halo, and lets you know if there are an un-registered boxes. Even if you registered your boxes before upgrading them to 3d, the Console will indicate that they should be registered again, as the serial number for your unit(s) changed.


You can register your hardware directly from MIOConsole3d, either by clicking on the "Yes" button in the notification alert or by selecting the MIOConsoled3d > Register Attached Units… menu command.

While you can defer registration and even disable notification, we strongly recommend that you register your hardware with us as it greatly helps in the support and development process and allows us to serve you better in the future.


All the information you provide as part of your registration is kept private by Metric Halo and is not shared with or sold to third-parties.

New Features Overview: USB Improvements

We have reworked important elements of the USB implementation in the firmware in order to provide more stability and more functionality.

The UAC device now can reliably transport audio and MIOConsole meter and control data at sample rates higher than 48k. With the previous version, running MIOConsole3d at the same time as running audio transport at sample rates > 48k would lead to clicks, dropouts and grunge. This no longer happens.

If the USB audio device was streaming and the sample rate was changed via a method other than through the CoreAudio device, that could cause the USB device to stop communicating and would require a reboot. This has been fixed.

Due to a configuration issue, if the 3d device changed sample rate that change was not reported to the USB host and as a result audio would play off-rate or would be distorted. This has been fixed.

We have added the ability to configure (persistently) the number of input and output channels that are reported to the USB host. This allows you to trade off USB channel count for sample rate capabilities. You can set the channel count up to 48 channels, in steps of 4 channels. The S/R break points are as follows:

To change the available channel count over USB, <right>- or <control> click on the unit's pane in the MHLink Domain panel to popup the unit menu:


Selecting Set Number of Channels for USB… will show the USB Channel Configuration box:


You can choose the I/O config for the input and output independently. The side with the highest channel count will determine the S/R limit. When you set this configuration, the setting is stored in the box persistently, and will be recalled the way you have it set on each boot, without having to re-set it from MIOConsole3d.

If you do not need to use higher sample rates, this is will give you the capability to stream more channels to and from the box over USB.

New Features Overview: Simultaneous connection with MHLink and USB

Earlier versions of MIOConsole3d would get confused if you connected both MHLink and USB to the same computer. This version handles this configuration much better out of the box, but certain actions on your part will still cause the console to become confused (specifically, rebooting a unit that is connected both ways when MIOConsole3d is running; this occurs because the USB connection comes up before the MHLink connection, but the MHLink connection is preferred).

If you intend to regularly use your box with both connections in place, you can tell MIOConsole3d to ignore the USB connection. That will allow you to control a multi- (or single) box MHLink domain, even though the USB connection is present. Combined with SCP, you are still able to fully route the USB connection via MIOConsole3d, and combined with the USB Channel count configuration, you can route substantially higher channel counts over USB if you are running at lower sample rates.

In order to have MIOConsole3d to ignore the USB connection you can set the

MIOConsole3d > Preferences > Discovery > MIOConsole3d Ignores USB

preference to Always. If you do choose this setting, MIOConsole will only see 3d units over MHLink; it will not connect if only the USB connection is in place.


Configuring MIO Console in this way allows you to have a multi-box domain connected (potentially with other computers connected to the downstream unit SCP/USB ports) and still use USB for audio transport on your more latency sensitive I/O. It also enables the use of the MIDI port(s) on the directly attached unit as these are exposed over USB (but not yet exposed over MHLink).

New Features Overview: MHLinkDriver Improvements

We were able to substantially optimize the MHLinkDriver which decreases the CPU required by both the driver and the coreaudiod, especially at large channel counts and high sample rates.

We also tuned the CoreAudio watchdog process to give hosts more time to get samples to the driver; this solves a set of drop out issues that could occur when a host was late in providing samples in the buffer period.

We have also identified and eliminated an issue that could, intermittently, lead to kernel panics, especially when connecting or disconnecting a box.

We have also identified and eliminated an issue that, especially when Apple's Power Nap was active (which appears to be the case even when it is disabled), could lead to a box partially mounting over Ethernet and the associated interaction causing the box to crash, necessitating a reboot of the box. This same issue could intermittently cause boxes to not mount in MIOConsole on first attach/power up.

We have also added support for Jumbo Ethernet packet support to the MHLinkDriver.

The standard maximum packet size on Ethernet is 1500 bytes. This limits the number of sample frames we can place in a given MHLink packet and causes the packet rate between the computer and the box to be quite high.

While the MHLink hardware is not affected by the packet rate (as all the packet processing is done in dedicated hardware), the high packet rate does cause the low level Ethernet NIC driver in the computer to do a lot of work, and it uses a lot of CPU as a result.

By utilizing Jumbo packets (e.g. packets larger than 1500 bytes), we can decrease the rate that packets are sent to and from the computer and substantially reduce the overhead that is generated by the low-level Ethernet driver.

This version of the MHLinkDriver will automatically utilize packets up to the maximum specified (the Maximum Transfer Unit or MTU) for the underlying NIC driver. Since every device on an Ethernet network needs to agree on the MTU, this is only useful if you will dedicate an Ethernet port to MHLink, or if you are already running a network with a larger than normal MTU.

In order to use this feature, you need to manually configure the MTU for the Ethernet interface that you use for MHLink:

  1. Install the new driver and reboot
  2. In the network control panel, for the ethernet port that you are using with the MIO, you need to increase the MTU:
  3. This shows the Advanced sheet:
  4. Click OK
  5. Apply

This is an optional optimization you can choose to do with a dedicated Ethernet connection for MHLink. It is not required.

Overall bugfixes and stability improvements

This release of the software includes hundreds of bug fixes and stability improvements big and small. Many of the fixes have been detailed in the notes above. Other items to be aware of are:

The highlights of this release are:

[Detailed Changelog]

Changes Since beta_3d/pb6: (601 commits)

Driver Changes since 2.0.46 (316 commits)

Firmware Changes since 6.0.73 (316 commits)