From 9bdaa9d9ea85158fadeb1b9f76d0e79ba6970c1a Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Tue, 12 Oct 2021 14:23:58 +0200 Subject: [PATCH] CMSIS-DSP: Improvements to some Python nodes of SDF. --- SDFTools/examples/example5/graph.py | 1 + SDFTools/examples/example5/sched.py | 12 ++++++------ SDFTools/sdf/nodes/py/host/WavSource.py | 10 +++++++--- SDFTools/sdf/templates/code.py | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/SDFTools/examples/example5/graph.py b/SDFTools/examples/example5/graph.py index 6d6ef45b..3a7116f1 100755 --- a/SDFTools/examples/example5/graph.py +++ b/SDFTools/examples/example5/graph.py @@ -18,6 +18,7 @@ q15Type = CType(Q15) ### each time (half number of MFCCs) src=WavSource("src",NBCHANNELS*AUDIO_INTERRUPT_LENGTH) src.addLiteralArg("test_stereo.wav") +src.addLiteralArg(True) toMono=StereoToMono("toMono",q15Type,AUDIO_INTERRUPT_LENGTH) diff --git a/SDFTools/examples/example5/sched.py b/SDFTools/examples/example5/sched.py index 972c8f51..663abc9e 100755 --- a/SDFTools/examples/example5/sched.py +++ b/SDFTools/examples/example5/sched.py @@ -56,12 +56,12 @@ def scheduler(mfccConfig,dispbuf): # # Create node objects # - audioWin = SlidingBuffer(1024,256,fifo1,fifo2); - mfcc = MFCC(1024,13,fifo2,fifo3,mfccConfig); - mfccWin = SlidingBuffer(754,377,fifo3,fifo4); - sink = NumpySink(754,fifo4,dispbuf); - src = WavSource(384,fifo0,"test_stereo.wav"); - toMono = StereoToMono(384,192,fifo0,fifo1); + audioWin = SlidingBuffer(1024,256,fifo1,fifo2) + mfcc = MFCC(1024,13,fifo2,fifo3,mfccConfig) + mfccWin = SlidingBuffer(754,377,fifo3,fifo4) + sink = NumpySink(754,fifo4,dispbuf) + src = WavSource(384,fifo0,"test_stereo.wav",True) + toMono = StereoToMono(384,192,fifo0,fifo1) while((sdfError==0) and (debugCounter > 0)): nbSchedule = nbSchedule + 1 diff --git a/SDFTools/sdf/nodes/py/host/WavSource.py b/SDFTools/sdf/nodes/py/host/WavSource.py index 30fbac16..11fe1e0b 100755 --- a/SDFTools/sdf/nodes/py/host/WavSource.py +++ b/SDFTools/sdf/nodes/py/host/WavSource.py @@ -33,9 +33,10 @@ import wave # Pad with zero when end of file is reached class WavSource(GenericSource): "Read a stereo wav with 16 bits encoding" - def __init__(self,outputSize,fifoout,name): + def __init__(self,outputSize,fifoout,name,stereo=True): GenericSource.__init__(self,outputSize,fifoout) self._file=wave.open(name, 'rb') + self._stereo=stereo #print(self._file.getnchannels()) #print(self._file.getnframes()) @@ -43,8 +44,11 @@ class WavSource(GenericSource): def run(self): a=self.getWriteBuffer() - # Stereo file so chunk must be divided by 2 - frame=np.frombuffer(self._file.readframes(self._outputSize//2),dtype=np.int16) + if self._stereo: + # Stereo file so chunk must be divided by 2 + frame=np.frombuffer(self._file.readframes(self._outputSize//2),dtype=np.int16) + else: + frame=np.frombuffer(self._file.readframes(self._outputSize),dtype=np.int16) if frame.size > 0: a[:frame.size] = frame a[frame.size:] = 0 diff --git a/SDFTools/sdf/templates/code.py b/SDFTools/sdf/templates/code.py index 130e0af2..63be1714 100755 --- a/SDFTools/sdf/templates/code.py +++ b/SDFTools/sdf/templates/code.py @@ -60,7 +60,7 @@ def {{config.schedName}}({{optionalargs()}}): # {% for node in nodes %} {% if node.hasState %} - {{node.nodeName}} = {{node.typeName}}({{node.pythonIoTemplate()}},{{node.args}}); + {{node.nodeName}} = {{node.typeName}}({{node.pythonIoTemplate()}},{{node.args}}) {% endif %} {% endfor %}