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 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: | pb7 | Updated |
MIO Console Version: | 6.0.0 [4020] | Updated |
Firmware Version : | 6.0.89 | Updated |
Driver Version : | 2.0.68 | Updated |
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
Detailed Changes
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:
- Native
- OpenGL
- 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
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.
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:
- Channels per Frame
- 56 Channels (Legacy)
- 64 Channels (Long)
- Muxing mode for high sample rates
- SMUX (frames at Base sample rate)
- No Muxing (frames at Native sample rate)
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:
- Signal Presence
- Signal Validity
- Signal Sample Rate
- Frame Edge Phase Offset
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.
- Redundant drawing removed
- Refrain from drawing windows that are fully covered by other windows
- Redundant text drawing removed
- Redundant view layout computation removed
- Notifications deferred and consolidated
- Improved caching
- Improved efficiency of animations
- Minimize update regions with Native Renderer
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:
- Save Domain Monitor Controller…
- Load Domain Monitor Controller…
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:
- Increase Record Panel Track Height - Increases the vertical height of the tracks (makes them bigger)
- Decrease Record Panel Track Height - Decreases the vertical height of the tracks (makes them smaller)
- Fit Tracks Vertically - Adjusts the vertical height of the tracks to make them all fit within the RP window (or sets them to the minimum size if there are too many tracks to fit vertically in the window)
- Zoom Tracks In Horizontally - Increase the horizontal resolution of the overviews
- Zoom Tracks Out Horizontally - Decrease the horizontal resolution of the overviews
- Fit Tracks Horizontally - Adjust the horizontal zoom so that the entire length of the take is visible
- Autoscroll Recordhead into view - Automatically adjust the horizontal scroll while recording so that the waveforms of the currently recording material are visible in the window
- Autozoom Tracks Horizontally - Automatically adjust the horizontal zoom while recording so that the entire length of the take is always visible
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:
- $take$
- $tracknum$
- $filenum$
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:
- 8-12 channels: 44.1k - 192k
- 16-24 channels: 44.1k - 96k
- 28-48 channels: 44.1k - 48k
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:
- Install the new driver and reboot
- In the network control panel, for the ethernet port that you are using with the MIO, you need to increase the MTU:
- select the Network connection that the MIO is attached to
- click the “Advanced” button:
- This shows the Advanced sheet:
- First select the Hardware pane
- Then set the controls as follows:
- Configure: Manually
- Speed: 1000BaseT
- Duplex: full-duplex
- MTU: Jumbo (9000)

