DISTRHO Juice Plugins
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.0KB

  1. #ifndef CSTREAM_HXX_INCLUDED
  2. #define CSTREAM_HXX_INCLUDED
  3. class CStream
  4. {
  5. public:
  6. CStream() {
  7. sample = 0;
  8. time = 0;
  9. state = 0;
  10. counter = 0;
  11. }
  12. void setSr(int sr) {
  13. sampleRate = sr;
  14. }
  15. void open(float nTime) {//in samples
  16. state = true;
  17. if (counter<time) {
  18. counter = time-counter;
  19. } else {
  20. counter = 0;
  21. }
  22. time = nTime*sampleRate;
  23. }
  24. void close(float nTime) {//in samples
  25. state = false;
  26. if (counter<time) {
  27. counter = time-counter;
  28. } else {
  29. counter = 0;
  30. }
  31. time = nTime*sampleRate;
  32. }
  33. void update(float nSample) {
  34. sample = nSample;
  35. }
  36. float run() {
  37. if (state) {
  38. if (counter<time) {
  39. counter++;
  40. sample*=(counter/time); //linear fade-in
  41. } else {
  42. sample*=1;
  43. }
  44. } else {
  45. if (counter<time) {
  46. counter++;
  47. sample*=((time-counter)/time); //lineaar fade-out
  48. } else {
  49. sample=0;
  50. }
  51. }
  52. return sample;
  53. }
  54. private:
  55. //vars
  56. float sample;
  57. float time;
  58. float counter;
  59. int sampleRate;
  60. bool state;//is open?
  61. };
  62. #endif // CSTREAM_HXX_INCLUDED