Index: src/io/sink_apple_audio.c
===================================================================
--- src/io/sink_apple_audio.c	(revision 16dda037d1ce8a8762ed515212833aae09d3c021)
+++ src/io/sink_apple_audio.c	(revision 98a38878b102b20a08c16c1efde89896e2d9e0d2)
@@ -37,4 +37,5 @@
 extern void freeAudioBufferList(AudioBufferList *bufferList);
 extern CFURLRef getURLFromPath(const char * path);
+char_t *getPrintableOSStatusError(char_t *str, OSStatus error);
 
 #define MAX_SIZE 4096 // the maximum number of frames that can be written at a time
@@ -79,9 +80,13 @@
      overwrite ? kAudioFileFlags_EraseFile : 0, &s->audioFile);
   if (err) {
-    AUBIO_ERR("error when trying to create %s, in ExtAudioFileCreateWithURL, %d\n", s->path, (int)err);
+    char_t errorstr[20];
+    AUBIO_ERR("sink_apple_audio: error when trying to create %s with "
+        "ExtAudioFileCreateWithURL (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
     goto beach;
   }
   if (createAubioBufferList(&s->bufferList, s->channels, s->max_frames * s->channels)) {
-    AUBIO_ERR("error when creating buffer list for %s, out of memory? \n", s->path);
+    AUBIO_ERR("sink_apple_audio: error when creating buffer list for %s, "
+        "out of memory? \n", s->path);
     goto beach;
   }
@@ -115,6 +120,8 @@
 
     if (err) {
-      AUBIO_ERROR("in aubio_sink_apple_audio_do, writing %s\n", s->path);
-      AUBIO_ERROR("ExtAudioFileWriteAsync failed with %d, switching to sync\n", (int)err);
+      char_t errorstr[20];
+      AUBIO_ERROR("sink_apple_audio: error while writing %s "
+          "in ExtAudioFileWriteAsync (%s), switching to sync\n", s->path,
+          getPrintableOSStatusError(errorstr, err));
       s->async = false;
     } else {
@@ -126,6 +133,8 @@
 
     if (err) {
-      AUBIO_ERROR("in aubio_sink_apple_audio_do, writing %s\n", s->path);
-      AUBIO_ERROR("ExtAudioFileWrite failed with %d, aborting\n", (int)err);
+      char_t errorstr[20];
+      AUBIO_ERROR("sink_apple_audio: error while writing %s "
+          "in ExtAudioFileWrite (%s)\n", s->path,
+          getPrintableOSStatusError(errorstr, err));
     }
   }
@@ -136,9 +145,14 @@
   OSStatus err = noErr;
   if (!s || !s->audioFile) {
-    AUBIO_ERR("failed erasing sink_apple_audio\n");
+    AUBIO_ERR("sink_apple_audio: failed erasing\n");
     return;
   }
   err = ExtAudioFileDispose(s->audioFile);
-  if (err) AUBIO_ERROR("error in ExtAudioFileDispose, %d\n", (int)err);
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("sink_apple_audio: error while closing %s "
+        "in ExtAudioFileDispose (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+  }
   s->audioFile = NULL;
   freeAudioBufferList(&s->bufferList);
Index: src/io/source_apple_audio.c
===================================================================
--- src/io/source_apple_audio.c	(revision 16dda037d1ce8a8762ed515212833aae09d3c021)
+++ src/io/source_apple_audio.c	(revision 98a38878b102b20a08c16c1efde89896e2d9e0d2)
@@ -51,4 +51,5 @@
 extern void freeAudioBufferList(AudioBufferList *bufferList);
 extern CFURLRef getURLFromPath(const char * path);
+char_t *getPrintableOSStatusError(char_t *str, OSStatus error);
 
 uint_t aubio_source_apple_audio_open (aubio_source_apple_audio_t *s, char_t * path);
@@ -80,5 +81,15 @@
   CFURLRef fileURL = getURLFromPath(path);
   err = ExtAudioFileOpenURL(fileURL, &s->audioFile);
-  if (err) { AUBIO_ERR("error when trying to access %s, in ExtAudioFileOpenURL, %d\n", s->path, (int)err); goto beach;}
+  if (err == -43) {
+    AUBIO_ERR("source_apple_audio: Failed opening %s, "
+        "file not found, or no read access\n", s->path);
+    goto beach;
+  } else if (err) {
+    char_t errorstr[20];
+    AUBIO_ERR("source_apple_audio: Failed opening %s, "
+        "error in ExtAudioFileOpenURL (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+    goto beach;
+  }
 
   // create an empty AudioStreamBasicDescription
@@ -90,5 +101,11 @@
   err = ExtAudioFileGetProperty(s->audioFile,
       kExtAudioFileProperty_FileDataFormat, &propSize, &fileFormat);
-  if (err) { AUBIO_ERROR("error in ExtAudioFileGetProperty, %d\n", (int)err); goto beach;}
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: Failed opening %s, "
+        "error in ExtAudioFileGetProperty (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+    goto beach;
+  }
 
   if (s->samplerate == 0) {
@@ -117,5 +134,8 @@
       propSize, &clientFormat);
   if (err) {
-      AUBIO_ERROR("error in ExtAudioFileSetProperty, %d\n", (int)err);
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: Failed opening %s, "
+        "error in ExtAudioFileSetProperty (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
 #if 1
   // print client and format descriptions
@@ -158,5 +178,11 @@
   UInt32 c, v, loadedPackets = s->block_size;
   OSStatus err = ExtAudioFileRead(s->audioFile, &loadedPackets, &s->bufferList);
-  if (err) { AUBIO_ERROR("error in ExtAudioFileRead %s %d\n", s->path, (int)err); goto beach;}
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: error while reading %s "
+        "with ExtAudioFileRead (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+    goto beach;
+  }
 
   short *data = (short*)s->bufferList.mBuffers[0].mData;
@@ -188,5 +214,11 @@
   UInt32 c, v, loadedPackets = s->block_size;
   OSStatus err = ExtAudioFileRead(s->audioFile, &loadedPackets, &s->bufferList);
-  if (err) { AUBIO_ERROR("source_apple_audio: error in ExtAudioFileRead, %d\n", (int)err); goto beach;}
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: error while reading %s "
+        "with ExtAudioFileRead (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+    goto beach;
+  }
 
   short *data = (short*)s->bufferList.mBuffers[0].mData;
@@ -226,9 +258,15 @@
 {
   OSStatus err = noErr;
-  if (!s || !s->audioFile) { return 1; }
+  if (!s || !s->audioFile) { return AUBIO_FAIL; }
   err = ExtAudioFileDispose(s->audioFile);
-  if (err) AUBIO_ERROR("error in ExtAudioFileDispose, %d\n", (int)err);
   s->audioFile = NULL;
-  return err;
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: error while closing %s "
+        "in ExtAudioFileDispose (%s)\n", s->path,
+        getPrintableOSStatusError(errorstr, err));
+    return err;
+  }
+  return AUBIO_OK;
 }
 
