     /// Enumerate the list of available output devices.
     public static var outputDevices: [AKDevice]? {
         #if os(macOS)
-        EZAudioUtilities.setShouldExitOnCheckResultFail(false)
-        return EZAudioDevice.outputDevices().compactMap {
-            guard let device = $0 as? EZAudioDevice else { return nil }
-            return AKDevice(ezAudioDevice: device)
+        return GetAudioDevices().compactMap { (id: AudioDeviceID) -> AKDevice? in
+            if AudioDeviceOutputChannels(id) > 0 {
+                return AKDevice(deviceID: id)
+            }
+            return nil
         }
         #else
         let devs = AVAudioSession.sharedInstance().currentRoute.outputs

    /// Enumerate the list of available input devices.
    public static var inputDevices: [AKDevice]? {
        #if os(macOS)
        EZAudioUtilities.setShouldExitOnCheckResultFail(false)

        return EZAudioDevice.inputDevices().compactMap {
            guard let device = $0 as? EZAudioDevice else { return nil }
            return AKDevice(ezAudioDevice: device)
        }
        #else
        var returnDevices = [AKDevice]()

    #if os(macOS)
    /// Enumerate the list of available devices.
    public static var devices: [AKDevice]? {
        return GetAudioDevices().map { id in
            return AKDevice(deviceID: id)
        }
    }
    #endif
