iOS device - iPhone, iPad etc. as an audio playback device

The technical issue is pretty straightforward: Xamarin’s garbage collector pauses threads regardless of whether they are running managed code or not. This interferes with the threads playing the audio and causes dropouts. In theory their cooperative mode garbage collector will avoid this problem once it’s stable, by only pausing managed threads.

The problem would exist on Android too, but Android’s application model is more flexible than Apple’s, so we can sidestep the issue by running the audio playback in a segregated process that does not use Mono/Xamarin.

I’m sure a simple “hello world” style program could accomplish stable audio playback using the Xamarin frameworks. The trouble comes when you put the Roon UI in the same process with audio playback.

So there are two ways out: Apple loosens the restrictions, or Xamarin/Microsoft finish a big redesign of the garbage collector and make it stable enough for apps like Roon to adopt the new one. We monitor Xamarin’s progress as they make releases. When we turn on the new GC, Roon becomes very unstable. So at least for now, it’s not ready yet.

1 Like