Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import wave
  4. import numpy
  5. import struct
  6. import sys
  7. import csv
  8. from scikits.samplerate import resample
  9.  
  10. def write_wav(data, filename, framerate, amplitude):
  11. wavfile = wave.open(filename, "w")
  12. nchannels = 1
  13. sampwidth = 2
  14. framerate = framerate
  15. nframes = len(data)
  16. comptype = "NONE"
  17. compname = "not compressed"
  18. wavfile.setparams((nchannels,
  19. sampwidth,
  20. framerate,
  21. nframes,
  22. comptype,
  23. compname))
  24. print("Please be patient whilst the file is written")
  25. frames = []
  26. for s in data:
  27. if s < -1:
  28. s = -1
  29. elif s > 1:
  30. s = 1
  31. mul = int(s * amplitude)
  32. #print "s: %f mul: %d" % (s, mul)
  33. frames.append(struct.pack('h', mul))
  34. # frames = (struct.pack('h', int(s*self.amp)) for s in sine_list)
  35. frames = ''.join(frames)
  36. # for x in xrange(0, 7200):
  37. # wavfile.writeframes(frames)
  38. wavfile.writeframes(frames)
  39. wavfile.close()
  40. print("%s written" %(filename))
  41.  
  42.  
  43. if __name__ == "__main__":
  44. if len(sys.argv) <= 1:
  45. print "You must supply a filename to generate"
  46. exit(-1)
  47. for fname in sys.argv[1:]:
  48. data = []
  49. for time, value in csv.reader(open(fname, 'U'), delimiter=','):
  50. try:
  51. data.append(float(value))
  52. except ValueError:
  53. pass # Just skip it
  54. print "Generating wave file from %d samples" % (len(data),)
  55. arr = numpy.array(data)
  56. print(arr[0:10])
  57. # Normalize data
  58. arr /= numpy.max(numpy.abs(data))
  59. filename_head, extension = fname.rsplit(".", 1)
  60. # Resample normalized data to 44.1 kHz
  61. # target_samplerate = 44100
  62. # sampled = resample(arr, target_samplerate/100000.0, 'sinc_best')
  63. sampled = arr
  64. write_wav(sampled, filename_head + ".wav", 44100, 32700)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement