Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

readframes return 2 byte in python

When readframes() is used in python, the online documention says sampling frequency is returned it looks it returns 2 bytes. I think there are 4 byte on each frame:

left = 2 bytes
right = 2 bytes

Do I have to check if it is mono or stereo and if it is stereo, read 2 frames at a time and if it is mono, read 1 frame at a time?

like image 691
kim taeyun Avatar asked May 27 '11 08:05

kim taeyun


1 Answers

A wave file has:

  • sample rate of Wave_read.getframerate() per second (e.g 44100 if from an audio CD).
  • sample width of Wave_read.getsampwidth() bytes (i.e 1 for 8-bit samples, 2 for 16-bit samples)
  • Wave_read.getnchannels() channels (typically 1 for mono, 2 for stereo)

Every time you do a Wave_read.getframes(N), you get N * sample_width * n_channels bytes.

So, if you read 2048 frames from a 44100Hz, 16-bit stereo file, you get 8192 bytes as a result.

like image 52
tzot Avatar answered Oct 01 '22 21:10

tzot