Guest User

Untitled

a guest
May 31st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. import("stdfaust.lib");
  2.  
  3. // Maximum size of the delay buffer; a power of two because `fdelay` expects
  4. // it so, as it allows for bit masking instead of modulus for index wrapping.
  5. maxDelayLength = 1<<12;
  6.  
  7. // User parameters
  8. grainLength = hslider("Grain Size (ms)", 100.0, 100.0, 30000.0, 1.0) : si.smooth(0.995);
  9. grainPitch = hslider("Transpose (half-steps)", 0.0, -36.0, 36.0, 1.0) : si.smooth(0.995);
  10.  
  11. // Grain implementation.
  12. grainFreq = ((2^(grainPitch / 12)) - 1) * (ma.SR / grainLength);
  13. grainPhasor = os.phasor(4096, grainFreq);
  14. maxGrainOffset = (grainLength * 1000 / ma.SR) : ba.latch(grainPhasor);
  15. grainReadIndex = (grainPhasor * -1.0) : +(1.0) : *(maxGrainOffset);
  16.  
  17. // Hanning window on the range [0, 1].
  18. win(x) = 0.5 * (1.0 - cos(x * 2 * ma.PI));
  19.  
  20. // process = de.fdelay(maxDelayLength, grainReadIndex) * win(grainPhasor);
  21. process = de.sdelay(maxDelayLength, 1024, grainReadIndex) * win(grainPhasor);
Advertisement
Add Comment
Please, Sign In to add comment