MacMusic.org  |  PcMusic.org  |  440Software  |  440Forums.com  |  440Tv  |  Zicos.com  |  AudioLexic.org
Loading... visitors connected
 
Reply to this topicStart new topic
> Simple Audio Recording Code Sample
darkeye
post Wed 25 Feb 2004, 08:33
Post #1


Newbie


Group: Members
Posts: 1
Joined: 25-Feb 04
From: Budapest - HU
Member No.: 36,804




Hi,

I'm new to MacOS programming, but have considerable background in different UNIX systems. I'm trying to port my project, DarkIce to MacOS. For this, I need to be able to simply record audio from an audio device. More precisely:
  • open the audio device
  • configure for appropriate parameters (e.g. 44.1kHz, 16 bit, 2 channel, PCM recording)
  • read from the device
  • close the device
for example, on Solaris / OpenBSD / NetBSD, the following code achieves just this:
CODE
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <sys/audioio.h>

#define FILE_NAME "/dev/audio"
#define SAMPLE_RATE 22050
#define CHANNEL 2
#define BITS_PER_SAMPLE 16
#define BUF_SIZE 4

int main(int argc, char **argv) {
   int             fd;
   audio_info_t    audioInfo;
   unsigned char   buf[BUF_SIZE];
   unsigned int    len = BUF_SIZE;
   ssize_t         ret;

   fd = open( FILE_NAME, O_RDONLY);

   AUDIO_INITINFO( &audioInfo);
   audioInfo.record.sample_rate = SAMPLE_RATE;
   audioInfo.record.channels    = CHANNEL;
   audioInfo.record.precision   = BITS_PER_SAMPLE;
   audioInfo.record.encoding    = AUDIO_ENCODING_LINEAR;

   if ( ioctl(fd, AUDIO_SETINFO, &audioInfo) ) {
       printf("can't set audio info, error: %d\n", errno);
   }

   ret = read(fd, buf, len);

   printf("%d returned by read\n", ret);
   if ( ret == -1 ) {
       printf("error code %d\n", errno);
   }

   close(fd);

   return 0;
}

What I hear is that MacOS uses a callback pattern to access audio data from the sound card. if so, probably I'm looking for a sample that does:
  • initialize the whole thing
  • set the audio parameters (e.g. 44.1kHz 16 bit stereo PCM recording)
  • register my callback function
  • shut down
Can anyone help me?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version - Mon 16 Dec 2024, 22:23
- © 440 Forums 2011