view swig/aimc_data_io.py @ 261:b8f16e8acf7b

corrected a bug with stereo files in FileInput, and some more stuff
author hamel.phil
date Thu, 06 Jan 2011 03:33:11 +0000
parents 9a98efa01965
children 07dc1f7047f5
line wrap: on
line source
#!/usr/bin/env python
#
#  audio_example.py
#  
#
#  Created by Philippe Hamel (hamel.phil@gmail.com) on 11-01-05.
#
# methods to read and write aimc data files

from struct import *
import numpy as N

#int_size = calcsize('i')
#float_size =  calcsize('d')

def readbin(type,file) :
    """
    used to read binary data from a file
    """
    return unpack(type,file.read(calcsize(type)))

def read_aimc_data(filename):
    file = open(filename,'rb')
        
    nFrames = readbin('i',file)[0]
    period = readbin( 'f', file)[0] # Frame period in ms
    nChannels = readbin( 'i', file)[0] # vertical axis of an AI
    nSamples = readbin( 'i', file)[0] # horizontal axis of an AI
    sample_rate = readbin('f', file)[0] # sample rate of each channel in Hz
    
    print 'nFrames, period, nChannels, nSamples, sample_rate'
    print nFrames, period, nChannels, nSamples, sample_rate
    
    nData = nFrames * nChannels * nSamples
    print nData
    vec_data = readbin('%if'%nData,file)
    
    file.close()
    data = N.reshape(vec_data,(nFrames, nChannels, nSamples))
    return data, nFrames, period, nChannels, nSamples, sample_rate

#TODO write_aimc_data(data, nFrames, period, nChannels, nSamples, sample_rate)