freeverb.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #pragma once
  2. #ifdef __cplusplus
  3. extern "C"
  4. {
  5. #endif
  6. typedef struct
  7. {
  8. float feedback;
  9. float filterstore;
  10. float damp1;
  11. float damp2;
  12. float *buffer;
  13. int bufsize;
  14. int bufidx;
  15. }comb;
  16. void comb_init(comb* pcombobj);
  17. void comb_setbuffer(comb* pcombobj,float *buf, int size);
  18. float comb_process(comb* pcombobj,float inp);
  19. void comb_mute(comb* pcombobj);
  20. void comb_setdamp(comb* pcombobj,float val);
  21. float comb_getdamp(comb* pcombobj);
  22. void comb_setfeedback(comb* pcombobj,float val);
  23. float comb_getfeedback(comb* pcombobj);
  24. typedef struct
  25. {
  26. float feedback;
  27. float *buffer;
  28. int bufsize;
  29. int bufidx;
  30. }allpass;
  31. void allpass_init(allpass* pallpassobj);
  32. void allpass_setbuffer(allpass* pallpassobj,float *buf, int size);
  33. float allpass_process(allpass* pallpassobj,float inp);
  34. void allpass_mute(allpass* pallpassobj);
  35. void allpass_setfeedback(allpass* pallpassobj,float val);
  36. float allpass_getfeedback(allpass* pallpassobj);
  37. #define numcombs 8//const int numcombs = 8;
  38. #define numallpasses 4//const int numallpasses = 4;
  39. #define combtuningL1 1116//const int combtuningL1 = 1116;
  40. #define combtuningL2 1188//const int combtuningL2 = 1188;
  41. #define combtuningL3 1277//const int combtuningL3 = 1277;
  42. #define combtuningL4 1356//const int combtuningL4 = 1356;
  43. #define combtuningL5 1422//const int combtuningL5 = 1422;
  44. #define combtuningL6 1491//const int combtuningL6 = 1491;
  45. #define combtuningL7 1557//const int combtuningL7 = 1557;
  46. #define combtuningL8 1617//const int combtuningL8 = 1617;
  47. #define allpasstuningL1 556//const int allpasstuningL1 = 556;
  48. #define allpasstuningL2 441//const int allpasstuningL2 = 441;
  49. #define allpasstuningL3 341//const int allpasstuningL3 = 341;
  50. #define allpasstuningL4 225//const int allpasstuningL4 = 225;
  51. typedef struct
  52. {
  53. float gain;
  54. float roomsize, roomsize1;
  55. float damp, damp1;
  56. float wet, wet1, wet2;
  57. float dry;
  58. float width;
  59. float mode;
  60. comb combL[numcombs];
  61. allpass allpassL[numallpasses];
  62. float bufcombL1[combtuningL1];
  63. float bufcombL2[combtuningL2];
  64. float bufcombL3[combtuningL3];
  65. float bufcombL4[combtuningL4];
  66. float bufcombL5[combtuningL5];
  67. float bufcombL6[combtuningL6];
  68. float bufcombL7[combtuningL7];
  69. float bufcombL8[combtuningL8];
  70. float bufallpassL1[allpasstuningL1];
  71. float bufallpassL2[allpasstuningL2];
  72. float bufallpassL3[allpasstuningL3];
  73. float bufallpassL4[allpasstuningL4];
  74. }revmodel;
  75. void revmodel_init(revmodel* pmodelobj);
  76. void revmodel_mute(revmodel* pmodelobj);
  77. float revmodel_processsample(revmodel* pmodelobj,float in);
  78. void revmodel_setroomsize(revmodel* pmodelobj,float value);
  79. float revmodel_getroomsize(revmodel* pmodelobj);
  80. void revmodel_setdamp(revmodel* pmodelobj,float value);
  81. float revmodel_getdamp(revmodel* pmodelobj);
  82. void revmodel_setwet(revmodel* pmodelobj,float value);
  83. float revmodel_getwet(revmodel* pmodelobj);
  84. void revmodel_setdry(revmodel* pmodelobj,float value);
  85. float revmodel_getdry(revmodel* pmodelobj);
  86. void revmodel_setwidth(revmodel* pmodelobj,float value);
  87. float revmodel_getwidth(revmodel* pmodelobj);
  88. void revmodel_setmode(revmodel* pmodelobj,float value);
  89. float revmodel_getmode(revmodel* pmodelobj);
  90. void revmodel_update(revmodel* pmodelobj);
  91. #ifdef __cplusplus
  92. }
  93. #endif