Roon 1.3 (Build 234) Is Live!

Hi all,

A new release of Roon is now going live on all platforms!

This release features a number of notable changes, including new editing functionality and support for new file tags related to Compositions, Performances, Credits, and more. This functionality should make Roon a more flexible product for classical fans and other users who have invested time grooming their files. This new functionality is detailed below.

This release also includes some long-planned changes under the hood, including a new streaming protocol for RAAT, and an updated implementation for the extraction of file tags. These changes have been thoroughly tested by our internal QA team and our alpha testers, and while the performance increases are significant, the effects of these changes should largely be invisible. Full details are below.

A number of bug fixes and other performance fixes are also included in Build 234. These include a new implementation of Airplay’s security model that should ensure Roon again streams to 4th Generation AppleTV devices, as well as to earlier Apple TV models even when their security settings are enabled.

Other bug fixes include changes to our Album Gallery feature, keyboard volume shortcuts, Tags, Export, Crossfade, and Radio. The full list of bug fixes is below.

That should do it for this release. Thanks everyone!

The Team at Roon Labs

Roon 1.3 (Build 234) Release Notes

Roon Build 234 is now rolling out for OSX, Windows, Windows (64 Bit), and Linux. Updated versions of Roon for Android and iOS have been submitted to their respective App Stores and will be available upon approval.

Build 97 of Roon Bridge is also live for all platforms.

All platforms and apps should update automatically.

Core platforms will run 234, while iOS and Android remain on 233. Build 233 was replaced on Core platforms shortly after release to fix two minor issues. Details at the end of this post.

New Functionality In Build 234

Improved Importing of Compositions/Performances from File Tags

In 1.3, we added support for WORK / PART (and COMPOSITION / MOVEMENT) tags, which made it easier to control composition/performance grouping for unidentified albums in your library.

This release expands on that functionality, by adding “prefer file” options both at the album level, and as global library settings. It is also possible now to use these tags on a subset of tracks within an album without un-grouping the rest of the album.

When using these tags, remember:

  • When tagging single-part performances, provide WORK or COMPOSITION as well as COMPOSER tags on the track
  • When tagging multi-part performances, provide WORK or COMPOSITION, PART or MOVEMENT and COMPOSER tags on each track.

Improved Importing Of Track Credits From File Tags

Roon now offers more granular control of how credits are imported from your file tags. Up until now, merging of credits between file tags and Roon’s metadata service has used an algorithm that prioritizes de-cluttering over completeness. While we’ve left the default behavior the same, we have created some new settings to enable track credits to be imported unconditionally.

This is implemented as a new set of library settings–one per credit type–that allow you to “prefer file” or “merge roon and file” for each of the credit categories: Main Performers, Ensembles, Conductors, Composers, Performers, Production. For more on credit roles and their respective types, see here.

Support for editing of Recording Date + Location at the Track Level

This has been a frequent request from some of our more serious classical collectors, since performance dates and locations are so fundamental to cataloging classical performances.

As part of this release, these fields have been made into track-level properties and opened up to editing, import from file tags, “prefer file” behavior, etc. Combined with some of the other metadata/editing mentioned above, this greatly enhances people’s ability to “groom” Classical albums.

New File Tag Support

A number of new files tags are now supported in Roon, including file tags needed for the functionality mentioned above. More information about our existing file tag support can be found here.