- Click OK
- 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:
- Improvements to SPDIF
- Improvements to Lock detection
- Fix of box crashes that could occur on loading plugins
- Fix of issues that could lead to boxes not mounting
- Ensure UI always reflects box state (online vs. offline)
- Ensure user driver I/O configuration is always respected
- Fix of console crashes when inserting graph or loading settings file
- Ensure console state is asserted cleanly with no noise
- Fixes for some plugin implementations
- Fixes for a variety of routing issues
The highlights of this release are:
- Support for Native UI rendering
- Satellite Computer Port support
- Enhanced MADI support
- Enhanced External Clock Sync detection and reporting
- Mixer UI Enhancements
- Support to delete Busses and DCAs from mixer by deleting master strip
- Support for Monitor Controller configuration in .cnsl3d files
- Support for independent save/restore of Monitor Controller configuration
- Substantial Record Panel enhancements
- Record Panel UI Enhancements
- Embedded Firmware in MIOConsole with automatic "needs update" detection
- Embedded MHLink driver in MIOConsole with automatic "needs update" detection
- Automatic check for software updates with integrated download support
- Support for product registration from MIOConsole3d
- Performance improvements in MIOConsole3d
- Performance improvements in the MHLinkDriver
- Support for Jumbo packets in the MHLinkDriver
- Support for simultaneous connection with MHLink and USB
- Substantial improvements to USB transport
- User controllable channel counts for USB transport
- New plugins:
- CV transformer blocks for SVF
- Many resolved issues:
- MHLinkDriver: Fix intermittent Kernel Panic due to race conditions
- MHLinkDriver: Improve performance/reduce CPU load
- MHLinkDriver: Avoid dropouts when CoreAudio hosts are late
- MHLinkDriver: Fix issue with changing order of boxes
- MHLinkDriver: Ensure devices get full timeout period
- MHLinkDriver: Support Jumbo packets on devices that fragment buffers
- Firmware: Ensure UAC host is notified of S/R Changes
- Firmware: Prevent issue when S/R changes while streaming is active
- Firmware: Sync ADAT TX Frames with frame clock
- Firmware: Fix External clock source routing
- Firmware: Ensure HW only responds to packets addressed to it
- Firmware: Fix issue with S/PDIF receiver
- Firmware: Fix issue with running out of Enet RX buffers
- Firmware: Add hysteresis for AES Lock detection
- Firmware: Remove external clock sources from USB descriptors
- Fix incorrect restore/activation of talkback/listenback
- Fix problem when offline domain contains online box
- Fix problem that can prevent mounting units
- Fix problem that can cause console to crash units when a status read fails
- Fix problem with incomplete flush of cache that could cause unit or DSP to crash
- Improve channel category labels
- Ensure assignment changes are propagated to all views
- Add support for F17-F20 keys in key map
- Fix incorrect hot key capture of a key when user assigns a key not in the Virtual Key map
- Fix layout of generic controls on plugin UIs so that they are aligned correctly
- Ensure mixer with more than 128 inputs does not corrupt first input channel
- Fix UI sync in RP
- Substantially improve RP drawing performance
- Substantially improve RP recording performance
- Ensure RP does not drop samples until entire ring buffer consumed if disk too slow
- Fix rare RP overview computation crash
- Optimize RP overview computation
- Fix a variety of crashes
- Fix incorrect tool tip text
- Fix ModDelay plugin implementation
- Fix SPS plugin implementation
- Add missing notifications to ensure Mixer UI is updated
- Fix crashes related to MC references to stale mix busses
- Ensure router is muted on initial probe to clear zombie routes
- Control router reconfiguration to avoid beeps/tones
- Fix crash importing graphs via import menu
- Properly open custom plugin UIs when opening UI from graph
- Ensure MIDI devices are scanned and kept up to date
- Ensure mix busses are assigned to online boxes
- Improve Mixer UI resize speed
- Improve Mixer UI drawing performance
- Don't draw windows that are not visible to user
- Don't show Solo bus UI elements when solo mode is SIP
- Improve bus binding process (both speed and correctness)
- Ensure box probe really succeeds or completely fails
- Fix weird system pane flicker/scrolling when window or pane is resized
- Ensure mixer pane widths are restored properly from .cnsl3d files
- Fix intermittent failure of Console to connect to boxes when Console is running and boxes come online
- Fix intermittent RP track visibility issues
- Fix crash when graph is inserted into strip with no source
- Ensure that MHLinkDriver channel count is always reasserted properly
- Ensure box info has been loaded from unit correctly before issuing commands
- Ensure Unit Online & Offline state changes send notifications
- Ensure UI updates bypassed I/O tiles in response to boxes changing online/offline status
- Ensure Host I/O is always routed to the correct port on launch
- Enforce communication through root unit
- Performance: Defer HW updates if domain is offline
- Consolidate channels even if the domain is offline
- Adjust context menu for Link Groups to show only commands that are currently implemented
- Record Panel: Add support to pause writing to threaded writers if any of them are currently full (Disk Back Pressure)
- Add recursion block for MixerBus::refreshBinding
- Add notification targets to remove bus sources when busses are deleted by user to avoid crashes
- Add missing reference to ensure we don't allocate memory in Audio Callback
- Add missing locks around device discovery/removal lifecycle
- Actively mute all routes on reprobe to avoid any glitches during console assert
- (Perfomance) Reduce overdraw when refreshing mixer window
[Detailed Changelog]
Changes Since beta_3d/pb6: (601 commits)
- FEATURE: [0006333] Add support to hide non record enabled tracks from RP Overviews
- FEATURE: [0006329] Repurpose Take field to be TakeName field
- FEATURE: [0006325] Disable the talkback button in the UI there is no talkback source assigned
- FEATURE: [0006263] Add option-click link group tile to allow toggling Link Group enable from strip
- FEATURE: [0006238] Add menu commands for Talkback and Listenback
- FEATURE: [0005393] Add Editable Next Take control
- FEATURE: [0003957] Reimplement box registration
- FEATURE: Use embedded firmware for Firmware Install; add confirmation dialog
- FEATURE: Use bypass color for link group tiles when the link groups are not enabled
- FEATURE: Show detected TC format in TC display
- FEATURE: Put disk sizing request into an async request to avoid the UI hang
- FEATURE: Provide visible indication of offline or unavailable channels in UI
- FEATURE: Optimize RP track overview drawing
- FEATURE: Make unavailable host routes draw in italics
- FEATURE: Make loading cnsl3d file offline safe
- FEATURE: Indicate routed Host channels that are not currently available in the UI
- FEATURE: Indicate in the Unit info pane when the firmware on a unit can/should be updated
- FEATURE: Generate Recording.log in first record folder
- FEATURE: Flag un-routed sources and destinations in picker lists (Host/USB channels)
- FEATURE: Enable routing to/from all 48 channels on USB
- FEATURE: Distinguish between Wild (Right sample rate but not phase locked) and Off rate for external clock sources
- FEATURE: Adjust channel enables to reduce useless work done in the audio thread
- FEATURE: Adjust "Switch between Mixer and RP windows" algorithm to hide switched from window
- FEATURE: Add user preference to control how MC gain is updated when loading MC configuration
- FEATURE: Add user preference to always load MC state from cnsl3d file when opening file
- FEATURE: Add system type and version to the MIOConsole log
- FEATURE: Add support to update firmware by clicking on firmware version in Unit info if firmware update is available
- FEATURE: Add support to store and recall MC in cnsl3d file
- FEATURE: Add support to restrict MIOConsole3d to box discovery via MHLink only (useful for SCP on the same host as Console)
- FEATURE: Add support to handle opening .mc3d files by drag, double click or File > Open menu item
- FEATURE: Add support to gather the connection port and add it to the log
- FEATURE: Add support to filter logging tee by subsystem (so that we can filter out non recording logs from the recording log)
- FEATURE: Add support to distinguish between valid and locked for digital sources
- FEATURE: Add support to configure USB channel counts
- FEATURE: Add support to arbitrary busses or DCAs - delete buses from mixer by deleting the associated strip
- FEATURE: Add support for routing instead of tunneling
- FEATURE: Add support for optional field-width specifier on take, tracknum, and filenum tokens
- FEATURE: Add support for manual control of host strip allocation to multiple boxes
- FEATURE: Add support for dumping trace buffer
- FEATURE: Add support for autofit take in window
- FEATURE: Add support for Teeing the log
- FEATURE: Add support for SCP (Satellite Computer Port) routing to and from USB
- FEATURE: Add support for Native rendering with OpenGL Record panel (as it makes a substantial difference in CPU load)
- FEATURE: Add record related logs to the Recording subsystem, improve record log information
- FEATURE: Add preference to choose between hiding windows and just bringing to front for "Switch to" command
- FEATURE: Add preference to allow user to select between Native (CoreGraphics) and OpenGL UI rendering
- FEATURE: Add more record engine logging
- FEATURE: Add labels to the timecode/clock displays and to the take displays
- FEATURE: Add key commands for RP zoom
- FEATURE: Add infrastructure for channel remapping
- FEATURE: Add header for link groups pane
- FEATURE: Add gapless autobreak based on file size
- FEATURE: Add confirmation dialog for "Install Driver" command
- FEATURE: Add basic support to round robin host strips to share DSP amongst connected boxes
- FEATURE: Add Prefs UI to control Auto break size, Auto break and Manual break overlaps
- FEATURE: Add CV transformer blocks for SVF to support user specifying Q and Frequency ranges in natural units
- BUG FIX: [0006393] Connect registration window to Edit menu so that key commands work
- BUG FIX: [0006392] Don't hang when numerically cascading and source set to None
- BUG FIX: [0006356] Fix notification for Link Group Enable so it doesn't clear the UI while its being processed
- BUG FIX: [0006351] Fix crash when adding new link group from LG assign box
- BUG FIX: [0006328] Fix typo in tool tip for file name template string
- BUG FIX: [0006325] Ensure that the MC doesn't respond to TB being enabled
- BUG FIX: [0006325] Do not restore talkback enable or listenback enable from saved console file
- BUG FIX: [0006325] Do not enable talkback mode if there is no talkback source assigned
- BUG FIX: [0006325] Clear state of talkback enable if the talkback source is unassigned
- BUG FIX: [0006323] Ensure that Notifications are balanced properly when loading from a file
- BUG FIX: [0006319] Avoid misconfiguring newly attached root unit
- BUG FIX: [0006276] Rename "Computer" category > "Host" in channel selector
- BUG FIX: [0006276] Remove "Network" category from channel selector
- BUG FIX: [0006272] Fix crashes when interacting with RP window when there is no domain
- BUG FIX: [0006266] Fix conflicting default key commands for the coarse parameter nudge commands
- BUG FIX: [0006255] Ensure assignment changes are propagated to all views
- BUG FIX: [0006204] Fix crash when deleting offline box while root is online
- BUG FIX: [0006181] Fix incorrect hot key capture of a key when user assigns a key not in the Virtual Key map
- BUG FIX: [0006181] Add support for F17-F20 keys in key map
- BUG FIX: [0006159] Fix layout of generic controls on plugin UIs so that they are aligned correctly
- BUG FIX: [0006148] Fix race condition initializing worker thread by changing initialization order
- BUG FIX: [0006097] Ensure oversubscribed mixer does not stomp first input channel
- BUG FIX: [0006065] Ensure we don't crash if the kernel sends a double notification of the device being removed
- BUG FIX: [0006044] Ensure trigger mode control in RP matches mode set with hamburger menu
- BUG FIX: [0006027] Ensure that metering code doesn't crash if the pointer becomes un aligned
- BUG FIX: [0005967] Fix crash that occurs when opening a new file when mix surface is focussed on Aux
- BUG FIX: [0005966] Ensure actions mark document state dirty
- BUG FIX: [0005937] Reenable code that responds to Fader messages in Mackie Control Support
- BUG FIX: [0005911] Add missing IsAssigned check to ensure we don't try to access a non existing signal
- BUG FIX: [0005894] Fix crash due to throwing an exception from a destructor while tearing down USB interface
- BUG FIX: [0005889] Automatically hide mixer pane legend if there are no strips visible
- BUG FIX: [0005887] Fix Character UI by explicitly setting no knob controls to no knob rather than doing it globally
- BUG FIX: [0005846] Ensure cue control window position and size is restored correctly
- BUG FIX: [0005843] Fix bus output assign tooltips to include current box as well as channel
- BUG FIX: [0005840] Generate notification when bus width changes so that Mixer UI will be updated properly
- BUG FIX: [0005827] Only use created components when doing the router mute to avoid crash on discovery
- BUG FIX: [0005683] When assigning busses as inputs to strips, ignore user selected width as busses have their own widths
- BUG FIX: [0005655] Fix ModDelay to properly interpolate
- BUG FIX: [0005645] Ensure that solo is released when soloed strip or bus assign is removed
- BUG FIX: [0005639] Fix box crash that occurs when updating firmware under certain circumstances
- BUG FIX: [0005630] Ensure that stale bus references don't cause crash during notification handling
- BUG FIX: [0005592] Enable deleting selected strips from any of the mixer panes
- BUG FIX: [0005551] Add guards to protect against accessing null MC source on recall and fix crash
- BUG FIX: [0005526] Fix crash due to trying to assign a bus to a DCA strip via ad hoc cascade
- BUG FIX: [0005473] Ensure plugin windows are torn down when mixer is torndown
- BUG FIX: [0004346] Fix crash importing graphs via import menu
- BUG FIX: [0004113] Ensure router is muted on initial probe to clear zombie routes
- BUG FIX: [0003505] Fix HW crash due to stale i-cache when uploading plugins
- BUG FIX: Use proper bit for MADI legacy vs. long frames
- BUG FIX: Remove hard flush calls in RP; they mess up streaming performance on current OS
- BUG FIX: Reset "missing fields" message when form is validated
- BUG FIX: Improve MC notifications on console load
- BUG FIX: Catch exceptions when input file is corrupt to avoid crash
- BUG FIX: breakup large read to avoid timeout when we have jumbo packets and small channel counts
- BUG FIX: Use stored port mode if box is online when getting output mode
- BUG FIX: Use std::atomic on shared variables to avoid data race UB
- BUG FIX: Use right calls to open plugin UI from graph (so we always get the custom UI if present)
- BUG FIX: Use cached glyphs rather than text rendering for Timecode displays
- BUG FIX: Tear down MIDI last so that we don't remove clients after removing the server
- BUG FIX: Take into account the SMPTE source channel when calculating the highest active channel from the driver
- BUG FIX: Split Input and Output channel counts for driver query APIs
- BUG FIX: Slow down log flush timer
- BUG FIX: Slow down disk space available queries to reduce UI stuttering when recording huge sessions
- BUG FIX: Scan MIDI devices when MIDIManager is started
- BUG FIX: Route sample rate changes on USB through CoreAudio so that CoreAudio remains synced with HW
- BUG FIX: Require that unit is online to assign a mix bus to the unit (unless all units are offline)
- BUG FIX: Remove phone number requirement for registration
- BUG FIX: Remove overhead of error message in the case the error is not thrown
- BUG FIX: Remove extra work done when handling UI change that adjusts visual display for offline routing tiles
- BUG FIX: Remove $filetype$ token from the tool tip
- BUG FIX: Reduce inter-packet spin time to decrease delay
- BUG FIX: Reduce Async reads from HW Log and Trace Buffer to 256 bytes to minimize DMA impacts
- BUG FIX: Really fix the countries menu
- BUG FIX: Rate limit hw reads of strip meters
- BUG FIX: Protect against crash if mixer item for strip is not found
- BUG FIX: Performance: Use vector instead of set for current notification targets, as it is is faster to copy, iterate and teardown
- BUG FIX: Performance: Remove duplicated re layout steps when updating mixer pane
- BUG FIX: Performance: Refrain from connecting to the MIDI server if Control Surface Support is not enabled
- BUG FIX: Performance: Pipeline MIDIServer wait with other work
- BUG FIX: Performance: Make RPTransportPane opaque and avoid filling RP window with background that will just be covered
- BUG FIX: Performance: don't idle windows that are not visible to the user all this does is waste CPU cycles
- BUG FIX: Performance: Delay Restoring Control Panel prefs to give MIDIServer more time to launch
- BUG FIX: Performance: Batch mixer updates when re-connecting strips
- BUG FIX: Perfomance: Add SIMD envelop calculation for RP
- BUG FIX: Only wait after control writes, as reads are blocking
- BUG FIX: Only show Solo bus in UI if solo mode is not SIP
- BUG FIX: Only refresh binding if we are online
- BUG FIX: Only close user client if it is open
- BUG FIX: Only clear pipe stall if it is actually stalled
- BUG FIX: Only attach to OpenGL once
- BUG FIX: Move start of discovery until after file/preferences load to avoid initial configuration followed by immediate replacement
- BUG FIX: Make sure that we show bus output when it is assigned
- BUG FIX: Make sure mixer lay out occurs when opening a file (fixes a UI regression)
- BUG FIX: Make mixers allocate to the assigned unit when domain is offline
- BUG FIX: Make bus rebind atomic
- BUG FIX: Make MIODriverLock exception safe to avoid deadlock in ADSR
- BUG FIX: Make FPS detection lock faster in LTC decoder when instantaneous detection deviates from average
- BUG FIX: Limit max zoom out in overviews to 500:1
- BUG FIX: Initiate fadeout UI animation before deleting underlying model object to avoid nullptr reference
- BUG FIX: Increase recording audio buffer size to 2048 samples; this appears to be reliable and reduces CPU load
- BUG FIX: Increase audio driver buffer size to reduce CPU load and reduce the probability of overloads
- BUG FIX: Include the transport endpoint in "Use Control Surface In Background" Pref
- BUG FIX: Improve prefs pane layout
- BUG FIX: Improve name of Ad hoc link group in LG list UI ["Ad hoc" > "Selected Strips"]
- BUG FIX: Improve error checking in probe
- BUG FIX: Improve error checking in FP update
- BUG FIX: Improve RP trigger threshold history display
- BUG FIX: Ignore Solo bus when focussing auxes on control surface
- BUG FIX: Hide firmware version when unit is offline
- BUG FIX: Hide State/Province when it is not used
- BUG FIX: Guard potential nullptr reference
- BUG FIX: Force routing refresh when bringing domain online if tunneling is disabled (to resolve a routing restore issue)
- BUG FIX: Fix wrong text color for take number
- BUG FIX: Fix weird system pane flicker/scrolling when window or pane is resized
- BUG FIX: Fix use after free issue in Firmware update status pane
- BUG FIX: Fix routing errors revealed by fixes to initialization order
- BUG FIX: Fix restoration of mixer pane widths by reordered restore of layout info
- BUG FIX: Fix problems with resetting overview drawing with new takes
- BUG FIX: Fix potential crash in Firmware update menu handler when there are no domains
- BUG FIX: Fix over release of slot allocations when removing a connection that has not actually been established
- BUG FIX: Fix non critical issues identified by clang analyzer (variables set but not used)
- BUG FIX: Fix naming for Install Driver and Install Firmware
- BUG FIX: Fix layout and background color in Bugreporter window
- BUG FIX: Fix latent issues (potential null derefs) identified by clang analyzer
- BUG FIX: Fix latent issues (memory leaks) identified by clang analyzer
- BUG FIX: Fix jittery squishing effect when OGL window is resized
- BUG FIX: Fix issues with record panel dropping samples
- BUG FIX: Fix intermittent failure of Console to connect to boxes when Console is running and boxes come online
- BUG FIX: Fix initial track height
- BUG FIX: Fix initial country selection to be USA (not Afghanistan)
- BUG FIX: Fix incorrect signature of getDomain()
- BUG FIX: Fix incorrect recall of currently assigned bus to mix surface when switching domains (post optimization)
- BUG FIX: Fix incorrect initialization order of RecordEngine; this problem intermittently caused tracks to not be visible in RP window
- BUG FIX: Fix incorrect clock routing for SPDIF inputs on ADAT/SPDIF cards
- BUG FIX: Fix ideal height calculation when grid has table padding
- BUG FIX: Fix crash when refreshing row in link group table that has been removed
- BUG FIX: Fix crash when graph is inserted into strip with no source
- BUG FIX: Fix crash on quit due to new bus sign out
- BUG FIX: Fix crash if there is no mantis entitlement (or if the server sends back a corrupt response)
- BUG FIX: Fix capitalization of filename
- BUG FIX: Fix autoscroll state management
- BUG FIX: Fix YAML code to fix compiler error
- BUG FIX: Fix SPS wrapper to use correct delay line length to avoid the detuning problem
- BUG FIX: Fix DSP load indicators always at zero due to typo
- BUG FIX: Explicitly assert Driver Channel Count when loading .cnsl3d (rather than relying on the implicit assert)
- BUG FIX: Ensure CPU1 synchronizes with instruction cache operations that may have been triggered by CPU0
- BUG FIX: Ensure we reload HW base addresses and symbol addresses BEFORE sending commands to HW
- BUG FIX: Ensure we don't automatically add back the "Mon Out" output path if the saved file doesn't have it
- BUG FIX: Ensure that we don't have a buffer overflow regardless input message
- BUG FIX: Ensure that the system status pane is drawn when window is display on launch, and not a couple of seconds later
- BUG FIX: Ensure that the MIOAPI is initialized before calling into it
- BUG FIX: Ensure that change of Aux visibility on strip causes a notification so that the UI updates correctly
- BUG FIX: Ensure scrolling/scrollbar is up to date when RP window is made visible; only idle when showing
- BUG FIX: Ensure routes are reestablished if the topology shifts between tunneled and non tunneled
- BUG FIX: Ensure mLastFrame is initialized on construction
- BUG FIX: Ensure driver is set back to correct channel count on connect
- BUG FIX: Ensure Unit Online & Offline state changes send notifications
- BUG FIX: Ensure UI updates bypassed I/O tiles in response to boxes changing online/offline status
- BUG FIX: Ensure MC state is memorialized on root box, even if MC destination is targeting a different box
- BUG FIX: Ensure we route to the correct port on launch
- BUG FIX: Ensure Continuous Controller doesn't trigger ad-hoc link group
- BUG FIX: Enforce communication through root unit - fix intermittent box crash when an online box appears in offline domain
- BUG FIX: Don't try to call null handler
- BUG FIX: Don't create thread to initialize MIDI on mac as that causes problems with MIDI system updates
- BUG FIX: Disable threaded connection to MIDIServer as it blocks MIDI Device list updates (thanks Apple!)
- BUG FIX: Disable notifications to avoid notification storm for record tracks that causes a performance problem
- BUG FIX: Disable metering in RP for performance reasons
- BUG FIX: Disable inaccurate DSP load logs
- BUG FIX: Disable firmware update initiation from unit info pane when unit is offline
- BUG FIX: Delay attaching to OpenGL until we have received at least one idle since the window was made visible
- BUG FIX: Defer mixer binding update when domain is offline
- BUG FIX: Defer HW updates if domain is offline
- BUG FIX: Decrease per write buffer size from 2MB to 128kB as it make things run smoother
- BUG FIX: Correctly sign out of other mix busses when deleting a mix bus; avoid leaving dangling references
- BUG FIX: Correctly restore MC source index even if it is corrupt in file
- BUG FIX: Consolidate channels even if the domain is offline
- BUG FIX: Connect name update callbacks for mappings of MC sources and destinations
- BUG FIX: Clear processes before re-initing processhost to avoid whine during console assert
- BUG FIX: Change default file break to 4GB
- BUG FIX: Change "Ena" > "Enable" in the take folder list
- BUG FIX: Capture and Restore original linking disable state when MHLinkMixerDisableLinking exits scope
- BUG FIX: Call inherited Idle in subclass Idle for MHInspector windows
- BUG FIX: Break up reads from the meter data to avoid generating large DMA chains
- BUG FIX: Batch updates when bringing domain online
- BUG FIX: Avoid misaligned accesses when creating 4CC tags
- BUG FIX: Avoid gaps in overviews during initial screen @ high sample rates with native rendering
- BUG FIX: Avoid divide by zero
- BUG FIX: Avoid buffer overflow during initialization
- BUG FIX: Always rebind mixer after domain load to allow editing of plugins in offline domains
- BUG FIX: Adjust context menu for Link Groups to show only commands that are currently implemented
- BUG FIX: Add support to pause writing to threaded writers if any of them are currently full (Disk Back Pressure)
- BUG FIX: Add recursion block for MixerBus::refreshBinding
- BUG FIX: Add notification targets to remove bus sources when busses are deleted by user to avoid crashes
- BUG FIX: Add missing reference to ensure we don't allocate memory in Audio Callback
- BUG FIX: Add missing plugin metadata to application
- BUG FIX: Add missing locks around device discovery/removal lifecycle
- BUG FIX: Add bailout when generating code with plugins that are missing metadata
- BUG FIX: Add back missing notification if the domain is offline (to ensure that at least one domain is selected)
- BUG FIX: Add a short delay to ensure that update storms don't overrun HW
- BUG FIX: Actually restore monitor controller loading source preference on app launch
- BUG FIX: Actively mute all routes on reprobe to avoid any glitches during console assert
- BUG FIX: (Perfomance) Reduce overdraw when refreshing mixer window
Driver Changes since 2.0.46 (316 commits)
- FEATURE: Added Notarization & Stapling Process to support 10.14.5+
- FEATURE: Driver: Improve interface event logging
- FEATURE: Add driver support for Jumbo packets
- BUG FIX: Fix problem with Jumbo packets on some NIC/driver configurations
- BUG FIX: Fix Jumbo fragmented mbuf
- BUG FIX: Delay watchdog to last moment to give tardy clients more time
- BUG FIX: Adjust CA buffering to deal with late hosts
- BUG FIX: Const-ify access to RX buffers
- BUG FIX: Use aggressive optimization level for release build to reduce CPU load
- BUG FIX: Rollback an async teardown as it was causing panics
- BUG FIX: Increase the gap between the packetization offset and the output safety offset
- BUG FIX: Fix teardown Kernel Panic when MIO Console is active
- BUG FIX: Gate adding aliases by ensuring that the audio device is still active under the mAudioDevicesLock
- BUG FIX: Fix lack of device mount when swapping computer connection while MIO Console is running
- BUG FIX: Ensure that MHLink Input filter doesn't prepend to packet unless it is going to consume packet
- BUG FIX: Enforce maximum frames per packet at 64 to ensure we keep queues primed
- BUG FIX: Ensure that we wait for the full timeout for async packets
- BUG FIX: Add missing mAudioDevicesAliasesLock critical sections
Firmware Changes since 6.0.73 (316 commits)
- FEATURE: Dynamically adjust EP channel count for scalable USB transport
- FEATURE: Switch EP0 handler to interrupt driven state machine.
- FEATURE: Schedule USB DMA and Process EP0 at task time
- FEATURE: Persist front panel gain settings automatically
- FEATURE: Dynamically adjust EP channel count for scalable USB transport
- FEATURE: Disable SR change from USB when box is not on internal clock
- FEATURE: Add tracepoints for Enet
- FEATURE: Add support for reading Flash Unique ID
- FEATURE: Add hooks to allow trace buffer to be downloaded
- FEATURE: Add high-speed frame support for MADI
- FEATURE: Add dynamic USB EP FIFO Support
- FEATURE: Add Flash File System for persistent configuration
- BUG FIX: Fix mDNS record format
- BUG FIX: Fix missing control to enable/disable MADI TX muxing based setting of the use S/MUX flag
- BUG FIX: Add global buffer for CLK125
- BUG FIX: Use consistent priority between clk counter timeout and change detected
- BUG FIX: Adjust post change clk offset to better center sample point
- BUG FIX: Require 32 consecutive locked frames before reporting AES RX as locked (avoid chattering)
- BUG FIX: Remove duplicate memcpy of RPC command packet in derived classes
- BUG FIX: Only update S/R if the requested S/R is different from the current S/R
- BUG FIX: Only log SOF tracepoint during SOF interrupt
- BUG FIX: Limit UAC clock interrupt to primary clock source
- BUG FIX: Increase size of pbuf pool to ensure that it cannot be exhausted no matter what
- BUG FIX: Improve logging for port not found messages
- BUG FIX: Fix External clock sources
- BUG FIX: Fix bug that was preventing the device from informing the UAC driver when the SR changed
- BUG FIX: Fire a SR interrupt if we couldn't change the sample rate
- BUG FIX: Ensure we have bytes before sending MIDI packets
- BUG FIX: Ensure we don't dispatch an ethernet packet while we are processing an Ethernet packet
- BUG FIX: Ensure MADI TX has valid channel status structure in case some decoders care
- BUG FIX: Ensure HW doesn’t respond to packets not addressed to it, even if packet manages to pass HW filter
- BUG FIX: Ensure ADAT TX is synced to LRCK edge
- BUG FIX: don't flush cache for packets that were sent to non cacheable memory
- BUG FIX: Disable MAC unicast hash match filter to ensure that we only hash match on multicast packets as expected
- BUG FIX: Change member order to ensure proper initialization order
- BUG FIX: Auto detect if copper S/PDIF needs de-skew and apply to stabilize S/PDIF receiver