annotate swig/aimc_data_io.py @ 263:07dc1f7047f5

Debug output for audio_example and added a write function for aimc_data
author hamel.phil
date Thu, 06 Jan 2011 20:11:41 +0000
parents b8f16e8acf7b
children 05463d955bf9
rev   line source
hamel@150 1 #!/usr/bin/env python
hamel@150 2 #
hamel@150 3 # audio_example.py
hamel@150 4 #
hamel@150 5 #
hamel@150 6 # Created by Philippe Hamel (hamel.phil@gmail.com) on 11-01-05.
hamel@150 7 #
hamel@150 8 # methods to read and write aimc data files
hamel@150 9
hamel@150 10 from struct import *
hamel@150 11 import numpy as N
hamel@150 12
hamel@150 13 #int_size = calcsize('i')
hamel@150 14 #float_size = calcsize('d')
hamel@150 15
hamel@150 16 def readbin(type,file) :
hamel@150 17 """
hamel@150 18 used to read binary data from a file
hamel@150 19 """
hamel@150 20 return unpack(type,file.read(calcsize(type)))
hamel@150 21
hamel@150 22 def read_aimc_data(filename):
hamel@150 23 file = open(filename,'rb')
hamel@150 24
hamel@150 25 nFrames = readbin('i',file)[0]
hamel@150 26 period = readbin( 'f', file)[0] # Frame period in ms
hamel@150 27 nChannels = readbin( 'i', file)[0] # vertical axis of an AI
hamel@150 28 nSamples = readbin( 'i', file)[0] # horizontal axis of an AI
hamel@150 29 sample_rate = readbin('f', file)[0] # sample rate of each channel in Hz
hamel@150 30
hamel@150 31 print 'nFrames, period, nChannels, nSamples, sample_rate'
hamel@150 32 print nFrames, period, nChannels, nSamples, sample_rate
hamel@150 33
hamel@150 34 nData = nFrames * nChannels * nSamples
hamel@150 35 print nData
hamel@150 36 vec_data = readbin('%if'%nData,file)
hamel@150 37
hamel@150 38 file.close()
hamel@150 39 data = N.reshape(vec_data,(nFrames, nChannels, nSamples))
hamel@150 40 return data, nFrames, period, nChannels, nSamples, sample_rate
hamel@150 41
hamel@263 42 def write_aimc_data(filename, data, sample_rate, period = 0.0):
hamel@263 43
hamel@263 44 nFrames, nChannels, nSamples = data.shape
hamel@263 45
hamel@263 46 file = open(filename,'wb')
hamel@263 47
hamel@263 48 file.write(pack('i',nFrames))
hamel@263 49 file.write(pack('f',period)) #Not correctly implemented yet
hamel@263 50 file.write(pack('i',nChannels))
hamel@263 51 file.write(pack('i',nSamples))
hamel@263 52 file.write(pack('f',sample_rate))
hamel@263 53
hamel@263 54 vec_data = data.flatten()
hamel@263 55 for elem in vec_data:
hamel@263 56 file.write(pack('f',elem))
hamel@263 57
hamel@263 58