New File Tags supported in Build 234 include:

  • LIVE file tag
  • Multiple LABEL tags
  • “Traditional” composer now recognized
  • Alternate spelling: PERFORMANCEDATE
    Alternate spelling: RECORDING DATE
    Alternate spelling: PERFORMANCE DATE
  • Alternate spelling: RECORDING START DATE
  • Alternate spelling: PERFORMANCE START DATE
  • Alternate spelling: PERFORMANCESTARTDATE
  • Alternate spelling: RECORDING END DATE
  • Alternate spelling PERFORMANCE END DATE
  • Alternate spelling: PERFORMANCEENDDATE
  • Alternate spelling: RECORDING LOCATION
  • Alternate spelling: PERFORMANCE LOCATION
  • Alternate spelling: RECORDINGLOCATION
  • Alternate spelling: PERFORMANCELOCATION
  • iTunes-specific classical tags in MP4 (AAC, ALAC) files
  • @wrk - synonym for WORK and COMPOSITION (used by iTunes
  • ©prf - synonym for SOLOIST
  • ©mvn - synonym for PART and MOVEMENT
  • ©con - synonym for CONDUCTOR

Support for new AirPlay security model

A while back, Apple implemented a more secure pairing process for AirPlay devices. Among other things, this makes it more possible to deploy AirPlay in less secure environments.

They first implemented these features as an option on some older Apple TV models, but allowed them to be disabled by the user. As of TvOS 10.2 (AppleTV 4 only), these security features can no longer be disabled, and as of that OS update some users found themselves unable to use AirPay with software that didn’t implement the new security model.

We have found a solution that should allow Roon to work properly with these devices moving forward. This also enables the use of Roon with older Apple TV’s that have these features enabled.

If you are using an Apple TV 4, we suggest that you set it up in either “Password” mode or “First-Time Passcode” mode. The third option–“Passcode”–requires frequent re-entry of credentials, which is very annoying.

RAAT Audio Streaming Optimizations

Most audio streaming protocols are designed, implemented in hardware, and then set in stone. This happens because updating firmware in hardware devices is difficult, and when that hardware is made by dozens of different manufacturers it’s nearly impossible. That’s why most AirPlay users never install a firmware update–the device is speaking the same AirPlay protocol it did on day one.

In an ecosystem like that, evolving is difficult–too many changes and you end up with a range of devices each with slightly different behavior. This is a nightmare for QA and support, so device implementations for protocols like UPnP AV and AirPlay are often set in stone.

When we set out to design RAAT, we hoped for a brighter future – a future that can evolve with our budding hardware ecosystem. Trying to push firmware updates to Roon users via our 60+ hardware partners wasn’t realistic, so we designed RAAT to work differently: Instead of baking the audio streaming protocol into the device firmware, the firmware contains the absolute minimum needed for us to “boot” a second piece of code delivered to the device the time when the Roon Core makes its connection to the device. This second piece code–delivered “just in time”–defines the streaming protocol that Roon uses to speak with RAAT devices.

Today’s release of the core includes a re-design of RAAT’s audio streaming protocol that uses TCP instead of UDP to transmit the audio stream.

In day-to-day life, most of the protocols you use are TCP-based–browsing the web, viewing Netflix or Youtube. Streaming audio using TIDAL, Spotify, OpenHome, UPnP, MPD, or SMB. The two most popular UDP streaming systems that most people have contact with are AirPlay and Skype.

We have decades of experience building audio streaming protocols around UDP, and it has generally been our first choice, but we also know that both TCP and UDP, when implemented properly, are suitable for high-bandwidth, high-quality media streaming, so it was worth undertaking an exploration of “the other side” to see if there was actually a reason to consider switching.

After a series of experiments and prototypes, and a detailed exploration of both approaches, we found that we were able to extract more performance and reliability from TCP, so we took it to the next phase and started experimenting with TCP in our alpha environment a couple of months ago.

We found that using TCP reduces CPU load on the audio device and in the core–primarily by reducing the context switching overhead associated with “waking up” for each packet. Using TCP also allows us to offload work associated with re-assembling the packetized audio stream from RAAT to the operating system kernel on the audio device, where it can be implemented more efficiently and simply.

We also found that TCP is a lot “friendlier” to poor networks and routers. Not all router manufacturers perform extensive QA with high-resolution UDP audio streams, but they all test to make sure Netflix and Youtube (both TCP-based) work. TCP is also less likely to create trouble with exotic network setups–managed switches, jumbo frames, etc. If you have experienced trouble with these, it’s definitely worth taking another shot to see if the new protocol is easier on your network.

This change rolls out as part of the update to your Roon Core–which will use the new protocol when speaking to all RAAT-based zones. Aside from updating the core, no firmware or software updates are required on any of your devices.

Infrastructure improvements related to file tags

Since the beginning, Roon has used an open source project called taglib in order to read and write file tags. We have always maintained our own fork of this library because of our need to support some more exotic features (DSD formats, wave64, etc). As a result, the library we were using was very old. Upgrading major low-level components like this is not flashy, and not fun–mostly just a lot of work–but it’s necessary to keep Roon current.

With this release, we’ve started with their most current version, merged in all of our changes from the past decade, and then undergone an exhaustive QA procedure to ensure that none of this creates unintended issues or behavior changes.

The new version of taglib has much improved support for large (>2GB) files, fixes dozens of small bugs related to tag extraction from nearly all file formats, addresses some problems with our export feature, and puts us in a better position to read and write file tags accurately and reliably going forwards.

Other New Functionality

  • Shift-Ctrl-Up/Down can be used to increment volume by one unit instead of 5 units
  • Volume control keyboard shortcuts now work during grouped playback by manipulating the master volume slider
  • Deleting a file in Roon also deletes it from the database (no longer need to use Library Cleanup)
  • Playlist details: Added “Play” to 3 dots on track rows

Bug Fixes and Performance Improvements in Roon Build 234:

  • Upgrade to mono 4.8.1 (Mac + Linux only)
  • Turns on new SSL implementation in mono
  • Library Import settings properly applied
  • SRC Changes CPU-optimized SRC paths for 48->{352.8,176.4,88.2}, 96->{352.8,176.4}, 192->352.8
  • Fix focus behavior when using “View All Artists” on a tag that contains composers
  • Waveform play-progress offset fixes with Sonos devices
  • Android crash fixed
  • Better error message in case of export failure
  • Tracks no longer fail to import because of ‘Volume Normalization’ and ‘CDDB1 Info’ tags
  • Export generates more compliant flac files
  • Crossfade: double speed playback after rewinding fixed
  • ‘DSD sample rate’ dropdown fixed
  • Tagged composers work as expected in artist browser
  • Fixed presentation of “DSD Sample Rate Conversion” in signal path for some Roon Ready devices
  • Fixed an endpoint crash on some very old Roon Ready firmware versions
  • Minor changes to how we make TIDAL API requests to conform to their current rules
  • Better storage errors
  • Album Gallery: duplicate images fixed
  • TIDAL removed from “other versions”
  • Performer details: View All Production link goes to album focus
  • “Reset” button shown on Composition and Playlist browsers when filtered
  • Clumping issues with some dxd/dsd content resolved
  • log in issues resolved
  • ALAC files >2gb now import properly
  • Fix display error where parts were being considered like multi-performances
  • Track editor: missing ‘File modification date’ option in ‘Import Date’ section fixed
  • Memory consumption no longer goes dangerously high after exporting big amount of files
  • Fixed crash when detaching the drive with media during import procedure
  • Fixed crash when a 2gb+ file is added to the watched folder
  • Fixed playback stoppage when up-sampling to DSD256 with crossfeed ON
  • Fixed issue setting metadata preferences via ‘Album editor’ for Recording Date/Location
  • Fixed crash when entering an accented character in the search box on Mac
  • Fixed bug causing the Delete confirmation window to not close in some cases
  • Fixed issue exporting dff files
  • ‘Read Change Log’ link is fixed on Roon Bridge
  • Fixed issue displaying files paths in Japanese
  • Fixed issue exporting 2gb+ files on Linux
  • Audio playback no longer stops unnecessarily when phone goes to sleep. Note that it is sometimes impossible for us to keep the WiFi connection up when the screen is turned off and the phone is powered by the battery.
  • Better handling of file tags with several discrete values
  • ROCK is identified in Choose Your Core screen
  • Proper error message is shown when attempting to playback content which isn’t available

In Build 234 (replaces Build 233):

  • Fix for playback issues on certain multi-channel devices
  • Fix for “View All Tracks” issue on Tags