base.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <stdint.h>
  2. #include <stdio.h>
  3. #define NO_LIBSNDFILE
  4. #ifndef NO_LIBSNDFILE
  5. #include "sndfile.h"
  6. #endif
  7. #define SP_BUFSIZE 4096
  8. #ifndef SPFLOAT
  9. #define SPFLOAT float
  10. #endif
  11. #define SP_OK 1
  12. #define SP_NOT_OK 0
  13. #define SP_RANDMAX 2147483648
  14. typedef unsigned long sp_frame;
  15. typedef struct sp_auxdata {
  16. size_t size;
  17. void *ptr;
  18. } sp_auxdata;
  19. typedef struct sp_data {
  20. SPFLOAT *out;
  21. uint32_t sr;
  22. int nchan;
  23. unsigned long len;
  24. unsigned long pos;
  25. char filename[200];
  26. uint32_t rand;
  27. } sp_data;
  28. typedef struct {
  29. char state;
  30. SPFLOAT val;
  31. } sp_param;
  32. int sp_auxdata_alloc(sp_auxdata *aux, size_t size);
  33. int sp_auxdata_free(sp_auxdata *aux);
  34. int sp_create(sp_data **spp);
  35. int sp_createn(sp_data **spp, int nchan);
  36. int sp_destroy(sp_data **spp);
  37. int sp_process(sp_data *sp, void *ud, void (*callback)(sp_data *, void *));
  38. int sp_process_raw(sp_data *sp, void *ud, void (*callback)(sp_data *, void *));
  39. int sp_process_plot(sp_data *sp, void *ud, void (*callback)(sp_data *, void *));
  40. int sp_process_spa(sp_data *sp, void *ud, void (*callback)(sp_data *, void *));
  41. SPFLOAT sp_midi2cps(SPFLOAT nn);
  42. int sp_set(sp_param *p, SPFLOAT val);
  43. int sp_out(sp_data *sp, uint32_t chan, SPFLOAT val);
  44. uint32_t sp_rand(sp_data *sp);
  45. void sp_srand(sp_data *sp, uint32_t val);
  46. typedef struct {
  47. SPFLOAT *utbl;
  48. int16_t *BRLow;
  49. int16_t *BRLowCpx;
  50. } sp_fft;
  51. void sp_fft_create(sp_fft **fft);
  52. void sp_fft_init(sp_fft *fft, int M);
  53. void sp_fftr(sp_fft *fft, SPFLOAT *buf, int FFTsize);
  54. void sp_fft_cpx(sp_fft *fft, SPFLOAT *buf, int FFTsize);
  55. void sp_ifftr(sp_fft *fft, SPFLOAT *buf, int FFTsize);
  56. void sp_fft_destroy(sp_fft *fft);
  57. #ifndef kiss_fft_scalar
  58. #define kiss_fft_scalar SPFLOAT
  59. #endif
  60. typedef struct {
  61. kiss_fft_scalar r;
  62. kiss_fft_scalar i;
  63. }kiss_fft_cpx;
  64. typedef struct kiss_fft_state* kiss_fft_cfg;
  65. typedef struct kiss_fftr_state* kiss_fftr_cfg;