GDCM: PlaySound.py

GDCM 3.2.11

PlaySound.py
"""
Usage:
python PlaySound.py input.dcm
"""
import gdcm
import sys
#filename = "/home/mmalaterre/Creatis/gdcmDataExtra/gdcmNonImageData/audio_from_rafael_sanguinetti.dcm"
filename = sys.argv[1]
print filename
r = gdcm.Reader()
r.SetFileName( filename )
if not r.Read():
sys.exit(1)
ds = r.GetFile().GetDataSet()
waveformtag = gdcm.Tag(0x5400,0x0100)
waveformsq = ds.GetDataElement( waveformtag )
#print waveformsq
#print dir(waveformsq)
items = waveformsq.GetSequenceOfItems()
if not items.GetNumberOfItems():
sys.exit(1)
item = items.GetItem(1)
#print item
waveformds = item.GetNestedDataSet()
#print waveformds
waveformdatatag = gdcm.Tag(0x5400,0x1010)
waveformdata = waveformds.GetDataElement( waveformdatatag )
#print waveformdata.GetPointer()
bv = waveformdata.GetByteValue()
print dir(bv)
#print bv.GetPointer()
print bv.GetLength()
l = 116838
file='test.wav'
myfile = open(file, "wb")
s = bv.GetPointer()
for i in range(0, l):
myfile.write(s[i])
myfile.close()
# http://mail.python.org/pipermail/python-list/2004-October/288905.html
if sys.platform.startswith('win'):
from winsound import PlaySound, SND_FILENAME, SND_ASYNC
PlaySound(file, SND_FILENAME|SND_ASYNC)
elif sys.platform.find('linux')>-1:
from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen(file,'rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
gdcm::Reader
Reader ala DOM (Document Object Model).
Definition gdcmReader.h:54
gdcm::Tag
Class to represent a DICOM Data Element (Attribute) Tag (Group, Element).
Definition gdcmTag.h:39