@@ -248,5 +286,10 @@
   SInt64 resampled_pos = (SInt64)ROUND( pos * ratio );
   OSStatus err = ExtAudioFileSeek(s->audioFile, resampled_pos);
-  if (err) AUBIO_ERROR("source_apple_audio: error in ExtAudioFileSeek (%d)\n", (int)err);
+  if (err) {
+    char_t errorstr[20];
+    AUBIO_ERROR("source_apple_audio: error while seeking %s at %d "
+        "in ExtAudioFileSeek (%s)\n", s->path, pos,
+        getPrintableOSStatusError(errorstr, err));
+  }
   return err;
 }
Index: src/io/utils_apple_audio.c
===================================================================
--- src/io/utils_apple_audio.c	(revision 16dda037d1ce8a8762ed515212833aae09d3c021)
+++ src/io/utils_apple_audio.c	(revision 98a38878b102b20a08c16c1efde89896e2d9e0d2)
@@ -10,4 +10,5 @@
 void freeAudioBufferList(AudioBufferList *bufferList);
 CFURLRef getURLFromPath(const char * path);
+char_t *getPrintableOSStatusError(char_t *str, OSStatus error);
 
 int createAubioBufferList(AudioBufferList * bufferList, int channels, int max_source_samples) {
@@ -39,3 +40,16 @@
 }
 
+char_t *getPrintableOSStatusError(char_t *str, OSStatus error)
+{
+    // see if it appears to be a 4-char-code
+    *(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
+    if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4])) {
+        str[0] = str[5] = '\'';
+        str[6] = '\0';
+    } else
+        // no, format it as an integer
+        sprintf(str, "%d", (int)error);
+    return str;
+}
+
 #endif /* __APPLE__ */
