2 changed files with 131 additions and 17 deletions
@ -0,0 +1,100 @@
@@ -0,0 +1,100 @@
|
||||
#ifndef SOUNDPIPE_H |
||||
#define SOUNDPIPE_H |
||||
#include <stdint.h> |
||||
#include <stdio.h> |
||||
|
||||
#define SP_BUFSIZE 4096 |
||||
#ifndef SPFLOAT |
||||
#define SPFLOAT float |
||||
#endif |
||||
#define SP_OK 1 |
||||
#define SP_NOT_OK 0 |
||||
|
||||
#define SP_RANDMAX 2147483648 |
||||
|
||||
typedef unsigned long sp_frame; |
||||
|
||||
typedef struct sp_auxdata { |
||||
size_t size; |
||||
void *ptr; |
||||
} sp_auxdata; |
||||
|
||||
typedef struct sp_data { |
||||
SPFLOAT *out; |
||||
int sr; |
||||
int nchan; |
||||
unsigned long len; |
||||
unsigned long pos; |
||||
char filename[200]; |
||||
uint32_t rand; |
||||
} sp_data; |
||||
|
||||
typedef struct { |
||||
char state; |
||||
SPFLOAT val; |
||||
} sp_param; |
||||
|
||||
int sp_auxdata_alloc(sp_auxdata *aux, size_t size); |
||||
int sp_auxdata_free(sp_auxdata *aux); |
||||
|
||||
int sp_create(sp_data **spp); |
||||
int sp_createn(sp_data **spp, int nchan); |
||||
|
||||
int sp_destroy(sp_data **spp); |
||||
int sp_process(sp_data *sp, void *ud, void (*callback)(sp_data *, void *)); |
||||
int sp_process_raw(sp_data *sp, void *ud, void (*callback)(sp_data *, void *)); |
||||
int sp_process_plot(sp_data *sp, void *ud, void (*callback)(sp_data *, void *)); |
||||
int sp_process_spa(sp_data *sp, void *ud, void (*callback)(sp_data *, void *)); |
||||
|
||||
SPFLOAT sp_midi2cps(SPFLOAT nn); |
||||
|
||||
int sp_set(sp_param *p, SPFLOAT val); |
||||
|
||||
int sp_out(sp_data *sp, uint32_t chan, SPFLOAT val); |
||||
|
||||
uint32_t sp_rand(sp_data *sp); |
||||
void sp_srand(sp_data *sp, uint32_t val); |
||||
|
||||
|
||||
typedef struct { |
||||
SPFLOAT *utbl; |
||||
int16_t *BRLow; |
||||
int16_t *BRLowCpx; |
||||
} sp_fft; |
||||
|
||||
void sp_fft_init(sp_fft *fft, int M); |
||||
void sp_fftr(sp_fft *fft, SPFLOAT *buf, int FFTsize); |
||||
void sp_fft_cpx(sp_fft *fft, SPFLOAT *buf, int FFTsize); |
||||
void sp_ifftr(sp_fft *fft, SPFLOAT *buf, int FFTsize); |
||||
void sp_fft_destroy(sp_fft *fft); |
||||
#ifndef kiss_fft_scalar |
||||
#define kiss_fft_scalar SPFLOAT |
||||
#endif |
||||
typedef struct { |
||||
kiss_fft_scalar r; |
||||
kiss_fft_scalar i; |
||||
}kiss_fft_cpx; |
||||
|
||||
typedef struct kiss_fft_state* kiss_fft_cfg; |
||||
typedef struct kiss_fftr_state* kiss_fftr_cfg; |
||||
|
||||
/* SPA: Soundpipe Audio */ |
||||
|
||||
enum { SPA_READ, SPA_WRITE, SPA_NULL }; |
||||
|
||||
typedef struct { |
||||
char magic; |
||||
char nchan; |
||||
uint16_t sr; |
||||
uint32_t len; |
||||
} spa_header; |
||||
|
||||
typedef struct { |
||||
spa_header header; |
||||
size_t offset; |
||||
int mode; |
||||
FILE *fp; |
||||
uint32_t pos; |
||||
} sp_audio; |
||||
|
||||
#endif |
Loading…
Reference in new issue