GDCM  2.4.5
PlaySound.py
1 ############################################################################
2 #
3 # Program: GDCM (Grassroots DICOM). A DICOM library
4 #
5 # Copyright (c) 2006-2011 Mathieu Malaterre
6 # All rights reserved.
7 # See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
8 #
9 # This software is distributed WITHOUT ANY WARRANTY; without even
10 # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 # PURPOSE. See the above copyright notice for more information.
12 #
13 ############################################################################
14 
15 """
16 Usage:
17 
18  python PlaySound.py input.dcm
19 """
20 
21 import gdcm
22 import sys
23 
24 #filename = "/home/mmalaterre/Creatis/gdcmDataExtra/gdcmNonImageData/audio_from_rafael_sanguinetti.dcm"
25 filename = sys.argv[1]
26 print filename
27 
28 r = gdcm.Reader()
29 r.SetFileName( filename )
30 if not r.Read():
31  sys.exit(1)
32 
33 ds = r.GetFile().GetDataSet()
34 
35 waveformtag = gdcm.Tag(0x5400,0x0100)
36 waveformsq = ds.GetDataElement( waveformtag )
37 #print waveformsq
38 
39 #print dir(waveformsq)
40 
41 items = waveformsq.GetSequenceOfItems()
42 
43 if not items.GetNumberOfItems():
44  sys.exit(1)
45 
46 item = items.GetItem(1)
47 #print item
48 
49 waveformds = item.GetNestedDataSet()
50 #print waveformds
51 
52 waveformdatatag = gdcm.Tag(0x5400,0x1010)
53 waveformdata = waveformds.GetDataElement( waveformdatatag )
54 
55 #print waveformdata.GetPointer()
56 bv = waveformdata.GetByteValue()
57 print dir(bv)
58 
59 #print bv.GetPointer()
60 print bv.GetLength()
61 l = 116838
62 
63 file='test.wav'
64 myfile = open(file, "wb")
65 s = bv.GetPointer()
66 for i in range(0, l):
67  myfile.write(s[i])
68 myfile.close()
69 
70 # http://mail.python.org/pipermail/python-list/2004-October/288905.html
71 if sys.platform.startswith('win'):
72  from winsound import PlaySound, SND_FILENAME, SND_ASYNC
73  PlaySound(file, SND_FILENAME|SND_ASYNC)
74 elif sys.platform.find('linux')>-1:
75  from wave import open as waveOpen
76  from ossaudiodev import open as ossOpen
77  s = waveOpen(file,'rb')
78  (nc,sw,fr,nf,comptype, compname) = s.getparams( )
79  dsp = ossOpen('/dev/dsp','w')
80  try:
81  from ossaudiodev import AFMT_S16_NE
82  except ImportError:
83  if byteorder == "little":
84  AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
85  else:
86  AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
87  dsp.setparameters(AFMT_S16_NE, nc, fr)
88  data = s.readframes(nf)
89  s.close()
90  dsp.write(data)
91  dsp.close()

Generated on Fri Sep 25 2015 17:58:21 for GDCM by doxygen 1.8.9.1
SourceForge.net Logo