/2-Filters&Delays/Scott_greg/Scott/dafx_main.py

https://bitbucket.org/slegroux/dafx · Python · 101 lines · 50 code · 34 blank · 17 comment · 2 complexity · 61b1d797cc9fb7d25a577a2543ac1b9d MD5 · raw file

  1. #!/usr/bin/env python
  2. #
  3. #
  4. from pylab import *
  5. from scikits.audiolab import wavread, wavwrite
  6. from dafx_filter import *
  7. from numpy import *
  8. from scipy import stats
  9. fs = 44100.
  10. def pinknoise(n, rvs=stats.norm.rvs):
  11. k = min(int(floor(log(n) / log(2))), 6)
  12. pink = zeros((n, ), float64)
  13. m = 1
  14. for i in range(k):
  15. p = int(ceil(float(n) / m))
  16. pink += repeat(rvs(size=p), m, axis=0)[:n]
  17. m <<= 1
  18. return pink / k
  19. def low_demo(snd, start, stop):
  20. # lowpass at starting at 100 and ending at 1000
  21. freq = linspace(start, stop, len(snd))
  22. normal_freq = 2 * freq / fs
  23. lowpass_y = aplowpass(snd, normal_freq)
  24. wavwrite(lowpass_y, "aplow_demo.wav", fs)
  25. def high_demo(snd, start, stop):
  26. freq = linspace(start, stop, len(snd))
  27. normal_freq = 2 * freq / fs
  28. highpass_y = aphighpass(snd, normal_freq)
  29. wavwrite(highpass_y, "aphigh_demo.wav", fs)
  30. def allpass_demo(snd, amt, blend, feedback, feedforward):
  31. y = allpass(snd, amt, blend, feedback, feedforward)
  32. wavwrite(y, "allpass_demo.wav", fs)
  33. def iir_comb_demo(snd, amt, blend, feedback):
  34. y = iir_comb(snd, amt, blend, feedback)
  35. wavwrite(y, "iir_comb_demo.wav", fs)
  36. def var_allpass_demo(snd, amt, width, blend, feedback, feedforward, breakPoint):
  37. y = universal_comb_variable(snd, amt / 1000., width / 1000., blend, feedforward, feedback, breakPoint)
  38. wavwrite(y, "var_allpass_demo.wav", fs)
  39. def main():
  40. # import soundfile
  41. snd = wavread('trumpet.wav')[0]
  42. kick = wavread('kick.wav')[0]
  43. amb = wavread('amb.wav')[0]
  44. amb = amb * 0.8 # reduce gain of this soundfile a little bit
  45. print len(amb)
  46. #low_demo(snd, 10., 500.)
  47. #high_demo(snd, 10000., 10.)
  48. #allpass_demo(snd, 1000, -find_c(1000., fs), find_c(1000., fs), 1.0)
  49. #iir_comb_demo(kick, 100, 0.5, -0.5)
  50. t = len(amb) / fs
  51. period = 1.0 / fs
  52. t_v = arange(0.0, t, period)
  53. delayTime = 2.0
  54. width = 1.0
  55. freq = 1
  56. breakPoint = (sin(2. * pi * freq * t_v))
  57. #breakPoint = linspace(1, -1, len(amb))
  58. #var_allpass_demo(snd, delayTime / 1000., width / 1000., -find_c(8000, fs), find_c(8000, fs), 1.0, breakPoint)
  59. #var_allpass_demo(amb, delayTime / 1000., width / 1000., 0.5, -0.5, 0.0, breakPoint)
  60. # flanger
  61. var_allpass_demo(amb, delayTime, width, 0.7, 0.7, 0.7, breakPoint)
  62. # chorus
  63. #breakPoint = pinknoise(len(snd))
  64. #breakPoint = breakPoint / max(breakPoint)
  65. #var_allpass_demo(snd, 20., 2., 0.7, -0.7, 1.0, breakPoint)
  66. if __name__ == '__main__':
  67. main()