diff --git a/gr-audio/lib/osx/audio_osx_source.cc b/gr-audio/lib/osx/audio_osx_source.cc
index 61f8eb4..68698e4 100644
--- a/gr-audio/lib/osx/audio_osx_source.cc
+++ b/gr-audio/lib/osx/audio_osx_source.cc
@@ -300,7 +300,8 @@ audio_osx_source::audio_osx_source (int sample_rate,
 
 // get the max number of input (& thus output) channels supported by
 // this device
-  d_n_max_channels = asbd_client.mChannelsPerFrame;
+  //d_n_max_channels = asbd_client.mChannelsPerFrame;
+  d_n_max_channels = asbd_device.mChannelsPerFrame;
 
 // create the output io signature;
 // no input siganture to set (source is hardware)
@@ -319,6 +320,27 @@ audio_osx_source::audio_osx_source (int sample_rate,
   d_deviceSampleRate = asbd_device.mSampleRate;
   d_n_deviceChannels = asbd_device.mChannelsPerFrame;
 
+  asbd_client.mChannelsPerFrame = d_n_deviceChannels;
+  asbd_client.mSampleRate = asbd_device.mSampleRate;
+  asbd_client.mFormatID = kAudioFormatLinearPCM;
+  asbd_client.mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved;
+  if (asbd_client.mFormatID == kAudioFormatLinearPCM && d_n_deviceChannels == 1)
+      asbd_client.mFormatFlags &= ~kLinearPCMFormatFlagIsNonInterleaved;
+  asbd_client.mBitsPerChannel = 32;
+  asbd_client.mBytesPerFrame = asbd_client.mBitsPerChannel / 8;
+  asbd_client.mFramesPerPacket = 1;
+  asbd_client.mBytesPerPacket = asbd_client.mBytesPerFrame;
+
+  propertySize = sizeof(AudioStreamBasicDescription);
+  err = AudioUnitSetProperty (d_InputAU,
+			      kAudioUnitProperty_StreamFormat,
+			      kAudioUnitScope_Output,
+			      1,
+			      &asbd_client,
+			      propertySize);
+  CheckErrorAndThrow (err, "AudioUnitSetProperty Device Ouput Stream Format",
+		      "audio_osx_source::audio_osx_source");
+
 // create an ASBD for the user's wants
 
   asbd_user.mSampleRate = d_outputSampleRate;

