Thanks! this works perfectly.

The pointer_to_array() function seems to be deprecated, however, do you 
know how to use the suggested replacement, unsafe_wrap()?

And if it's not too much to ask, I am wondering how I can do the conversion 
from this UInt8 buffer more efficiently. This is what I am currently doing, 
where blocks is the buffer:

# We now have all the blocks in the blocks array, we need to extract the
# 12-bit samples from that array. The data in the blocks is organized in 4
# bytes / 32-bit words, and each word contains two 12-bit samples.
# Calculate the number of 32-bit words in the blocks array
numwords = div(numblocks*DIG_BLOCK_SIZE,4)
# Initialize array to store the samples
data = Array{Int32}(2*numwords)
for n=1:numwords
    # Convert next four bytes to 32-bit string
    s = 
reverse(bits(blocks[(n-1)*4+1]))*reverse(bits(blocks[(n-1)*4+2]))*reverse(bits(blocks[(n-1)*4+3]))*reverse(bits(blocks[(n-1)*4+4]))
    # Parse the first 12 bits as the first sample and the 12 bits 4 bits 
later as the second sample
    data[(n-1)*2+1] = parse(Int,reverse(s[1:12]),2)
    data[(n-1)*2+2] = parse(Int,reverse(s[17:28]),2)
end

This is pretty slow, I assume due to the translation between numbers and 
strings. Is there a better way to do this?

Thanks,
Jeremy

Reply via email to