00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __PAUDIO_H__
00022 #define __PAUDIO_H__
00023
00024 #include "paudio_API.h"
00025
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029
00030 #include <audio.h>
00031
00032 #define AUDP_IN_MIC 0x01
00033 #define AUDP_IN_LINE 0x02
00034 #define AUDP_IN_DIGITAL 0x04
00035
00036 #define AUDP_READ 0x00
00037 #define AUDP_WRITE 0x01
00038 #define AUDP_NOBLOCKS 0x02
00039
00040 #define ALLOCAUDIO() (PR_AUDIO *)calloc(sizeof(PR_AUDIO), 1)
00041 #define FREEAUDIO(pap) { if (pap->data) free(pap->data); free(pap); }
00042
00043 #define PR_LEFT_CHANNEL 1
00044 #define PR_RIGHT_CHANNEL 2
00045 #define PR_AVERAGE_CHANNEL 3
00046
00047 typedef struct {
00048 long rate;
00049 short bits;
00050 short nchannels;
00051 } PR_APARMS;
00052
00053 typedef struct {
00054 PR_APARMS parms;
00055 int data_bytes;
00056 char *data;
00057 int midi_bytes;
00058 char *midi;
00059 char *sparePointer;
00060
00061 int bytes_per_samp;
00062 int currpos;
00063 float scrubLength;
00064 } PR_AUDIO;
00065
00066 typedef struct {
00067 int mode;
00068 ALport alport;
00069 PR_APARMS parms;
00070 } PR_APORT;
00071
00072 #ifdef NO_PROTOTYPES
00073
00074 paudio_API extern PR_APORT *PR_OpenPort();
00075 paudio_API extern PR_AUDIO *PR_ReadFile();
00076 paudio_API extern PR_AUDIO *PR_Record();
00077 paudio_API extern PR_AUDIO *PR_ClipAudio();
00078 paudio_API extern PR_AUDIO *PR_RevAudio();
00079 paudio_API extern PR_AUDIO *PR_VolumeAudio();
00080 paudio_API extern PR_AUDIO *PR_AppendAudio();
00081 paudio_API extern PR_AUDIO *PR_CombineAudio();
00082 paudio_API extern PR_AUDIO *PR_StripAudio();
00083 paudio_API extern PR_AUDIO *PR_ShiftAudio();
00084 paudio_API extern void PR_GetData();
00085 paudio_API extern void PR_PutData();
00086 paudio_API extern int PR_GetSampleSize();
00087
00088 #else
00089
00090
00091 paudio_API extern int PR_IsAudio(void);
00092
00093 paudio_API extern PR_AUDIO *PR_ReadFile(const char *filename);
00094 paudio_API extern int PR_WriteFile(const char *filename,
00095 PR_AUDIO *pap);
00096
00097 paudio_API extern PR_APORT *PR_OpenPort(PR_APARMS *pparms, int mode);
00098 paudio_API extern int PR_ClosePort(PR_APORT *pport);
00099
00100 paudio_API extern PR_AUDIO *PR_Record(PR_APORT *pport, int inp,
00101 int (*notify)(float), int len);
00102 paudio_API extern void PR_StartPlay(PR_APORT *pport, PR_AUDIO *pap,
00103 int start);
00104 paudio_API extern void PR_Play(PR_APORT *pport, PR_AUDIO *pap,
00105 int (*notify)(float));
00106 paudio_API extern long PR_AvailableBuffSamps(PR_APORT *pport);
00107 paudio_API extern void PR_WaitForEnd(PR_APORT *pport);
00108 paudio_API extern void PR_StopPlay(PR_APORT *pport);
00109 paudio_API extern void PR_RefreshPlay(PR_APORT *pport,
00110 PR_AUDIO *pap, int start);
00111
00112 paudio_API extern int PR_SampleTime(PR_AUDIO *pap, float second);
00113 paudio_API extern int PR_ValidSample(PR_AUDIO *pap, int sample);
00114 paudio_API extern PR_AUDIO *PR_ClipAudio(PR_AUDIO *pap, int start,
00115 int end);
00116 paudio_API extern PR_AUDIO *PR_ReverseAudio(PR_AUDIO *pap);
00117 paudio_API extern PR_AUDIO *PR_ShiftAudio(PR_AUDIO *pap, int rate,
00118 int bits);
00119 paudio_API extern PR_AUDIO *PR_StripAudio(PR_AUDIO *pap, int which);
00120 paudio_API extern PR_AUDIO *PR_CombineAudio(PR_AUDIO *pap);
00121 paudio_API extern PR_AUDIO *PR_AppendAudio(PR_AUDIO *pap1, PR_AUDIO *pap2);
00122 paudio_API extern PR_AUDIO *PR_VolumeAudio(PR_AUDIO *pap1, float factor);
00123 paudio_API extern void PR_GetData(PR_AUDIO *pap, int pos,
00124 long *sample);
00125 paudio_API extern void PR_PutData(PR_AUDIO *pap, int pos,
00126 long *sample);
00127 paudio_API extern int PR_GetSampleSize(float min_value,
00128 float max_value);
00129
00130 #endif
00131
00132 #ifdef __cplusplus
00133 }
00134 #endif
00135
00136 #endif