246
D6.2 Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this deliverable Centro Tecnológico Naval y del Mar (CTN) and SMID Technology (SMID) Lead authors: Pablo Ruiz Molina (CTN) and Diego Pinzani (SMID) Contributors: Luigi Corradino (SMID), Pablo Cervantes Fructuoso (CTN), Alberto Figoli (SMID), Dan Toma (UPC), Joaquín del Rio (UPC), Eric Delory (PLOCAN) NeXOS - Next generation Low-Cost Multifunctional Web Enabled Ocean Sensor Systems Empowering Marine, Maritime and Fisheries Management, is funded by the European Commission’s 7th Framework Programme - Grant Agreement Nº 614102

› sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

D6.2 – Compact multifunctional passive acoustic sensor systems

transducers and signal processing description

Lead organisation for this deliverable

Centro Tecnológico Naval y del Mar (CTN) and SMID Technology (SMID)

Lead authors: Pablo Ruiz Molina (CTN) and Diego Pinzani (SMID)

Contributors: Luigi Corradino (SMID), Pablo Cervantes Fructuoso (CTN), Alberto Figoli

(SMID), Dan Toma (UPC), Joaquín del Rio (UPC), Eric Delory (PLOCAN)

NeXOS - Next generation Low-Cost Multifunctional Web

Enabled Ocean Sensor Systems Empowering Marine,

Maritime and Fisheries Management, is funded by the

European Commission’s 7th Framework Programme - Grant

Agreement Nº 614102

Page 2: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

2 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

The NeXOS Project owns the copyright of this document (in accordance with the terms described in the Consortium Agreement), which is supplied confidentially and must not be used for any purpose other than that for which it is supplied. It must not be reproduced either wholly or partially, copied or transmitted to any person without the authorization of PLOCAN. NeXOS is a Cooperation Research Project funded by the Research DG of the European Commission within the Ocean of Tomorrow 2013 Joint Call of the 7th Framework Programme (FP7). This document reflects only the authors’ views. The Community is not liable for any use that may be made of the information contained therein.

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems transducers and

signal processing description

Project Acronym: NeXOS

Project Title: Next generation Low-Cost Multifunctional Web Enabled Ocean Sensor Systems Empowering

Marine, Maritime and Fisheries Management.

Programme: The Ocean of Tomorrow 2013 – 7th Framework Programme

Project Coordinator: Eric Delory

Theme 2: Food, Agriculture and Fisheries, and Biotechnology

Theme 4: Nanosciences, Nanotechnologies, Materials and new Production Technologies

Theme 5: Energy

Theme 6: Environment (including climate change)

Theme 7: Transport (including aeronautics)

Topic: OCEAN.2013-2 Innovative multifunctional sensors for in-situ monitoring of marine environment and

related maritime activities

Instrument: Collaborative Project

Deliverable Code: 160330-NXS-WP6_D.6.2-v.1.1_final

Due date: 2016/03/30

Page 3: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

3 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

DISSEMINATION LEVEL

Public X

Restricted to other programme participants (including the Commission Services)

Restricted to a group specified by the consortium (including the Commission Services)

Confidential, only for members of the consortium (including the Commission Services)

DOCUMENT HISTORY

Edit./Rev. Date Name

Prepared 2016/03/18 Pablo Cervantes

Checked 2016/03/18 Pablo Ruiz

Checked 2016/03/29 Lars Golmen

Checked 2016/04/01 Pablo Cervantes and Pablo Ruiz

Approved 2016/06/09 Eric Delory

DOCUMENT CHANGES RECORD

Edit./Rev. Date Chapters Reason for change

0.1 2016/03/29 All Chapters Editing

1.0 2016/06/09 All Chapters WP lead and CTN – Editing, proofreading, and

additions to the text (whistle detector and

impulsive noise indicator)

1.1 2016/06/15 All Document Format adjustment before uploading to EC

(Simone Memè)

Page 4: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

4 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

DISTRIBUTION LIST

Copy no. Company / Organization

(country) Name and surname

1 PLOCAN (ES) Eric Delory, Ayoze Castro, Simone Memè

2 IFREMER (FR) Jean-Francois Rolin, Jerome Blandin, Laurent Delauney, Patrice

Woerther

3 UNI-HB (DE) Christoph Waldmann, Eberhard Kopiske

4 52-N (DE) Simon Jirka, Matthes Rieke

5 AMU (FR) Madeleine Goutx, Marc Tedetti,

6 UPC (ES) Joaquín del Río, Daniel Mihai Toma

7 ACSA (FR) Yann Le Page, Frédéric Fiquet, François-Xavier Demotes-Mainard,

Dorothée Coulomb

8 UNOL (DE) Oliver Zielinski, Rohan Henkel, Daniela Voß

9 NKE (FR) Patrice Brault, Damien Malardé, Arnaud David

10 TRIOS (DE) Rüdiger Heuermann

11 CMR (NO) David Peddie

12 CTN (ES) Noelia Ortega, Pablo Ruiz, Daniel Alonso

13 HZG (DE) Wilhelm Petersen, Steffen Assmann, Rüdiger Roettgers, Frank

Carsten

14 REC (NO) Nils Roar Hareide, Karsten Kvalsund

15 NIVA (NO) Lars Golmen, Kai Sørensen, Emanuele Reggiani

16 SMID (IT) Luigi Corradino

17 FRANATECH (DE) Michel Masson, Joaquim Schwerdtfeger

18 UNIRESEARCH (NO) Svein Østerhus

19 CNR-ISMAR (IT) Marco Faimali, Stefania Sparnocchia, Giovanni Pavanello, Michela

Martinelli

20 IEEE (FR) Jay Pearlman, Francoise Pearlman, René Garello

21 ECORYS (NL) Johan Gille, Dick Mans

Page 5: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

5 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Acknowledgements

Funding for the NeXOS project (Grant Agreement No. 614102) was received from the EU Commission as part of

the 7th Framework Programme, “The Ocean of Tomorrow”.

The help and support, in preparing the proposal and executing the project, of the partner institutions is also

acknowledged: Plataforma Oceánica de Canarias (ES), Institut Français de Recherche pour l’Exploitation de la

Mer (FR), Universität Bremen (DE), 52°North Initiative for Geospatial Open Source Software GmbH (DE), Aix

Marseille University (FR), Universitat Politècnica de Catalunya (ES), Architecture et Conception de Systèmes

Avancés (FR), Carl von Ossietzky Universität Oldenburg (DE), NKE Instrumentation (FR), TriOS MEss- und

Datentechnik GmbH (DE), Christian Michelsen Research AS (NO), Centro Tecnológico Naval y del Mar (ES),

Helmholtz-Zentrum Geesthacht Zentrum fur Material-und Kustenforschung GmbH (DE), Runde Miljøsenter AS

(NO), Norsk Institutt for Vannforskning (NO), SMID Technology s.r.l. (IT), Franatech AS (NO), Uni Research AS

(NO), Consiglio Nazionale delle Ricerche (IT), IEEE France Section (FR) and ECORYS Nederland BV (NL).

Abstract

The present document summarizes the work carried out in EU FP7 project NeXOS (www.NeXOSproject.eu) for

task 6.2 “Integrated passive acoustics transducer development”, led by SMID, and task 6.3 “Algorithms

development” led by CTN.

The purpose of task 6.2 is to develop the transducer stage required for an integrated multifunctional digital

passive acoustic sensor system. This sensor system will be capable of measuring and processing underwater

noise and bioacoustics activity. Two prototypes are developed, the first (A1), a small, low consumption,

transducer stage for mobile platforms, and a second (A2), a transducer stage for fixed platforms with

enhanced capability, including array-based source localization and acoustic propagation modelling. Three

replicas of A1 and one A2, based on A1s but with Ethernet capability, will be manufactured and tested in a

troncoconical tank in CTN facilities.

Second, signal processing algorithms for mobile (A1) and fixed platforms (A2) developed by CTN are depicted.

These algorithms address the Marine Strategy Framework Directive (MSFD) requirements in terms of

underwater noise and bioacoustics monitoring, more specifically MSFD Descriptor 1 and 11. These will be

explained in detail, including computational load measurements, capabilities and limitations, and good

practice for the user.

Codes developed under this task are summarized in the annexes and they will be available under request in

the proper format.

Page 6: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

6 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

TABLE OF CONTENTS

1 Introduction .................................................................................................................................................. 14

2 Acronyms ...................................................................................................................................................... 14

3 Reference Documents .................................................................................................................................. 14

4 Task 6.2 Integrated passive acoustics transducer development. ................................................................. 15

4.1 Introduction .......................................................................................................................................... 15

4.2 Acoustic sensor A1 & A2 ....................................................................................................................... 16

4.2.1 General description .................................................................................................................... 16

4.2.2 Hardware description ................................................................................................................. 16

4.2.2.1 Hydrophone ........................................................................................................................... 17

4.2.2.2 Neptune D/70 ........................................................................................................................ 17

4.2.2.3 JS-B100-C4DP ......................................................................................................................... 18

4.2.2.4 SQ26-01 .................................................................................................................................. 19

4.2.3 Signal conditioning unit .............................................................................................................. 21

4.2.3.1 Preamplifier input stage AD8655 ........................................................................................... 22

4.2.3.2 Gain selection ......................................................................................................................... 22

4.2.3.3 Equalizer ................................................................................................................................. 22

4.2.3.4 Gain and equalizer configuration ........................................................................................... 23

4.2.3.5 Anti-aliasing filters LTC 1569-6 ............................................................................................... 24

4.2.3.6 Differential Driver .................................................................................................................. 25

4.2.3.7 SCU power supply circuit ....................................................................................................... 25

4.2.4 Micro power SAR ADC ................................................................................................................ 26

4.2.4.1 Sampling frequency configuration ......................................................................................... 26

4.2.5 Main power supply ..................................................................................................................... 26

4.2.6 PCB design .................................................................................................................................. 27

4.2.7 Laboratory Test .......................................................................................................................... 29

4.2.7.1 Passive Components value and tolerance consideration ...................................................... 29

4.2.7.2 Frequency Range .................................................................................................................... 29

4.2.7.2.1 Upper limit ....................................................................................................................... 29

4.2.7.2.2 Frequency lower limit ...................................................................................................... 29

4.2.7.3 Equalizer ................................................................................................................................. 30

4.2.7.4 Equivalent input noise ........................................................................................................... 31

4.2.7.5 Maximum input voltage level and dynamic ........................................................................... 31

4.2.8 Acoustic resolution ..................................................................................................................... 32

5 Task 6.3. Algorithms Development ............................................................................................................... 33

5.1 Introduction .......................................................................................................................................... 33

Page 7: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

7 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.2 Methodology ........................................................................................................................................ 34

5.2.1 Fixed Point Arithmetic VS Floating Point Arithmetic .................................................................. 36

5.3 Algorithms ............................................................................................................................................ 37

5.3.1 Acoustic Sensors A1 & A2 ........................................................................................................... 37

5.3.1.1 MSFD Indicator 11.2.1. ........................................................................................................... 37

5.3.1.1.1 Introduction ..................................................................................................................... 37

5.3.1.1.2 Methodology ................................................................................................................... 38

5.3.1.1.3 Sampling Rate: 1000 Hz .................................................................................................. 58

5.3.1.1.4 Sample of: 32 bits (float) ................................................................................................. 58

5.3.1.1.5 Size of block: 2048 samples ............................................................................................ 58

5.3.1.1.6 Microprocessor: 204 MHz ............................................................................................... 58

5.3.1.1.7 Good Practice for the user .............................................................................................. 58

5.3.1.2 MSFD Indicator 11.2.1. Extended........................................................................................... 59

5.3.1.2.1 Introduction ..................................................................................................................... 59

5.3.1.2.2 Methodology ................................................................................................................... 59

5.3.1.2.3 Good Practices for the user ............................................................................................. 65

5.3.1.3 Noise Band Monitoring .......................................................................................................... 65

5.3.1.3.1 Introduction ..................................................................................................................... 65

5.3.1.3.2 Methodology ................................................................................................................... 65

5.3.1.3.3 Good Practices for the user ............................................................................................. 67

5.3.1.4 MSFD Indicator 11.1.1. ........................................................................................................... 67

5.3.1.4.1 Introduction ..................................................................................................................... 67

5.3.1.4.2 Methodology ................................................................................................................... 68

5.3.1.4.3 Sampling Rate: 48000 Hz ................................................................................................ 71

5.3.1.4.4 Sample of 32 bits: (float) ................................................................................................ 71

5.3.1.4.5 Size of block: 2048 samples ............................................................................................ 71

5.3.1.4.6 Microprocessor: 204 MHz ............................................................................................... 71

5.3.1.4.7 71

5.3.1.4.8 Duty cycle ........................................................................................................................ 71

5.3.1.4.9 Nº Blocks ......................................................................................................................... 71

5.3.1.4.10 Time of processing........................................................................................................... 71

5.3.1.4.11 ~42,7 msec....................................................................................................................... 71

5.3.1.4.12 1 block ............................................................................................................................. 71

5.3.1.4.13 860 µsec .......................................................................................................................... 71

5.3.1.4.14 ~213 msec........................................................................................................................ 71

5.3.1.4.15 5 blocks ............................................................................................................................ 71

Page 8: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

8 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.4.16 4.1 msec........................................................................................................................... 71

5.3.1.4.17 ~1 sec ............................................................................................................................... 71

5.3.1.4.18 23 blocks .......................................................................................................................... 71

5.3.1.4.19 17,8 msec......................................................................................................................... 71

5.3.1.4.20 ~10.66 sec ........................................................................................................................ 71

5.3.1.4.21 250 blocks ........................................................................................................................ 71

5.3.1.4.22 194,1 msec....................................................................................................................... 71

5.3.1.4.23 ~30.72 sec ........................................................................................................................ 71

5.3.1.4.24 720 blocks ........................................................................................................................ 71

5.3.1.4.25 554,1 msec....................................................................................................................... 71

5.3.1.4.26 Good Practices for the user. ............................................................................................ 71

5.3.1.5 Click Detector ......................................................................................................................... 72

5.3.1.5.1 Introduction ..................................................................................................................... 72

5.3.1.5.2 Methodology ................................................................................................................... 72

5.3.1.5.3 Good Practices for the user ............................................................................................. 85

5.3.1.6 Whistle Detector .................................................................................................................... 86

5.3.1.6.1 Introduction ..................................................................................................................... 86

5.3.1.6.2 Methodology ................................................................................................................... 86

5.3.1.6.3 Good Practices for the user ............................................................................................. 98

5.4 Support systems (GUIS for user interface). .......................................................................................... 98

5.4.1 Noise Band Monitoring GUI ........................................................................................................ 98

5.4.2 MFSD Indicator 11.2.1, indicator 11.2.1 extended and noise band monitoring GUI .............. 101

5.4.3 Click Detector GUI .................................................................................................................... 101

6 Annex I – Indicator 11.2.1 Code .................................................................................................................. 106

6.1 Structure ............................................................................................................................................. 106

6.2 Code .................................................................................................................................................... 106

6.2.1 Indicator 11.2.1 ........................................................................................................................ 106

6.2.2 LookUpTable_UD_SPLrms ........................................................................................................ 109

7 Annex II – Indicator 11.2.1 Code ................................................................................................................. 126

7.1 Introduction ........................................................................................................................................ 126

7.2 Validation of Filters ............................................................................................................................. 127

7.2.1 Validation in Matlab ................................................................................................................. 127

7.2.2 Validation in ARM Cortex M4 ................................................................................................... 136

7.3 Structure Code .................................................................................................................................... 140

7.3.1 Code ......................................................................................................................................... 140

7.3.1.1 Filters ................................................................................................................................... 140

Page 9: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

9 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

7.3.2 INC Folder ................................................................................................................................. 154

7.3.3 SRC Folder................................................................................................................................. 157

8 Annex III – Noise Band Monitoring ............................................................................................................. 179

8.1 Structure ............................................................................................................................................. 179

8.2 Code .................................................................................................................................................... 179

8.2.1 Noise Band Monitoring ............................................................................................................ 179

8.2.2 LookUpTable_UD_SPLrms ........................................................................................................ 182

8.2.3 Percentile_level ........................................................................................................................ 193

8.2.4 Filters (63 and 125 Hz) .............................................................................................................. 195

8.2.5 Main (simulation of CTN).......................................................................................................... 195

9 Annex IV – Click Detector Code .................................................................................................................. 198

9.1 Structure ............................................................................................................................................. 198

9.2 Code .................................................................................................................................................... 198

9.2.1 click_detector_f.h ..................................................................................................................... 198

9.2.2 click_parameters_f.h ................................................................................................................ 198

9.2.3 click_parameters_f.h ................................................................................................................ 201

9.2.4 get_click_f.h ............................................................................................................................. 201

9.2.5 look_for_clicks.h ....................................................................................................................... 202

9.2.6 lookUpTable_UD_SPL.h ............................................................................................................ 203

9.2.7 click_detector.c ........................................................................................................................ 205

9.2.8 get_click.c ................................................................................................................................. 208

9.2.9 look_for_clicks.c ....................................................................................................................... 210

10 Annex V – Whistle Detector Code .............................................................................................................. 215

10.1 Structure ............................................................................................................................................. 215

10.2 Matlab Code ....................................................................................................................................... 215

10.2.1 Generate_wave ........................................................................................................................ 215

10.2.2 Spectrogram_block.m .............................................................................................................. 217

10.2.3 MedianFilter.m ......................................................................................................................... 218

10.2.3.1 A.2.1 Bubble.m ................................................................................................................ 221

10.2.3.2 A.2.2 Swap.m ................................................................................................................... 221

10.2.4 AverageSubtraction.m .............................................................................................................. 221

10.2.5 Thresholding.m ......................................................................................................................... 222

10.2.6 ConnectingRegions.m ............................................................................................................... 223

10.2.6.1 A.5.1 Pixel.m .................................................................................................................... 228

10.2.6.2 A.5.2 Region.m ................................................................................................................. 229

10.3 WhistleDetector.m ............................................................................................................................. 232

Page 10: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

10 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

10.3.1 MainWhistleDetector.m ........................................................................................................... 234

10.4 Platform Code ..................................................................................................................................... 238

10.4.1 Spectrogram.h .......................................................................................................................... 238

10.4.2 Spectrogram.c .......................................................................................................................... 238

10.4.3 FFT.h ......................................................................................................................................... 239

10.4.4 FFT.c.......................................................................................................................................... 240

10.4.5 Thresholding.h .......................................................................................................................... 241

10.4.6 Thresholding.c .......................................................................................................................... 241

10.4.7 ConnectingRegions.h ................................................................................................................ 242

10.4.8 Globals.h ................................................................................................................................... 243

10.4.9 WhistleDetector_f.h ................................................................................................................. 243

10.4.10 WhistleDetector_f.c ............................................................................................................. 244

10.4.11 Development notes .............................................................................................................. 245

LIST OF FIGURES

Figure 1 Logic block diagram of the transducer stage. ......................................................................................... 17

Figure 2 Hydrophone D/70 ................................................................................................................................... 17

Figure 3. D/70 Receive graph ............................................................................................................................... 18

Figure 4. D/70 beam pattern. ............................................................................................................................... 18

Figure 5 JS-B100 Receive graph ............................................................................................................................ 19

Figure 6 JS-B100 hydrophone ............................................................................................................................... 19

Figure 7 SQ26 hydrophone ................................................................................................................................... 19

Figure 8 SCU block diagram. ................................................................................................................................. 21

Figure 9. Schematic diagram example .................................................................................................................. 27

Figure 10 component PCB footprint ..................................................................................................................... 27

Figure 11 PCB Routing .......................................................................................................................................... 28

Figure 12 Resulting final PCB ................................................................................................................................ 28

Figure 13. SCU analog output - Low Gain fc= 3.2MHz ......................................................................................... 28

Figure 14. SCU analog output - Hi Gain fc = 3.2MHz ........................................................................................... 28

Figure 15. SCU analog output - Low Gain fc = 1.6MHz ........................................................................................ 29

Figure 16 Equivalent circuit schematic of the hydrophone and input stage ........................................................ 30

Figure 17 Equalizer frequency response .............................................................................................................. 30

Page 11: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

11 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 18 Noise density output of SCU ................................................................................................................. 31

Figure 19. Computational load between Fixed point arithmetic and floating point arithmetic. Click Detector

algorithm. ............................................................................................................................................................. 36

Figure 20. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1

algorithm (512 samples) ....................................................................................................................................... 36

Figure 21. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1

algorithm (1024 samples) ..................................................................................................................................... 36

Figure 22. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1

algorithm (2048 samples) ..................................................................................................................................... 37

Figure 23. Indicator 11.2.1 Flow scheme .............................................................................................................. 38

Figure 24. Indicator 11.2.1 complete flow scheme .............................................................................................. 39

Figure 25. Block Diagram differences between FIR and IIR filters implementation. Notice the feedback loop

from output ( y(n) ) to input ( x(n) ) in IIR filter block diagram. Picture extracted from (MikroElektronika D.O.O.)41

Figure 26. Frequency response of third-octave band filters centered at 63 and 125 Hz Vs third-octave band

class 0 IEC 61260 ( 1995 ) requirements. Sample Frequency (Fs) = 500 Hz. Matlab performance. ..................... 43

Figure 27. Frequency response of third-octave band filters centered at 63 and 125 Hz Vs third-octave band

class 0 IEC 61260 ( 1995 ) requirements. Sample Frequency (Fs) = 1000 Hz. Matlab Performance. ................... 43

Figure 28. Impulse and Frequency response of third-octave band filters centered at 63 and 125 Hz. Matlab

filters plotted in blue and Biquad filters using biquad cascade Direct Form I filtering (slow version = green line;

fast version = green line). Fs = 500 Hz. The green line is overlapped by the magenta coloured one. Length of

input signal is 1024 samples. ................................................................................................................................ 44

Figure 29. Impulse and Frequency response of third-octave band filters centered at 63 and 125 Hz. Matlab

filters plotted in blue and Biquad filters using biquad cascade Direct Form I filtering (slow version = green line;

fast version = green line) from ARM CMSIS DSP library. Fs = 1000 Hz. The green line is overlapped by the

magenta coloured one. Length of input signal is 1024 samples. ......................................................................... 45

Figure 30. Reference output signal of LPC 4337 board for computation time measurements. The pulse signal

corresponds to the time of processing. ................................................................................................................ 46

Figure 31. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn = 63 Hz. .. 47

Figure 32. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn = 125 Hz . 47

Figure 33. Impulse response and frequency response of a FIR filter designed for its frequency response to

match with IIR Butterworth filter with order 3 which fulfills with IEC 61260 (1995) requirements. ................... 48

Figure 34. Comparison between SPL values computed over a white gaussian noise plus a pure tone of 63 Hz

filtered with and IIR filter using circular convolution and an FFT-based filter, both with Fc = 63 Hz. .................. 49

Figure 35. Filter process comparison between Matlab (Butterworth filter) and ARM Cortex M4 (Biquad filter).

fn = 63 Hz. ............................................................................................................................................................. 55

Figure 36. Filter process comparison between Matlab (Butterworth filter) and ARM Cortex M4 (Biquad filter).

fn = 125 Hz. ........................................................................................................................................................... 55

Figure 37. Units Flow for the SPLrms Computation. ............................................................................................ 56

Figure 38. Reference output signal of LPC 4337 board for computation time measurements. Pulse corresponds

to time of processing, here a duty cycle of 954 sec. ............................................................................................ 58

Page 12: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

12 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 39. Indicator 11.2.1 extended complete flow scheme. ............................................................................. 61

Figure 40. Noise band monitoring complete flow scheme. .................................................................................. 66

Figure 41. Indicator 11.1.1 Flow Scheme ............................................................................................................. 68

Figure 42. Indicator 11.1.1 complete flow scheme .............................................................................................. 70

Figure 41. Click Detector Algorithm Scheme implemented in PAMGuard. Picture extracted from help document

included in the PAMGuard software. ................................................................................................................... 73

Figure 42. Click Parameters for test validation in Matlab .................................................................................... 77

Figure 43. PAMGuard Results from test WAV file ................................................................................................ 77

Figure 44. Click Detector Matlab algorithm results with Test WAV file. 40 Clicks detected ................................ 78

Figure 45. Detailed zoom on Figure 44. ................................................................................................................ 78

Figure 46. Click Start and end calculation - Matlab function................................................................................ 79

Figure 47. Structure of the Click Detector Algorithm implemented in C for MicroProcessor ARM Cortex M4 ... 80

Figure 48. Simulated Click generated signal for NeXOS Algorithm Validation ..................................................... 84

Figure 49. Processing time for the Click Detector ................................................................................................ 85

Figure 50. PAMGuard Whistles And Moans Detector block diagram. .................................................................. 86

Figure 51. Fundamental PAMGuard Whistles And Moans Detector flow scheme ............................................... 87

Figure 52. Example of overlapping from one FFT to the next in two different chunks of the input signal for

fft_length = BLOCK_SIZE and fft_hop = fft_length/2 ............................................................................................ 89

Figure 53. Example of the operation of the Median Filter ................................................................................... 90

Figure 54. Block diagram for the average subtraction module of the Whistle Detector ..................................... 91

Figure 55. Comparison between Matlab (left) and PAMguard (right) spectrogram ............................................ 93

Figure 56. Comparison between Matlab (left) and PAMguard (right) noise reduction stage .............................. 94

Figure 57. Comparison between Matlab (left) and PAMguard (right) thresholded spectrogram ........................ 94

Figure 58. Comparison between a thresholded spectrogram in Matlab (left) with 3 dB threshold and a

thresholded spectrogram in PAMguard (right) with 8 dB threshold ................................................................... 94

Figure 59. Different filter parameters depending on the choice made by the user. ........................................... 99

Figure 60. Response of the Butterworth filter depending on the type chosen. ................................................. 100

Figure 61. Response of the Chebyshev filter depending on the type chosen. ................................................... 100

Figure 62. GUI for header file of indicator 11.2.1. .............................................................................................. 101

Figure 63. Response of the Butterworth filter depending on the type chosen. ................................................. 104

Figure 64. Response of the Chebyshev filter depending on the type chosen. ................................................... 105

LIST OF TABLES

Table 1. JS-B100-C4DP Acoustic Specifications. ................................................................................................... 18

Page 13: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

13 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Table 2. SQ26 Acoustic Specifications. ................................................................................................................. 19

Table 3. Acoustic Specifications estimation using hydrophones specifications provided by the manufacturers. 20

Table 4. Hardware configurations. ....................................................................................................................... 23

Table 5. Maximum Input Voltage to ADC ............................................................................................................. 31

Table 6. Acoustic dynamic range achieved depending on the chosen hydrophone transducer. ......................... 32

Table 7. Main differences between FIR and IIR filters .......................................................................................... 41

Table 8. Relevant frequencies for third-octave band filters generation. ............................................................. 42

Table 9. Filter Parameters used in the comparison between filtering performance in Matlab and on LPC 4337

board. ................................................................................................................................................................... 42

Table 10. Processing Time of LPC 4337 board using biquad filtering using ARM CMSIS DSP library. Filters are IIR

third octave bands centered at 63 and 125 Hz for sample frequencies of 500 and 1000 Hz. FV and SV in 4th

column stand for Fast and Slow versions of ARM CMSIS biquad cascade filter function. .................................. 46

Table 11. Overall SPL over 10 seconds, obtained from SPLs computed over different slice lengths ................... 50

Table 12. Fields of information contained in the header of the standard sharable files in BIAS project. ............ 52

Table 13. Validation of Matlab filters. .................................................................................................................. 54

Table 14. Indicator 11.2.1. Computational load vs duty cycle.............................................................................. 58

Table 15. Cut-off frequencies of each third octave band filter its associated sample frequency and butterworth

order used in Indicator 11.2.1. Extended algorithm ............................................................................................ 60

Table 16. Chosen filters for Indicator 11.2.1 Extended. (To be optimized) .......................................................... 63

Table 17. Validation of the decimation module. .................................................................................................. 64

Table 18. Indicator 11.2.1 extended. Computational load vs duty cycle. ............................................................ 64

Table 19. Noise Band Monitoring. Computational load vs duty cycle .................................................................. 67

Table 20 Indicator 11.1.1. Computational load vs duty cycle ............................................................................... 71

Table 21. PAMGuard Click Detector Module and Matlab Click detector user defined inputs and their default

values.................................................................................................................................................................... 75

Table 22. Results obtained with Click Detector Algorithms implemented in Matlab and in NeXOS (C

programming language) ....................................................................................................................................... 84

Table 23. Comparison between connecting regions performance in Matlab and PAMGuard............................ 95

Table 24. Filter Parameters and its default values. ............................................................................................ 100

Table 25. Click Parameters and its default values. ............................................................................................. 103

Table 26. Filter Parameters and its default values. ............................................................................................ 104

Page 14: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

14 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1 INTRODUCTION

This document reports the work carried out in Tasks 6.2 and 6.3 of Work Package 6 of the European project

NeXOS. The work follows the NeXOS Description of Work and Deliverable D6.1 - Passive Acoustics integrated

sensor systems development plan. The document is divided in two main parts relative to the work done in task

6.2 “Integrated passive acoustics transducer development” led by SMID and 6.3 “Algorithms Development” led

by CTN.

Codes developed under this task are summarized in the annexes and they will be available under request in

the proper format.

2 ACRONYMS

ADC: Analog-to-digital converter.

ARM: Advanced RISC Machine.

FIR: Finite Impulse Response.

GPS: Global Positioning System.

GUI: Graphical User Interface.

HYD: Hydrophones.

IIR: Infinite Impulse Response.

MSFD: Marine Strategy Framework Directive.

MCU: Micro Controller Unit.

PCB: Printed Circuit Board.

PPS: Pulse Per Second.

SAR: Successive approximation register.

SCU: Signal Conditioning Unit.

SEL: Sound Exposure Level

SPLrms: Sound Pressure Level

3 REFERENCE DOCUMENTS

Aj, V. d., Ma., A., & André M, B. K. (2012). European MArine Strategy Framework Directive - Good

Environmental Status (MSFD GES): Report of the Technical Subgroup on Underwater noise and other forms of

energy.

ARM., L. (24 de September de 2014). CMSIS DSP Software Library. Recuperado el 17 de March de 2015, de

http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html

Betke K., F. T. (2015). BIAS Standards for Signal Processing. Aims and Recommendations. Verfuβ U.K., Sigray P.

CMSIS. (08 de 03 de 2016). CMSIS DSP. Obtenido de

http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html

Page 15: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

15 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Comission, E. (2008). DIRECTIVE 2008/56/EC OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 17 June

2008 establishing a framework for community action in the field of marine environmental policy (Marine

Strategy Framework Directive).

Dekeling, R. T. (2014 a). Monitoring Guidance for Underwater Noise in European Seas, Part II: Monitoring

Guidance Specifications. JRC Scientific and Policy Report EUR 26555 EN, Publications Office of the European

Union, Luxembourg, doi: 10.2788/27158.

Dekeling, R. T. (2014 b). Thomsen, F., Werner, S., Wittekind, D., Young, J.V., Monitoring Guidance for

Underwater Noise in European Seas, Part III: Background Information and Annexes. European Union,

Luxembourg, doi: 10.2788/2808: JRC Scientific and Policy Report EUR 26556 EN, Publications Office of the.

Delory, E. (2015). D6.1 - Passive Acoustics integrated sensor systems development plan.

MikroElektronika D.O.O. (s.f.). MikroElectronica. Recuperado el 07 de july de 2015, de

http://www.mikroe.com/chapters/view/73/chapter-3-iir-filters/

S12.9, A. (1988). Quantities and Procedures for Description and Measurement of Environmental Sound. Part 1.

4 TASK 6.2 INTEGRATED PASSIVE ACOUSTICS TRANSDUCER DEVELOPMENT.

This section reports on the work carried out in task 6.2 of NeXOS Project Work Package 6. Leader of this task is

partner 16, SMID Technology SRL. The work complements Task 6.3 (algorithms), reported in section 5.

4.1 INTRODUCTION

We herein summarize the specifications for the sensors to be developed, designated as the passive acoustics

sensor systems:

• A1: Compact, low power multifunctional passive acoustics sensor system, enabling on-platform

measurement and characterization of underwater noise and several soundscape sources, aimed for platforms

with limited autonomy, power supply and/or communication capability.

• A2: Compact multifunctional passive acoustics sensor system, enabling real-time waveform streaming

for the measurement of underwater noise and several soundscape sources, aimed for platforms with

unlimited power autonomy and/or communication capability.

NeXOS sensors A1 and A2 will be capable of measuring and processing underwater noise and bioacoustic

activity (minimal requirements) and potential additional variables as shall be identified in WP1. Innovation will

result in an unprecedented dynamic range and spectrum for such a compact, cost-efficient system.

Measurement capability will allow single measurements of: sea noise, vessel traffic noise, noise from human

activities (air guns, etc.), marine biological noise (mammal survey), air transport, and production of oil and gas

(seismics, explosions, dredging, construction, drilling) as determined by the detailed requirements of the

project. The device will consist of a digital passive acoustic transducer array, and its raw signal will be pre-

processed to the level specified in WP3. The array will be equipped with motion sensors (pan, tilt, compass) to

allow detection and tracking of noise sources. The device will allow integration of acoustics-relevant

oceanographic sensors (sound velocity, temperature, depth) for real-time propagation modelling. All signals

(acoustic, positional, oceanographic) will be digitised for transmission and pre and post- processing by the

sensor and user interface (WP4), as specified in WP3. Two prototypes will be developed:

Page 16: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

16 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1) the first, a small, low consumption, transducer stage for mobile platforms, which will include the minimal

requirements (at least one multifunctional hydrophone for noise and bioacoustic sources) and where viable,

passive acoustics-relevant oceanographic sensors, as identified in WP1.

2) the second, a transducer stage for fixed platforms with enhanced capability, including array-based source

localisation and acoustic propagation modelling through integration of parameters such as position,

conductivity, temperature and depth.

4.2 ACOUSTIC SENSOR A1 & A2

4.2.1 General description

Before reading this section, the reader is advised that this document follows a development plan and

therefore for the sake of conciseness does not include all the reference material, which is the subject of:

Delory, E. (2015). D6.1 - Passive Acoustics integrated sensor systems development plan. NeXOS Project.

The requirements set out for the transducer stage in the above document have been addressed as follows:

Dynamic range: In order to obtain a 50 to 180dB dynamic range, considering the inherent sensitivity of

hydrophone transducers, a cost efficient approach is to use two amplifier stages with different gains.

ADCs: The signals will be sampled by two 16-bit SAR converters controlled by an ARM microcontroller that

performs the mathematical operations.

To avoid aliasing problems after the amplifier stages we have inserted digital filters, controlled by MCU.

The MCU processes the sampled data and transmits the results via RS-232 serial port (A1) and via Ethernet

(A2).

Clock: A1 is equipped with a real time clock useful to tag temporally sampled data, but is also equipped with a

PPS input for the GPS link.

A specificity of A2 is that it is connected to a Master Unit that will manage the synchronisation.

This section deals only with the transducer stage composed of hydrophone, SCU and A/D converter. Full sensor

assemblies descriptions will be reported in D6.3.

SCU and A/D converter components will be the same on both A1 and A2 devices.

4.2.2 Hardware description

The transducer stage consists of:

• A high-quality hydrophone sensor (also hereafter referred to as the transducer)

• Signal conditioning unit with low power, low noise CMOS preamplifiers, Equalizer, Anti-aliasing filters.

• Micropower SAR Analog to Digital Converters 16 bit ADS8867 (2 Ch.)

The following figure shows the logic block diagram of the transducer stage:

Page 17: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

17 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.2.1 Hydrophone

The transducers that have been selected to be integrated on A1 and A2, are of three high-quality and relatively

low-cost (<<1k€) commercial types: they are different in sensitivity, shape and cost. This allows for covering

high quality requirements (allowing for low-noise measurement in deep sea conditions) cost-efficiency

(relatively low cost for the specified quality) and flexibility, depending on the platform to be used and the

application scenario. All three are rated down to 1Hz, allowing for seismic signal monitoring if required, while

still measuring until above 20kHz and beyond for certain models, and still very compact. All three can be

integrated with little modification of the circuit components, just requiring different moulds for resin casting.

All three transducers will be integrated, tested and validated on separate NeXOS replicas (i.e. the full

assemblies to be delivered on M34). We hereby provide the specifications.

4.2.2.2 Neptune D/70

This hydrophone is a Neptune Sonar mod. D/70. This hydrophone transducer has very good sensitivity and

EMF shielding characteristics. It is suitable in a broad range of applications and for several platform types in

NeXOS, particularly on autonomous vehicles graded down to 1000m depth.

Sensitivity: -198 dB re μPa @ 15kHz

Capacitance: 9.3 nF @ 1kHz

Operating depth: down to 1500 m

Frequency response: 1 Hz to 70 kHz

Electrical insulation: 500 M ohm

Diameter: 34 mm

Length: 45 mm

Figure 2 Hydrophone D/70

HYD CLK

Gain Equalizer Clk out

Gain 20 dB Equalizer SPI Gain

0-30 dB

Gain High/Low

16 bit ADC CH-A

Diff driver

16 bit ADC CH-B

Diff driver

CLK Vref 2V82

On/off

3V LDO REGULATOR

VDD V analog

Antialiasing Filter LTC 1569-6

Antialiasing Filter LTC 1569-6

Figure 1 Logic block diagram of the transducer stage.

Page 18: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

18 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 4. D/70 beam pattern.

4.2.2.3 JS-B100-C4DP

The JS-B100-C4DP Acoustic Sensor is a cutting edge, high quality, high performance solution to a wide and

varied range of underwater acoustic measurement applications. This hydrophone has the additional benefit of

greater depth as compared to the D70. Note worthily lead-time for delivery was more than 6 months at the

time we ordered them, producing substantial delays in the integration process.

Sensitivity: -201 dB re μPa.

Capacitance: 4 nF .

Operating depth: down to 3600 m.

Frequency response: 1 Hz to 50 kHz.

Directivity: Omni-directional +/- 1dB.

Diameter: 24 mm.

Length: 48 mm.

Table 1. JS-B100-C4DP Acoustic Specifications.

Figure 3. D/70 Receive graph

Page 19: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

19 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 5 JS-B100 Receive graph

Figure 6 JS-B100 hydrophone

4.2.2.4 SQ26-01

The hydrophone is a Sensor Technology Limited mod. SQ26-01, available with integral shield in a low noise

configuration. This hydrophone has the benefit of a reduced price as compared to the above, and might be

more suitable for installation on mobile systems not meant to be recovered such as ARGO profilers.

Sensitivity: -193.5 dB re μPa

Capacitance: 1.4 nF +/-10%

Operating depth: down to 2000 m

Frequency response: 1 Hz to 28 kHz

Electrical insulation 500 M ohm

Diameter: 25.4 mm

Length: 25.4 mm

Table 2. SQ26 Acoustic Specifications.

Figure 7 SQ26 hydrophone

Note: The manufacturer does not provide the receiver and sensitivity graphs.

Using the values indicated by hydrophone manufacturers and the measurements made on circuit prototypes

we could predict the following acoustic specifications for each transducer.

Hydrophone

model

sensitivity frequency

band

equivalent input

noise

max input source

level

dB re 1 μPa Hz dB re 1 μPa/√Hz dB

CHA

HI GAIN

SQ26-01 -143.5 1.37 to 28k +23.5 +143.5

D/70 -148 1 to 50k +28 +148

JSB100 -151 1 to 50k +31 +151

Page 20: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

20 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

CHB

LOW

GAIN

SQ26-01 -173.5 1.37 to 28k +65 +173.5

D/70 -178 1 to 50k +69.5 -178

JSB100 -181 1 to 50k +72.5 +181

Table 3. Acoustic Specifications estimation using hydrophones specifications provided by the manufacturers.

The values, especially in terms of sensitivity and bandwidth, will need to be confirmed by the measurements in

the tank.

The frequency band was calculated considering the Signal Conditioning Unit (SCU) input impedance (see

4.2.7.2.2).

Page 21: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

21 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.3 Signal conditioning unit

The SCU, as shown in the picture below, consists of two amplifier stages, equalizer, anti-aliasing active filters,

differential drivers and a low noise low dropout power supply stage.

The equalizer is connected before the hi-gain stage in order to optimize the signal to sea noise ratio at lower

frequency. The anti-aliasing hi-pass filters are controlled from the MCU in order to change the cut-off

frequency as a function of the application.

Figure 8 SCU block diagram.

CLK

Gain 20 dB

Equalizer

Antialiasing Filter

LTC 1569-6

Gain 0-30 dB

Gain High/Low

Diff driver

Diff driver

CLK

Vref 2V82

On/off

3V LDO regulator

V analog Ext Vdc

Antialiasing Filter

LTC 1569-6

input Output Hi gain

Output Low gain

Page 22: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

22 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.3.1 Preamplifier input stage AD8655

Preamplifier quality is critical in order to warrant the high-sensitivity needed for low ambient noise

measurements. After selecting high-sensitivity, cost-effective compact transducers, we chose the industry’s

lowest noise, precision CMOS amplifiers (also very low power). The selected types are the Analog Devices

DigiTrim® technology, also to achieve high dc accuracy. The OPAMP part used is a low noise precision CMOS

amplifier AD8655 from Analog Devices. The AD8655/AD8656

The AD8655/AD8656 provides low noise (2.7 nV/√Hz at 10 kHz), low THD + N (0.0007%), and high precision

performance (250 μV max over VCM) to low voltage applications. The ability to swing rail-to-rail at the input

and output enables designers to buffer analog-to-digital converters (ADCs) and other wide dynamic range

devices in single-supply systems. Their high precision performance improves the resolution and dynamic range

in low voltage applications. Audio applications, such as microphone pre-amps and audio mixing consoles,

benefit from the low noise, low distortion, and high output current capability of the AD8655/AD8656 to reduce

system level noise performance and maintain audio fidelity. The high precision and rail-to-rail input and output

of the AD8655/ AD8656 benefit data acquisition, process controls, and PLL filter applications.

The AD8655/AD8656 are fully specified over the −40°C to +125°C temperature range. The AD8655/AD8656 are

available in Pb-free, 8-lead MSOP and SOIC packages.

Main Features:

Input noise voltage density: en= 3 nV//√Hz f= 5KHz

Bandwidth: 28 MHz

Supply Current: 3.7 mA at 3V

No Phase Reversal

For reference see www.analog.com part number AD8655ARMZ

4.2.3.2 Gain selection

The hydrophone signal is spitted in two different channels with two different gains and two simultaneously

SAR 16 bit ADC.

To comply with both the requested maximum pressure level and sensitivity of the sensor, the selected gains

are:

• CHA Hi Gain: 20 dB or 50 dB

• CHB Low Gain: 20 dB

4.2.3.3 Equalizer

The equalizer circuit is a one pole filter with a cut-off frequency of 3200 Hz. It will be used with high gain (50

dB) to avoid saturation at low frequency caused by rough sea, ship traffic, etc.

At the same time, the equalizer ensures high dynamic range at high frequency where the ambient noise level is

lower.

The equalizer can be turned off by the MCU.

Page 23: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

23 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.3.4 Gain and equalizer configuration

In order to allow maximum flexibility, the circuit was designed to provide four different configurations,

selectable via software:

Config Acquired

channel Gain (CHA) command Equalizer (CHA) command

on=hi gain on=active

1 A and B on off

2 A on off

3 A on on

4 A off (recommended) on (recommended)

Table 4. Hardware configurations.

CONFIG. 1

This configuration meets all the requirements of NEXOS with in addition the seismic applications. It should

always be used when the MCU is able to handle hi data throughput.

When the throughput is not sustainable, configurations 2-3-4 should be used.

CONFIG. 2

This configuration accepts source levels up to 143.5dB re 1 μPa.

It should be used only in quiet sea conditions, especially in deep water.

CONFIG. 3

Equalizing the low frequencies, this configuration can also be used with heavy ship traffic and bad weather

conditions.

Channel sensitivity is frequency dependent.

This configuration is recommended to monitor the 100 Hz - 50 kHz band.

CONFIG. 4

This configuration is recommended for low frequency monitoring, where the ambient ocean noise is high. This

configuration can be used as seismic hydrophone at low frequency.

Page 24: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

24 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.3.5 Anti-aliasing filters LTC 1569-6

In order to reduce the load on the CPU, especially when high bandwidth is considered unnecessary (low-

frequency monitoring), the possibility to modify the sampling frequency via hardware (by means of switched

capacitor filters) has been taken into consideration.

The chosen solution is based on the LTC1569-6 model from Linear Technology. The LTC1569-6 is a 10th order

low-pass filter featuring linear phase and a root raised cosine amplitude response. The high selectivity of the

LTC1569-6 combined with its linear phase in the pass-band makes it suitable for filtering both in data

communications and data acquisition systems. The filter attenuation is 50dB at 1.5 x fCUTOFF, 60dB at 2 x

fCUTOFF, and in excess of 80dB at 6 x fCUTOFF. DC-accuracy-sensitive applications benefit from the 5mV

maximum DC offset.

The cutoff frequency can be set with an external clock and the clock-to-cutoff frequency ratio is 64:1. The ratio

of the internal sampling rate to the filter cutoff frequency is 128:1.

The LTC1569-6 was fully tested for a cutoff frequency of 64kHz with a single 3V supply. The LTC1569-6 features

power saving modes and is available in an SO-8 surface mount package, suitable for our compact low-power

requirements.

Main features:

Root Raised Cosine Response

3mA Supply Current with a Single 3V Supply

Up to 64kHz Cut off on a Single 3V Supply

10th Order, Linear Phase Filter in an SO-8

DC Accurate, VOS(MAX) = 5mV

Low Power Modes

Differential or Single-Ended Inputs

80dB CMRR (DC)

82dB Signal-to-Noise Ratio, VS = 5V

Operates from 3V to ±5V Supplies

Main characteristics of interest to our application are:

Supply current: 3 mA at 3 V

Max cut off: 64 kHz

10th order linear phase filter

S0-8 footprint

Using the clock directly available from the MCU, allows for greater flexibility in terms of sampling frequency

(e.g. as compared to a lookup table).

For reference see www.linear-tech.com part number LTC1569-6.

Page 25: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

25 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.3.6 Differential Driver

To differentially drive the ADC converter, the operational amplifier AD8607 from Analog Devices Inc. was

selected. AD8607s are dual micro-power rail-to-rail input and output amplifiers, that feature very low offset

voltage as well as low input voltage and current noise.

These amplifiers use a patented trimming technique that achieves superior precision without laser trimming.

The parts are fully specified to operate from 1.8 V to 5.0 V single supply or from ±0.9 V to ±2.5 V dual supply.

The combination of low offsets, low noise, very low input bias currents, and low power consumption makes

the AD8607 especially useful in portable and loop-powered instrumentation.

The ability to swing rail to rail at both the input and output enables designers to buffer CMOS ADCs, DACs,

ASICs, and other wide output swing devices in low power, single-supply systems.

The AD8607 is available in 8-lead MSOP packages.

Features and Benefits:

Low Offset Voltage: 40 µV typ.

Low Input Bias Current: 1pA max.

Single-Supply Operation: 1.8 to 5 Volts.

Low Noise: 25 nV/vHz.

Micropower: 50 µA/Amp max.

No Phase Reversal.

Unity Gain Stable.

For reference see www.analog.com part number AD8607ARMZ .

4.2.3.7 SCU power supply circuit

The LP5907 from Texas Instruments is a linear regulator capable of supplying 250-mA output current. Designed

to meet the requirements of RF and analog circuits, the LP5907 device provides low noise, high Power Supply

Rejection Ratio, low quiescent current, and low line or load transient response figures. Using new innovative

design techniques, the LP5907 offers class-leading noise performance without a noise bypass capacitor and the

ability for remote output capacitor placement.

Another benefit of the LP5907 is that it can be powered down by the MCU (power saving mode). A low voltage

on the specific pin turns the regulator off and discharges the output pin to GND through an internal 230-Ω pull-

down, the quiescent current in disable condition is 0,2 uA.

The voltage input in the LP5907 is 5 Volts and it regulates the voltage to the SCU at 3,3 Volts.

For reference see datasheet form Texas Instruments www.ti.com part number LP5907MFX-3.3 .

Page 26: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

26 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.4 Micro power SAR ADC

The ADS8867 is a 16-bit, 100-kSPS, true-differential input, analog-to-digital converter (ADC). The device

operates with a 2.5-V to 5-V external reference, offering a wide selection of signal ranges without additional

input signal scaling. The reference voltage setting is independent of, and can exceed, the analog supply voltage

(AVDD).

The device offers an SPI-compatible serial interface that also supports daisy-chain operation for cascading

multiple devices.

Main Features:

Sample Rate: 100 kHz

No Latency Output

Unipolar, True-Differential Input Range: –VREF to +VREF

Wide Common-Mode Voltage Range: 0 V to VREF with 90-dB CMRR (min)

For reference see datasheet http://www.ti.com/lit/gpn/ads8867

4.2.4.1 Sampling frequency configuration

Sampling frequency (SF), with a maximum of 100Ksps , is controlled by the MCU timer. SF may be reduced

from the MCU, selecting a desired timing by changing the timer clock divisor register’s value.

4.2.5 Main power supply

The main power circuit is composed of a DC-DC converter model Traco Power TSRN 1-2450, it has a Vin from

4.6 to 42Vdc Vout 5V and can supply a current of 1 Ampere, the 5V output powers the digital circuit and

analog section circuit SCU.

The new TSRN-1 series step-down switching regulators was chosen as a drop-in replacement for the less

efficient 78xx linear regulators used in a first version of the design. A high efficiency up to 95 % allows full load

operation up to +70°C (+85°C with derating) ambient temperature without the need of any heat-sink or forced

air cooling – fit for our moulded compact design.

The TSRN-1 switching regulators provide other significant features over linear regulators, i.e. better output

accuracy (±2 %), lower standby current of ~2 mA and no requirement of external capacitors. They are suitable

for positive or negative output circuits. The high efficiency and low standby power consumption make these

regulators an ideal solution for our energy sensitive application.

For reference see www.tracopower.com part number TSRN 1-2450.

Page 27: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

27 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.6 PCB design

Once defined the optimal dimensions of the final product, in collaboration with several platform providers

(e.g. complying with the NKE Provor float electro-mechanical constraints), the Printed Circuit Board (PCB)

manufacturing consisted in the following task:

Drawing of the electrical circuit

Figure 9. Schematic diagram example

Selection of the integrated circuit and passive components on the market that will be used and

association of each component to the schematic symbols

Emission of the bill of materials

Drawing and identification of the footprint of each components

Figure 10 component PCB footprint

Routing the PCB considering the mechanical constrains,

Producing the physical PCB, the result of which is displayed in the following final schematics and

photos, with all components mounted

Page 28: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

28 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 11 PCB Routing

Figure 12 Resulting final PCB

Figure 13. SCU analog output - Low Gain fc= 3.2MHz

Figure 14. SCU analog output - Hi Gain fc = 3.2MHz

Page 29: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

29 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 15. SCU analog output - Low Gain fc = 1.6MHz

4.2.7 Laboratory Test

4.2.7.1 Passive Components value and tolerance consideration

Passive components like resistors have a tolerance of about 1% and not all numeric values are available, hence

the signal conditioning stage, which builds on a combination of passive components and active ICs, will not

result exactly in the expected values, thus the only way to produce the actual values is to measure and

calibrate the final product. This said, the expected error is usually +/- 1 dB and therefore negligible when

referring to acoustic hydrophone tolerances. The result of the acoustic calibration must then be taken into

account in the arithmetic operations carried out by the firmware.

4.2.7.2 Frequency Range

4.2.7.2.1 Upper limit

The NeXOS passive acoustic scenario requirement in terms of acoustic bandwidth is a frequency range of 1Hz

to 40 KHz (NeXOS Deliverable 6.1). Considering that the selected ADC can run up to 100 kHz and the anti-

aliasing filter has a maximum cut-off frequency of 64 kHz, the upper acoustic frequency may be as high as 50

kHz. Any frequency range may be selected from the microcontroller, changing the frequency clock of the

Antialiasing filter (fc) - see

Page 30: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

30 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 13,

Figure 14 and Figure 15.

4.2.7.2.2 Frequency lower limit

The lowest frequency range obtainable using a 50 Ohm signal generator is 0,65 Hz. Since the hydrophone is

not a theoretical generator the final lowest frequency will depend from hydrophone capacitance.

Page 31: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

31 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

The following figure is the equivalent circuit schematic of the hydrophone and input stage.

Figure 16 Equivalent circuit schematic of the hydrophone and input stage

Where the hi-pass cut off is: f Hp = 1 / 2πCh (Rp//Rin)

Applying the formula to SQ26 and D/70, for which the values are fully or partly available:

SQ26:

Ch=1.4 nF, Rin =100 M ohm, Rp =500 M ohm

o F cut off (h.p.) = 1.37 Hz

D/70:

Ch=9.3 nF, Rin =100 M ohm, Rp = unknown (we suppose near 500 M ohm)

o F cut off (h.p.) <= 1 Hz

The exact value mainly depends on the tolerance and stability of the hydrophone capacitance

4.2.7.3 Equalizer

The equalizer circuit, which ensures high dynamic range at high frequency (preventing typical saturation at

high gain), is a one pole filter with a cut-off frequency of 3200 Hz. It will be used with high gain (50 dB) to avoid

saturation at low frequency caused by rough sea, ship traffic, etc.

Figure 17 Equalizer frequency response

Page 32: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

32 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.7.4 Equivalent input noise

The following figure shows the noise density output of the SCU with V(noise) out = - 120 dB re 1V/√Hz

Considering a total gain of the chain of 50 dB, to calculate the input noise density we need to subtract this gain

value.

V(noise)in: -120-50= -170dB re 1V//√Hz

Figure 18 Noise density output of SCU

Because the noise density of the chosen CMOS OPAMP is 3nVrms/MP ie chosen of SCUre 1Vthe input noise

density depends only on the noise of the input stage. The noise density switched capacitor filter +ADC being -

128.5 dB re 1V/ filis also significantly lower than V(noise) out (-120dB re 1V/gnifi Therefore the gain value

choice of 50 dB proved to be correct.

4.2.7.5 Maximum input voltage level and dynamic

The full scale of the 16 bit ADC is set to 1Vrms (2,82 Vpeak-peak), therefore the maximum input voltage level

of the SCU is:

CH bit Full scale (Vrms) Gain (dB) Max input (mVrms)

CHB LOW GAIN 16 1 20 100

CHA HI GAIN 16 1 50 3,2

Table 5. Maximum Input Voltage to ADC

The SNR of the ADC is: 96 dB with (THD:-115 dB)

The use of two channels with 30 dB of gain difference allows to have a total SNR of 126 dB.

Page 33: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

33 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.2.8 Acoustic resolution

Considering the 16 bit A/D converter with a dynamic range of 96 dB, the acoustic resolution depends on the

chosen hydrophone, as shown in the following tables.

SQ26

Gain Channel Sensitivity MIN input source level

least significant bit

Max input source level

Full scale

dB dB re 1 V/μPa dB re 1 μPa

CHB Low Gain 20 - 173.5 77.5 173.5

CHA Hi Gain 50 - 143.5 47.5 143.5

D/70

Gain Channel Sensitivity MIN input source level

least significant bit

Max input source level

Full scale

dB dB re 1 V/μPa dB re 1 μPa

CHB Low Gain 20 - 178 82 178

CHA Hi Gain 50 - 148 52 148

JS-B100

Gain Channel Sensitivity MIN input source level

least significant bit

Max input source level

Full scale

dB dB re 1V/μPa dB re 1 μPa

CHB Low Gain 20 - 181 85 181

CHA Hi Gain 50 - 151 55 151

Table 6. Acoustic dynamic range achieved depending on the chosen hydrophone transducer.

The gain and sensitivity is referred to 1 Vrms (2.82 Vpp), maximum input level of the ADC. The above figures

show that the estimated dynamic ranges are generally compliant with the stringent requirements set out in

the NeXOS passive acoustics scenario (e.g. ESONET label requirements).

Page 34: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

34 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5 TASK 6.3. ALGORITHMS DEVELOPMENT

This section reports on the work carried out in task 6.3 of NeXOS Project Work Package 6. Leader of this task is

partner number 12, CTN. The work complements Task 6.2, reported in the above.

5.1 INTRODUCTION

This section reports on the work carried out for the development of the signal processing algorithms in order

to provide the capabilities required to cover the MSFD Descriptor 1 and Descriptor 11 for the NeXOS

multifunctional systems.

As it is mentioned in the task 6.3 description of work described in the Annex I – “Description of work” of the

Grant Agreement no: 6141020, the monitoring algorithms should include tracking, measuring and classifying

features relevant to MSFD descriptor 11 (Energy/Underwater Noise) and descriptor 1 (Biodiversity).

According to MSFD, the definitions of each descriptor are:

Descriptor 1. Biological diversity is maintained. The quality and occurrence of habitats and the

distribution and abundance of species are in line with prevailing physiographic, geographic and

climatic conditions (see (Comission, 2008) ).

Descriptor 11. “Introduction of energy, including underwater noise, is at levels that do not adversely

affect the marine environment”.

According to (Dekeling R. T., 2014 a), Descriptor 11 is divided into two different indicators:

11.1. Distribution in time and place of loud, low and mid frequency impulsive sounds.

o 11.1.1. - Proportion of days and their distribution within a calendar year over areas of a

determined surface as well as their spatial distribution, in which anthropogenic sound

sources exceed levels that are likely to entail significant impact on marine mammals

measured as Sound Exposure Level (in dB re 1µPa2 .s) or as peak sound pressure level (in dB

re 1µPapeak) at one metre, measured over the frequency band of 10 Hz to 10 KHz.

11.2. Continuous low frequency sound

o Indicator 11.2.1. - Trends in the ambient noise level within 1/3 octave bands 63 and 125 Hz.

(centre frequency) (re 1µPa RMS; average noise level in these octave bands for a year)

measured by observation stations and/or with the use of models if appropriate.

Regarding signal processing related to Descriptor 1, CTN has developed two different algorithms (Click

Detector and Whistle Detector). Both of them are based on the open-source software PAMGuard. This

decision was taken in after a deep study on possible reference passive acoustic monitoring softwares and is

justified in (Delory, 2015).

Regarding Descriptor 11, CTN has developed three different algorithms. These algorithms have been

developed entirely for the NeXOS Project. MSFD requirements regarding Indicator 11.2.1 have been taken into

account. These requirements have been extracted from (Dekeling R. T., 2014 a) and (Dekeling R. T., 2014 b)

and will be explained in the subsections related to each algorithm.

Additionally, CTN has developed an algorithm called “noise band monitoring” which basically allows the user

to design an IIR filter low/band/high pass filter and the duty cycle for data computation (SPLrms and percentile

levels).

Page 35: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

35 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Note that the document reports on current achievement and will be updated as other algorithms are fully

implemented.

Algorithms still under development are:

Low frequency Tonal sounds (Planned delivery date: 15/06/2016)

Localization and tracking algorithms (Planned delivery date: ).

5.2 METHODOLOGY

As mentioned before, in (Delory, 2015) it was decided to base signal processing algorithms on an open-source

software. The chosen software is PAMGuard, a well-known passive acoustic software used by marine biologists

and scientists all around the world. The challenge then consisted in the possibility to port such software into a

power and CPU limited embedded system.

Several aspects should be kept in mind:

1. NeXOS requirements in terms of signal processing algorithms are:

1.1. To cover MSFD Descriptor 1. Biological diversity.

1.2. To cover MSFD Descriptor 11. Introduction of energy, including underwater noise sources, is at

levels that do not adversely affect the marine environment

2. MSFD provides information about requirements for the signal processing algorithms for noise

monitoring for Indicator 11.2.1 (from descriptor 11) in (Dekeling R. T., 2014 a) and (Dekeling R. T.,

2014 b).

3. PAMGuard is an open-source software which is developed in Java. NeXOS platforms will be based on

an ARM Cortex M4 microcontroller.

Taking into account what has been mentioned before, CTN had to:

1. Assess whether PAMGuard algorithms could cover MSFD requirements, make changes if appropriate.

2. Assess whether PAMGuard algorithms were portable to a microcontroller platform and make changes

if appropriate for them to be suitable for an ARM cortex M4- based platform.

3. Develop new algorithms from scratch if needed.

The first action consisted in studying which algorithms were fulfilling MSFD requirements, when available. TSG

Noise in (Dekeling R. T., 2014 a) and (Dekeling R. T., 2014 b) gives recommendations on signal processing and

measurement protocol for indicator 11.2.1 “Continuous low frequency sound” therefore, these

recommendations are considered for the development of the indicator 11.2.1.

Regarding the algorithm porting to an ARM Cortex M4, PAMGuard is a Java-based software. Java is a high level

programming language composed of a large number of libraries. These libraries have built-in functions that are

not thought to work on a microcontroller but in a conventional microprocessor-based computer, therefore a

deep study of each algorithm had to be performed prior to the coding stage in order to identify built-in

functions which are not implemented in the scientific libraries provided by ARM CMSIS and evaluate the

feasibility of its coding in C for Cortex M4 as well as the computation load that would mean for the algorithm.

Some algorithm features were identified as not appropriate for their implementation on a microcontroller.

It’s worth to mention that in a first stage, taking into account the consumption load requirements by NeXOS,

fixed point arithmetic was chosen to start coding in C. However, this increased the complexity of the algorithm

as well as the time needed for the coding, therefore, since ARM Cortex M4 microprocessor has a floating point

unit (FPU), a comparison in time computation needed for a basic signal processing tool (IIR filtering) and one

algorithm (Click Detector) using fixed point arithmetic (Q1.15) and floating point arithmetic (Float) was carried

out. Results obtained can be seen in section 5.2.1.

Page 36: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

36 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Once minimum algorithm features are chosen to be ported / coded into C for ARM Cortex M4, a first version of

the algorithm is developed in Matlab. This is done for mathematical and functional checking and validation.

Once the Matlab version is done, the algorithm is ported to C using as much as possible functions already

implemented and provided by ARM CMSIS DSP Library (CMSIS, 2016).

Once the algorithm is implemented in C, it is validated by comparison with the Matlab algorithm and

PAMGuard software when appropriate. Computation load is measured by measuring the number of cycles

needed for the algorithm to process a chunk of data.

Together with the code, Matlab scripts necessary in order to generate certain needed C header files are also

delivered to the user. These header files control certain characteristics of each algorithm (sample frequency,

filters, duty cycles, etc.) thus, they are totally necessary for the algorithms to work properly and to be

configurable by the user. These scripts are user-friendly and the user does not need any previous knowledge in

C coding but just to have Matlab installed on a computer in order to generate the header files.

Documentation of the code in C is also generated using Doxygen, an open source software that can be used in

order to generate on-line documentation and latex manual which can be compiled to obtain a hyperlinked PDF

(very comfortable for the user).

Brief documents for user’s good practices are also generated and delivered in .pdf format.

Page 37: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

37 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.2.1 Fixed Point Arithmetic VS Floating Point Arithmetic Algorithm: CLICK DETECTOR

Block Size (Samples): 2048

Matlab ARM CORTEX M4 Execution time (ms) Matlab ARM CORTEX M4 Execution time (ms)

Click Position 270 269 Position 270 269

Click Value 0,90909 0,90909 Value 0,90909 0,909093,52 4,7

FLOAT FIXED POINT ARITHMETIC

Figure 19. Computational load between Fixed point arithmetic and floating point arithmetic. Click Detector algorithm.

Algorithm: INDICATOR 11.2.1

Block Size (Samples): 512

Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms) Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms)

rms 63 Hz 0,1041 0,1034 99,32756964 rms 63 Hz 0,1041 0,0986 94,71661864

rms 125 Hz 0,20310 0,20240 99,6553422 rms 125 Hz 0,20310 0,19750 97,242737570,326 0,506

FLOAT FIXED POINT ARITHMETIC

Figure 20. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1 algorithm (512 samples)

Algorithm: Indicator 11.2.1

Block Size (Samples): 1024

Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms) Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms)

rms 63 Hz 0,1051 0,1048 99,71455756 rms 63 Hz 0,1051 0,0986 93,81541389

rms 125 Hz 0,20410 0,20370 99,80401764 rms 125 Hz 0,20410 0,20240 99,16707496

FLOAT FIXED POINT ARITHMETIC

0,644 1

Figure 21. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1 algorithm (1024 samples)

Page 38: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

38 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Algorithm: Indicator 11.2.1

Block Size (Samples): 2048

Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms) Matlab ARM CORTEX M4 Accuracy (%) Execution time (ms)

rms 63 Hz 0,1056 0,1054 99,81060606 rms 63 Hz 0,1056 0,0986 93,37121212

rms 125 Hz 0,20460 0,20440 99,90224829 rms 125 Hz 0,20460 0,20240 98,92473118

FLOAT FIXED POINT ARITHMETIC

1,28 1,99

Figure 22. Computational load between Fixed point arithmetic and floating point arithmetic. Indicator 11.2.1 algorithm (2048 samples)

5.3 ALGORITHMS

5.3.1 Acoustic Sensors A1 & A2

5.3.1.1 MSFD Indicator 11.2.1.

5.3.1.1.1 Introduction

The aim of the present section is to introduce the solution for fulfilling with indicator 11.2.1. described in (Aj,

Ma., & André M, 2012) as follows:

Indicator 11.2.1: trends in the ambient noise level within 1/3 octave bands 63 and 125 Hz (centre frequency)

(re 1 µPa RMS; average noise level in these octave bands over a year) measured by observation stations and/or

with the use of models if appropriate (11.2.1).

It is worth to mention that the Technical Subgroup on Noise (TSG) has defined some terms used in the

indicator 11.2.1 in order to help its understanding:

Trends: the Oxford Dictionary defines “trend” as ‘’general direction in which something is developing or

changing”. Following this, “trend” refers to year-to-year (or longer) changes in ambient noise levels.

Average noise level: TSG Noise realized that the term ‘average noise level’ is not unambiguous; there are

different methods to establish a value for an average that are all correct, but lead to different values. TSG

Noise defines ‘average noise level’ as ‘average of the squared sound pressure’, since this definition is robust to

changes or differences in the duration of individual time samples.

Use of models: Measurements are considered essential to ground truth models. The use of models

strengthens analyses by, for instance, addressing bias introduced by the variability of the environment, and to

extend the results of monitoring to poorly or uncovered areas.

Based on these three points TSG Noise recommends the following interpretation of indicator 11.2.1:

Trends in the annual average of the squared sound pressure associated with ambient noise in each of two

third octave bands, one centred at 63 Hz and the other centred at 125 Hz, expressed as a level in decibels, in

units of dB re 1 µPa, either measured directly at observation stations, or inferred from a model used to

interpolate between or extrapolate from measurements at observation stations.

In order to fulfill with requirements described on (Aj, Ma., & André M, 2012), NeXOS is developing an

algorithm for its implementation in platforms A1 and A2. The aim of the present document is to describe how

Page 39: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

39 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

NeXOS addresses with the requirements of the MSFD in terms of audio pre and post- processing as well as how

the MSFD indicator 11.2.1 is extracted and stored.

5.3.1.1.2 Methodology

NeXOS has decided to base their algorithms on an open-source software called PAMGuard. PAMGuard offers

numerous different algorithms related to passive underwater acoustic monitoring. However PAMGuard does

not offer a specific algorithm to cover the indicator 11.2.1. Though if we take into account the definition of the

indicator 11.2.1, we can take advantage of some of the modules already implemented in PAMGuard.

5.3.1.1.2.1 Study of reference algorithm

In the following figure a scheme for MSFD indicator 11.2.1. algorithm is shown:

Figure 23. Indicator 11.2.1 Flow scheme

According to Figure 23 two filters are needed to fulfill with indicator 11.2.1. PAMGuard includes a module

called Noise Band Monitoring. This algorithm is able to filter out an input acoustic data and extract some

different parameters from it.

In (Dekeling R. T., 2014 b), several recommendations in order to fulfill with indicator 11.2.1 are described.

These recommendations aim to establish a base for type and format standardization.

Relevant recommendations for the 11.2.1 algorithm development are:

- The parameter more suitable for indicator 11.2.1 is the SPLrms which is defined in ( 6 ).

- The average used in order to express the noise trend is the arithmetic mean ( AM ).

- There is not any specific recommendation regarding snapshot time duration, although it is

recommended to leave this parameter as optional depending on the requirements of the mission,

taking into account that the measurement should be large enough (at least 60 seconds). It’s worth to

mention that this duration should be constant for all the measurements when AM is applied.

- Filters are recommended to be generated following IEC 61260 (1995) norm. Base – ten systems and

class 0 filters are preferred.

5.3.1.1.2.1.1 Structure

The functionality of the present algorithm is based on different modules through which the input signal is

processed in order to obtain the desired Output.

Considering that the measures should be large enough (at least 60 seconds), and taking into account that block

size to process by the algorithm is limited (typically 1024/2048 samples), before offering results as an SPL

Page 40: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

40 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

value, the algorithm must process a certain number of blocks, which will be given according to the sampling

frequency rate (fs) and the chosen duty cycle.

Then the complete block diagram is as described in Figure 24:

Acoustic Data

(Data Block)

63 Hz Filter 125 Hz Filter

RMS

SPL

¿Time = Duty Cycle?(¿k = nBLOCKS?)

No

Yes

Total RMS

Total SPLPercentile

Levels

Meta data

Storage

Figure 24. Indicator 11.2.1 complete flow scheme

The functionality of the modules of the algorithm is:

1. Acoustic Data: It represents the acquisition and signal conditioning stage. This module is in charge of

the signal conditioning for it to be properly guided to the filtering stage. It is worth to mention that

Page 41: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

41 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

this module is out of the scope of the present document, since this task is carried out in another task.

However it should be mentioned that, this stage should deliver the acoustic data in digital form, more

concretely in floating point arithmetic.

2. Filtering Stage – 63 and 125 Hz: Two digital filters are applied to the input signal. These two filters are

third-octave band filters which fulfill with Base – ten systems and class 0 filters according to IEC 61260

(1995) norm.

3. RMS stage: It consists of the computation of the RMS value relative to a one block of data input. This

value will be used later for the computation of the SPLrms value.

4. SPL: Sound Pressure Level is a logarithmic measure of the RMS sound pressure of a sound relative to a

reference value, the threshold of hearing. It is measured in decibels (dB), referenced to 1uPa in

underwater applications.

5. Comparison stage: Until the time of computation equals the duty cycle chosen by the user, the

algorithm will continue computing input blocks.

6. Total RMS: It consists of the computation of the RMS value relative to a period of time defined by the

user. This value will be used later for the computation of the total SPLrms value.

7. Total SPL. It is the SPLrms value corresponding with a period of time defined by the user. It can be

computed as stated in ( 6 ).

8. Percentile Levels: They are very useful parameters in order to obtain knowledge about maximum

levels and background noise discarding spontaneous and unusual SPL levels

5.3.1.1.2.1.2 Identification of basic modules (minimum algorithm features) and functionality.

In the following the basic modules of the algorithm are identified and explained. It’s worth to mention that for

each module, the solution chosen for it to be coded and implemented in the platform will be clarified.

5.3.1.1.2.1.2.1 Acoustic Data

This module was covered in the former section’s report on task 6.2 (transducer stage signal conditioning unit

(4.2.3)). However, there are several parameters from this stage that should be taken into account in order to

ensure a good functioning of the following modules. These considerations are:

1. The sampling frequency of the signal should be that for which the filters are designed for.

2. Channel gains (hydrophone sensitivity + amplifier) should be known in order for the SPL to be

computed properly.

3. Transfer function and reference voltage of the ADC should be known for the SPL to be computed

properly.

4. Number arithmetic should be set to floating point arithmetic from Q1.15 format.

5.3.1.1.2.1.2.2 Filtering Stage

5.3.1.1.2.1.2.2.1 Introduction

There are numerous filter types in terms of digital filtering implementation, however in the present document

we will focus on two different ways for acoustic filtering.

5.3.1.1.2.1.2.2.2 IIR and FIR filters

Although, Infinite Impulse Response (IIR) and FIR (Finite Impulse Response) are different in terms of

computation and characteristics, conceptually IIR and FIR filters are based on the calculation of some

coefficients that are able to modify the input signal according to some specifications.

Main difference between both is that coefficients of IIR filters weight input signal samples and previous output

signals in order to obtain the output. This is the reason for them to be called Recursive Filters as well. FIR filter

coefficients weight just input signal samples and there is no feedback in the computation from the output to

obtain the new output.

Page 42: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

42 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 25. Block Diagram differences between FIR and IIR filters implementation. Notice the feedback loop from output ( y(n) ) to input ( x(n) ) in IIR filter block diagram. Picture extracted from (MikroElektronika D.O.O.)

5.3.1.1.2.1.2.2.3 Comparison between IIR and FIR filters.

When it comes to implementation, IIR and FIR filters implementation are quite different because each

presents some advantages and disadvantages with respect to the other. These differences are summarized in

Table 7.

Characteristics FIR filtering IIR filter

Q Vs order

Computational Efficiency

Numerical stability

Linear phase

Table 7. Main differences between FIR and IIR filters

According to Table 7 and considering linear phase is not required for the purpose of indicator 11.2.1 algorithm

and that computational efficiency is a key factor in NeXOS A1 platform the first approach is based on IIR filter

structures.

As mentioned in (Delory, 2015), Cortex M4 ARM microprocessor has been chosen as main controlling interface

processor for the NeXOS project. Therefore, the ARM CMSIS DSP library has been used for the implementation

of the filters on the LPC 4337 board. A first approach has been developed using the commercial technical

computing software Matlab. This approach will be used as a reference in order to be able to compare filter

performance on the LPC 4337 board.

5.3.1.1.2.1.2.2.4 Filter Bank Generation.

Third-octave bands are generated following the IEC 61260 (1995) norm with Class 0 filters. The octave ratio

has been calculated on a base – ten system.

Exact mid band frequency (fm), nominal mid-band frequency (fn) band-edge frequencies (f1 and f2) for each

third-octave band filter are specified in Table 8.

Page 43: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

43 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

fc (Hz) f1 (Hz) fm (Hz) f2 (Hz)

63 56,2341325 63,0957345 70,7945784

125 112,201845 125,892541 141,253754

Table 8. Relevant frequencies for third-octave band filters generation.

Third octave bands are generated in Matlab using IIR butterworth filter structures. Order of the filters depend

on the requirements of IEC 61260 (1995) norm and the sample frequency of the input signal.

In order to test and validate filtering algorithms provided by ARM CMSIS DSP library, 4 different filters are

generated using ARM CMSIS DSP library.

In order to obtain the impulse response of the generated filters, an impulse signal (𝛿(𝑛)) is generated in

Matlab, then a .WAV file is generated in order to load the signal into the Labview test - bench application

developed by UPC and being able to run the filter on LPC 4337 board. The impulse signals is defined as:

𝛿(𝑛) = {0, 𝑛 ≠ 01, 𝑛 = 1

( 1 )

Transfer function of the filter generated in Matlab is obtained by application of the Fourier Transform of the

impulse response, then it is compared with IEC 61260 (1995) requirements (Figure 26 and Figure 27) and with

the transfer function of their respective filters generated using ARM CMSIS DSP library (Figure 28 and Figure

29).

Since sample frequencies available on A1 are not exactly known yet, two sample frequencies have been tested

on the board LPC 4337. In Table 9 filter parameters (centred frequency - Fc , sample frequency - Fs) used for

comparison are depicted.

Fc (Hz) Fs (Hz) Minimum Order

63 500 3

63 1000 3

125 500 4

125 1000 3

Table 9. Filter Parameters used in the comparison between filtering performance in Matlab and on LPC 4337 board.

Page 44: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

44 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 26. Frequency response of third-octave band filters centered at 63 and 125 Hz Vs third-octave band class 0 IEC 61260 ( 1995 ) requirements. Sample Frequency (Fs) = 500 Hz. Matlab performance.

Figure 27. Frequency response of third-octave band filters centered at 63 and 125 Hz Vs third-octave band class 0 IEC 61260 ( 1995 ) requirements. Sample Frequency (Fs) = 1000 Hz. Matlab Performance.

Biquad coefficients have been computed from those calculated for biquad filters direct form I, computed using

Matlab. These coefficients are used as an input for biquad filter function implemented in ARM CMSIS DSP

library, arm_biquad_cascade_df1_q15.

It should be mentioned that, the ARM CMSIS DSP library presents several versions of this function depending

on the type of numerical format of input – output formats and computational speed. In this regard, according

Page 45: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

45 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

to (ARM., 2014), the fast version uses a 32-bit accumulator whereas the slow version uses a 64-bit accumulator

in order to avoid wrap around distortion.

Filtering performance of biquad filters with same parameters as described in Table 8 and Table 9 ,

computation time test has been carried out in order to check for NeXOS A1 platform requirements.

As can be seen in Figure 28 and Figure 29, differences between the frequency behavior of the filters

implemented using Q15 ARM CMSIS DSP Biquad Cascade filter function are noticeable when values in

amplitude are close to -40 dB. The frequency behavior seen in these figures, is computed according to

equation ( 2 ).

𝐺𝑎𝑖𝑛 = 20 𝑙𝑜𝑔10 (𝑎𝑏𝑠(𝐹𝐹𝑇(𝐼𝑚𝑝𝑢𝑙𝑠𝑒 𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒))) ( 2 )

This difference is larger for the filters calculated for a sample frequency of 1000 Hz than those computed for a

500 Hz sample frequency.

No difference between the two versions of the biquad cascade filtering function (Slow and fast versions) is

observed in terms of impulse response and transfer function. However as can be seen in Table 10, time for

filtering performance of the slow version is approximately twice the time of the fast version.

Figure 28. Impulse and Frequency response of third-octave band filters centered at 63 and 125 Hz. Matlab filters plotted in blue and Biquad filters using biquad cascade Direct Form I filtering (slow version = green line;

fast version = green line). Fs = 500 Hz. The green line is overlapped by the magenta coloured one. Length of input signal is 1024 samples.

Page 46: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

46 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 29. Impulse and Frequency response of third-octave band filters centered at 63 and 125 Hz. Matlab filters plotted in blue and Biquad filters using biquad cascade Direct Form I filtering (slow version = green line;

fast version = green line) from ARM CMSIS DSP library. Fs = 1000 Hz. The green line is overlapped by the magenta coloured one. Length of input signal is 1024 samples.

Difference between Matlab Biquad Filter and ARM CMSIS Biquad Filters (slow and fast versions) is larger for

the filters calculated for a sample frequency of 1000 Hz than for a 500 Hz sample frequency.

No difference between the two versions of the biquad cascade filtering function (slow and fast versions) is

observed in terms of impulse response and its transfer function.

Computation time and number of cycles used for filtering performance have been tested and results can be

seen in Table 10.

Computation time only takes into account the filtering of the signal, and it has been measured using a

reference signal from an output port of the LPC 4337 board that is turned on when the processing is being

executed and turned off when it is done (see Figure 30).

Page 47: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

47 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 30. Reference output signal of LPC 4337 board for computation time measurements. The pulse signal corresponds to the time of processing.

Signal Length

Frequency (Hz) Sample Frequency (Hz) OrderVersion of the function

biquad cascadeSamples Trial 1 Trial 2 Trial 3 Avg

512 94,52 94,44 94,34 94,43 19264

1024 184,74 184,72 185 184,82 37703

512 237,95 237,86 237,84 237,88 48528

1024 471,5 471,2 471,8 471,50 96186

512 94,36 94,5 94,54 94,47 19271

1024 184,56 184,92 184,62 184,70 37679

512 238,34 237,86 237,78 237,99 48551

1024 471,12 471,74 471,22 471,36 96157

512 125,6 124,92 124,82 125,11 25523

1024 316,54 316 315,92 316,15 64495

512 316,2 315,88 316,2 316,09 64483

1024 627,3 628 627,5 627,60 128030

512 94,44 94,52 94,28 94,41 19260

1024 184,9 184,88 185,34 185,04 37748

512 237,58 237,63 237,68 237,63 48477

1024 471,24 471,76 471,12 471,37 96160

Number

of cycles

FV

SV

FV

SV

FV

SV

SV

FV

Filter Processing Time (µs)

63

500

1000

3

3

125

4

3

500

1000

Table 10. Processing Time of LPC 4337 board using biquad filtering using ARM CMSIS DSP library. Filters are IIR third octave bands centered at 63 and 125 Hz for sample frequencies of 500 and 1000 Hz. FV and SV in 4th column stand for Fast and Slow versions of ARM CMSIS biquad cascade filter function.

As can be seen in Table 10, although no differences between fast and slow version of the biquad filter function

was observed in terms of impulse and frequency response, computation time is highly dependent on the

version of the function used. Results reveal that the time consumed for the fast version implementation is

approximately half that consumed for the slow version. Therefore, taking into account that there is no

difference between fast and slow version filter implementation in terms of frequency response, the fast

version of the function is preferred. However, a larger test using different input signals is highly recommended

in order to verify results shown so far.

As explained in a previous section, using floating point operations for the filtering stage, the performance of

the microprocessor was even improved. For that reason, it was decided to use floating point arithmetic instead

of fixed point arithmetic. Therefore, in the following, only the performance of filters using floating point

arithmetic is shown.

Page 48: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

48 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 56,2341325 63,0957345 70,7945784 3

Plot

Zoom Plot

Figure 31. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band

requirements fn = 63 Hz.

Figure 32. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band

requirements fn = 125 Hz

5.3.1.1.2.1.2.2.5 FIR filters implementation

Another option is to use FIR filters whose frequency response fulfils with IEC 61260 (1995). Use of these filters

may introduce more delay in the filtered signal as well as more computation loading due to a larger order

needed for the same magnitude decrease and larger number of additions and multiplications. However, their

response is more stable in comparison with IIR filters and can be made to be linear-phase easily.

In Figure 33 the impulse response of a FIR filter centred at 63 Hz, designed such that its frequency response

matches with the frequency response of an IIR butterworth filter with order 3 which fulfils with IEC 61260

(1995) requirements for a class 0 third octave band is shown. The butterworth filter is the same filter as in

Figure 26 and Figure 27.

As it can be seen the order needed in order to obtain the same decrease in amplitude (n=300) is much higher

than for the IIR filter ( n=3 ). The delay introduced by the filter will be of 150 samples.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 112,201845 125,892541 141,253754 3

Plot

Zoom Plot

Page 49: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

49 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 33. Impulse response and frequency response of a FIR filter designed for its frequency response to match with IIR Butterworth filter with order 3 which fulfills with IEC 61260 (1995) requirements.

Due to the larger delay added because of the use of FIR filters and the larger number of coefficients, the use of

these filters were discarded.

5.3.1.1.2.1.2.2.6 FFT – based Filters Vs Circular Convolution

The second approach considered in this document is the FFT – based filtering. This approach has been

considered due to its implementation on the Baltic Sea Information on the Acoustic Soundscape (BIAS) project.

In (Betke K., 2015), this method is described. The energy present in the frequency band is obtained by means

of adding up those bins inside the bandwidth of the third - octave band.

The reason for the use of these filters is the difficulty of implementing digital filters ensuring their stability and

their power consumption.

In (Betke K., 2015), a correction for the bandwidth to be taken into account for the addition of bins is shown:

𝐵𝑊𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑖𝑜𝑛 = −10 log10 (𝐵𝑊𝑎𝑐𝑡𝑢𝑎𝑙

𝑓2 − 𝑓1

) ( 3 )

Where:

𝐵𝑊𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑖𝑜𝑛 is the corrected bandwidth value

𝐵𝑊𝑎𝑐𝑡𝑢𝑎𝑙 is the actual bandwidth value

(Betke K., 2015) warns about the reliability of such filtering technique for frequencies below 10 Hz. In order to

validate this technique for its implementation on Cortex M4 microprocessor, we have made a short script in

Page 50: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

50 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Matlab in which we study the difference between the SPL computation after a traditional filter using an IIR

filter and an FFT-based filter.

Test made shows that the sum of bins of frequencies included within the bandwidth of the filter leads to

unreliable results (deviation about 12 dB). This is of course inadmissible. However, another approach of this

technique is tested. The technique is described hereafter:

1. FFT of the signal is computed

2. FFT bins of the selected frequencies are extracted

3. An IFFT is computed over the new FFT

4. The RMS value is computed

Frequency bandwidth has been set to the cut-off frequencies according to IEC 61260 (1995), these are [56.23,

70.79] Hz. The signal to be filtered is White Gaussian Noise plus a pure tone at 63 Hz sampled at 4000 Hz. The

duration of the signal is 10 seconds. Filtering and SPL computation have been carried out over signal slices of

4000, 2048, 1024 and 512 samples. This is done in order to take into account possible deviations due to the

frequency resolution.

In order to validate this technique, results obtained have been compared with results using a circular

convolution with the impulse response of a third-octave band filter.

Figure 34. Comparison between SPL values computed over a white gaussian noise plus a pure tone of 63 Hz filtered with and IIR filter using circular convolution and an FFT-based filter, both with Fc = 63 Hz.

As it can be seen in Figure 34, the larger the size of the slice the smaller is the difference between circular

convolution and FFT- based filtering results. As it was expected, the average SPL level is higher when FFT-based

filtering is used, due to the non-attenuation within the bandwidth between low and high cut-off frequencies.

Page 51: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

51 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Slice Samples FFT-Based Filtering Circular Convolution STD

512 -17,22 -20,53 2,34

1024 -18,60 -20,57 1,40

2048 -19,31 -20,55 0,88

4000 -20,65 -20,72 0,05

STD 1,43 0,09

Overall SPLrms (10 seconds) dB re 1DU

Table 11. Overall SPL over 10 seconds, obtained from SPLs computed over different slice lengths

Overall SPL values are calculated and shown in Table 11. As can be seen, the standard deviation (STD) between

SPL values obtained across slice lengths and filtering technique has been calculated, showing that:

Circular convolution technique shows more coherent results when different slice lengths are used

than FFT – Based filtering technique

Overall SPL shows less deviation across different slice lengths when circular convolution is used.

For slice lengths of about 1 second (4000 samples) SPL values are very similar with differences smaller

than 1 dB.

In (Betke K., 2015), SPLrms values are computed over slices of 1-second duration. Taking into account results

shown in Table 11, it is reasonable to use FFT-based filtering when such a slice length is used. Slice lengths

used for filtering implementation on microcontroller ARM Cortex M4 so far are of 512, 1024 and 2048 samples

representing from 0.1 s to 0.5 s of time signal for 4kSample per second sampling frequency.

Due to this dependency on the number of slices, traditional filtering technique using IIR filter implementation

is decided to be used in this algorithm.

5.3.1.1.2.1.2.3 RMS computation

The RMS will be computed in slices of a certain length (4096 samples as maximum). Obviously, the time

represented by this number of samples is sampling frequency dependent, therefore, depending on the duty

cycle chosen by the user, the total RMS will be computed as stated in ( 4 ) and ( 5 )

𝑅𝑀𝑆𝑠𝑙𝑖𝑐𝑒 = √1

𝑁∑ 𝑠𝑙𝑖𝑐𝑒( 𝑛 )

𝑁

0

( 4 )

𝑅𝑀𝑆𝑡𝑜𝑡𝑎𝑙 = 𝑅𝑀𝑆 (𝑅𝑀𝑆𝑠𝑙𝑖𝑐𝑒) ( 5 )

5.3.1.1.2.1.2.4 SPL

SPL is computed as defined in ( 6 ).

𝑆𝑃𝐿𝑟𝑚𝑠 = 20 𝑙𝑜𝑔10 (√

1

𝑇∫ 𝑃(𝑡)2 𝑑𝑡

𝑇

) ( 6 )

As mentioned in MSFD recommendations, SPLrms is the suitable parameter to obtain information about the

acoustic energy introduced by continuous sound sources.

Page 52: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

52 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.1.2.1.2.4.1 Percentile levels

According to (Dekeling R. T., 2014 b), percentile levels are very useful parameters in order to obtain knowledge

about maximum levels and background noise discarding spontaneous and unusual SPL levels, however no

recommendation is given in this regard. According to (S12.9, 1988), N percent exceedance level is the time-

weighted and frequency-weighted sound pressure level that is exceeded for N % of the time interval

considered. It is also mentioned that “Residual sound may be approximated by the percentile sound level

exceeded during 90 – 95 % of the measurement period”.

Since there are no general recommendations for percentile parameters use, we have decided to calculate 𝐿10

and 𝐿90 by default in order to offer information about maximum and background noise present in the

measurement. However, this percentile levels can be changed by the user, and any percentage can be

calculated and stored for its analysis.

5.3.1.1.2.1.2.5 Storage and Metadata

Once the required parameters are calculated, we need to store them and share them. It is worth to mention

that this duty can be an issue when we deal with little storage capacity.

In case of platform A1, it is necessary to store two kinds of data:

1. Acoustic Data

2. Meta-data

Acoustic data will be reduced to the parameters SPLrms computed. Metadata containing relevant information

related to the period of measurement will be also stored. It has to be mentioned that in case of A1, the file to

be stored and transmitted has a maximum allowable size of 60 kb according to the document about the

profiling float cycle given by NKE. Therefore, an estimation of the size of the generated file has to be done

when defining the mission. This means that, the interface for the user to design a mission (filters, parameters

to be measured, snapshot duration, periodicity of measurements) has to be able to warn the user about the

size of the file that will be generated with such mission characteristics.

Another possible strategy (complementary) is that once the maximum size of the file is reached,

measurements are paused giving the float the opportunity of going to the surface and send the information

and then come back to mission point where it was paused.

The algorithm output consists of:

1. SPLrms (63 Hz) 32bits

2. SPLrms (125 Hz) 32 bits

3. L10 (63 & 125 Hz) 32 + 32 bits

4. L90 (63 & 125 Hz) 32 + 32 bits

Therefore, the output of the algorithm for each period of time defined by the user would be a file of 24 bytes.

5.3.1.1.2.1.2.6 Storage

Storage management is out of the scope of the present document, however, CTN has reviewed proposals from

other European projects which deal with MSFD and Indicator 11.2.1 concluding that different and interesting

proposals regarding data storage are depicted in (Betke K., 2015) for the Bias Sea Information on the Acoustic

Soundscape (BIAS) project and are shown hereafter.

5.3.1.1.2.1.2.6.1 Format and naming of the file

The format of the file is ASCII FILE. The naming will be as follows:

StationSSS_BBBFFFHz_Start_YYYYMMDDHHMMSS_End YYYYMMDDHHMMSS.asci

Page 53: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

53 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Where:

SSS is the station Id format %03d;

BBB is a keyword describing the bandwidth. It shall be ‘ThirdOctave’ or ‘BroadBand’ according to the

nature of the acoustic data that is stored in the file;

FFF is the rounded central frequency of the Bandwidth when BBB is not ‘BroadBand’; format: 0.5%d

Start designate the time of the first acoustic data contained in the file;

End designate the time of the last acoustic data contained in the file;

YYYYMMDDHHMMSS: Year, Month, Day, Hour, Minute, Second;

5.3.1.1.2.1.2.6.2 Content of the file

Each file contains information about one frequency band and is made of a header and a table. The header of

the file gives information about the measurement. The header will allow the user of the file to get the context

of the data that is present in the table of the file. The following section describes how to format the header

and the table.

Regarding the file format, (Betke K., 2015) uses an ASCII file with a header where metadata is written and then

a table with acoustic information. (Betke K., 2015) proposes to save 1 file for each frequency band chosen.

Different proposals exist regarding the storage. In Table 12, the different metadata fields related to the

measurement used in BIAS project are shown. Data type is also specified.

Header

Organization name %Issued by String

Stations Id %Station Id integer %03d

Station name % Name of the station String

LoggerId % Data Logger unit Id String

DataType %Type of acoustic data ‘SPL’

dBunit %Units of the acoustic data String

BandType %Third octave Band/ BroadBand String

Fc % Central frequency of the band float %8.2f

Fmin % Minimum Frequency of the band float %8.2f

Fmax % Maximum Frequency of the band float %8.2f

Window % Processing window (s) integer

Latitude % Lat signed decimal degrees, WGS84 Float %11.8f

Longitude %Lon signed decimal degrees, WGS84 float %11.8f

L %Height above bottom (m) Float %5.1f

H % Water depth (m) Float %5.1f

Hdate % Date of water depth measurement String YYYYMMDD

Issued % Date of Issue String YYYYMMDD

ProgramName % Processing program used String

Sync % Sychronisation Data of Data Logger String YYYYMMDD

Drift % Logger Drift (s/day) Float %10.8f

N % Number of the lines in the table Integer

Table 12. Fields of information contained in the header of the standard sharable files in BIAS project.

Page 54: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

54 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Each line shall have the same following format:

1st column: Date – String – YYYYMMDDHHMMSS

2nd column: Minimum Level (%6.2f): for N-second values, the minimum level is defined as the minimum of the

N values of 1-second processed data;

3rd column: Mean level (%6.2f): for N-second values, the median level is defined as the median value of the N

values of 1-second processed.

4th column: Maximum level (%6.2f): for N-second values, the maximum level is defined as the maximum value

of the N values of 1-second processed.

5th column: Standard deviation (%6.2f): for N-second values, the standard deviation level is defined as the

standard deviation of the N values of 1-second processed data.

6th column: Ratio of clipping samples in the processed window to the number of samples in the processed

window (%10.8f) – Number between 0 and 1.

7th column: Ratio of Negative clipping samples in the processed window to the number of samples in the

processed window (%10.8f) – Number between 0 and 1.

Each column is separated by a TAB.

5.3.1.1.2.2 Implementation in Matlab

The modules that have been implemented in Matlab are:

Filtering stage

RMS computation

SPL computation.

Regarding the filtering stage, filters have been implemented and generated with Matlab. These filters are IIR

butterworth filters and their characteristics are summarized in Table 8 and Table 9. The transfer function of

the filters have been used for:

1. Generating Second-order coefficients for them to be used in the biquadratic structure which ARM

CMSIS DSP Library base the IIR filtering on.

2. Comparison with IEC 61260 (1995) requirements.

3. Comparison with transfer function of fixed point and floating point based filters in the ARM Cortex

M4 microprocessor (see Figure 26, Figure 27, Figure 28, Figure 31, Figure 32 ).

After the filtering stage, the SPLrms computation is computed as indicated in ( 6 ). As can be seen, the RMS

computation is already included in ( 6 ).

5.3.1.1.2.2.1 Functionality validation

In order to validate the algorithm, a signal test is generated in Matlab. The signal consists of the sum of two

pure tones of 63 and 125 Hz with an amplitude of 1. Then it is filtered out using filters depicted in Figure 26

and Figure 27 and their SPLrms is computed. SPL of the signal without filtering and after filtering stage are

compared and results can be seen in Table 13

Page 55: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

55 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Samples 512 1024 2048 4096

SPLrms (63 Hz - No filter) dB -3,0113 -3,017 -3,0133 -3,0096

SPLrms(63 Hz - Filtered) dB -3,4669 -3,2392 -3,1228 -3,0639

Abssolute difference (dB) 0,4556 0,2222 0,1095 0,0543

0,271883

SPLrms(125 Hz - No filter) dB -3,0087 -3,0096 -3,0111 -3,0115

SPLrms(125 Hz - Filtered) dB -3,2328 -3,1201 -3,0659 -3,0388

Absolute difference (dB) 0,2241 0,1105 0,0548 0,0273

0,066179MSE (Mean Squared Error) dB

MSE (Mean Squared Error) dB

Table 13. Validation of Matlab filters.

5.3.1.1.2.3 Implementation in ARM Cortex M4 microprocessor

5.3.1.1.2.3.1 Acoustic Data

As mentioned in section 5.3.1.1.2.1.2.1, the acoustic data module does not belong to the algorithm

development task and is described in the section on transducer stage signal conditioning unit (4.2.3), however

there are several issues from this module that have to be taken into account in order to ensure the proper

functioning of the algorithm.

Considerations are:

1. The sample frequency of the signal should be that of the filters are designed for.

2. Channel gains (hydrophone sensitivity + amplifier) should be known in order for the SPL to be

computed properly.

3. Transfer function and reference voltage of the ADC should be known for the SPL to be computed

properly.

4. Number arithmetic should be set to floating point arithmetic from Q1.15 format.

5. Duty Cycle should be defined by the user according to the period over which one wants to get the

SPL. Duty Cycle is related to the sampling frequency and the size of the block as shown in (8):

𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒 =𝑛𝐵𝑙𝑜𝑐𝑘𝑠 ∗ 𝐵𝑙𝑜𝑐𝑘 𝑆𝑖𝑧𝑒

𝑓𝑠

( 8 )

and the number of blocks to be computed is (9)

𝑛𝐵𝑙𝑜𝑐𝑘𝑠 =𝑓𝑠 ∗ 𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒

𝐵𝑙𝑜𝑐𝑘 𝑆𝑖𝑧𝑒

( 9 )

5.3.1.1.2.3.2 Filtering

The filtering process in the microcontroller is implemented using the DSP library provided by ARM CMSIS.

In terms of filtering, the mentioned library provides IIR filtering based on biquad structured - filters. These

structures can be performed in fixed point and floating point arithmetic.

In a first approach, fixed point arithmetic was used, however as it can be seen in Figure 28 and Figure 29,

performance of the filter were quite poor in the low frequency range of the third-octave band.

Since the microcontroller has a floating point unit, it was decided to study the difference of computational

load (assumed to be the best advantage of using fixed point arithmetic instead of floating point arithmetic),

and the results can be seen in Figure 20. Therefore, the filtering stage was decided to be done using floating

point arithmetic.

Page 56: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

56 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

In order to test the filter performance of the filters implemented in the microprocessor:

1. A pseudo-random signal is generated in Matlab as input to the filtering stage in both environments,

Matlab and C.

2. The signal is filtered out in both platforms and compared in both time and frequency domains.

Results of both filters can be seen in Figure 35 and Figure 36.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 56,2341325 63,0957345 70,7945784 3

Plot

Figure 35. Filter process comparison between Matlab (Butterworth filter) and ARM Cortex M4 (Biquad filter).

fn = 63 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 112,201845 125,892541 141,253754 3

Plot

Figure 36. Filter process comparison between Matlab (Butterworth filter) and ARM Cortex M4 (Biquad filter).

fn = 125 Hz.

5.3.1.1.2.3.3 RMS Computation

The RMS computation is computed using the ARM CMSIS DSP library’s function arm_rms_f32. For more

information see 5.3.1.1.2.1.2.3.

5.3.1.1.2.3.4 SPL computation

Due to power consumption requirements, it is necessary to decrease the number of computations performed

by the processor to the extent possible. In order to avoid the computation of the base-ten logarithm, including

sensitivity and gains considerations, it is decided to compute the SPLrms by means of a look-up table.

The look-up table, is computed taking into account the channel sensitivity (Hydrophone sensitivity + Gain) and

the transfer function of the ADC (reference voltage considered). Therefore, this look-up table will set a relation

between the RMS of the signal in Digital Units and the SPLrms re 1µPa existing in the water.

Page 57: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

57 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Due to the logarithm function properties, for proper computation more resolution (in terms of number of

value per dynamic range) is needed on the lower part of the dynamic range. A look-up table of 1024 values

was implemented, taking into account the dynamic range of the system (96 dB), which results in a resolution

of 0.0938 dB. Note that this resolution is obviously non-linear.

Figure 37. Units Flow for the SPLrms Computation.

5.3.1.1.2.3.5 Percentile levels

For the computation of the percentile levels, a function has been developed. The function takes as input

arguments a vector with all SPLrms computed in the period of time defined by the user and the percentile level

(5%,10%,15%, etc.). Default values are set to L10 and L90. It is worth mentioning that (Dekeling R. T., 2014 a)

puts emphasis on the preferred use of the term “exceedance level” instead of “percentile level” in order to

avoid misunderstandings. Therefore, the definition of Percentile level or “percent exceedance level” is:

N Percent exceedance level: Level that is exceeded N times out of 100.

Taking this definition into account:

L10: Represents the level that has been exceeded 10 % of the time. Therefore it will be close to the

peak level.

L90: Represents the level that has been exceeded 90 % of the time. Therefore it will be close to the

background noise.

The output consists of a float variable of 4 bytes and it is gathered to the Output of the algorithm under study.

5.3.1.1.2.3.6 Observations and Limitations

The present algorithm aims to cover the requirements of the MSFD indicator 11.2.1. Note worthily, the

algorithms are focused on the extraction of the parameters that will allow the user to observe the “trend” of

underwater at 63 and 125 Hz. This trend can be obtained using different measurement techniques in terms of

measurement periods of time and duty cycle, and due to the lack of recommendation in this regard, it is up to

the user to choose properly the snapshot time duration and the frequency of the snapshots during a

measurement campaign.

Page 58: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

58 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

A memory limitation applies when increasing the snapshot time duration. Because increasing the snapshot

time increases the number of processing blocks, the maximum snapshot time duration is currently 954

seconds, which corresponds to almost 16 minutes.

As mentioned in section 5.3.1.1.2.1.2.1, describing the metadata associated with the measurement is out of

the scope of the present document, however, we would like stress the importance of this matter in order to be

able to fulfill with MSFD requirements as well as with the usefulness of this information for the analysis and

the assessment of the underwater noise pollution.

Regarding percentile levels, the output of the algorithm is prepared for the storage of two different values,

these can be defined by the user though. Default percentile levels are set to L10 and L90.

5.3.1.1.2.3.7 Versions

There are two versions of this algorithm. One is based on fixed point arithmetic, the other on floating point

operations.

Since floating point operations is faster and more accurate as can be seen in Figure 20, the default version has

set to the Floating Point arithmetic version.

Since MSFD requirements are well defined in (Dekeling R. T., 2014 a) and (Dekeling R. T., 2014 b), leaving little

room for other interpretations, just one overall version has been developed. This version allows the user to

configure the size of blocks, the sampling frequency (e.g. 1000 Hz for this algorithm), the duty cycle of the

measurements and the channel gain.

5.3.1.1.2.3.7.1 Code

The source code for this algorithm is provided in Annexes\Annex_I_Indicator_11_2_1.docx.

5.3.1.1.2.3.7.2 Functionality Validation

In order to validate the performance of the algorithm implemented on the microcontroller, pseudo-random

noise is generated and is used as an input signal to the filtering stage in Matlab and in the microcontroller.

Outputs from these filters are compared in Figure 35 and Figure 36.

5.3.1.1.2.3.7.3 Computational Load Measurements

Computational measurements have been carried out using 2048 samples of block processing length. The

decision of the block size is a trade-off between accuracy of measurement, filtering performance and

computational load. Assuming stochastic noise in the measurement, the longer the duration of the recording,

the better SNR is achieved as well as better accuracy on the computation of the SPLrms due to the smaller

influence of the inherent filter delay. 2048 samples ensures that several cycles of sound signals at 63 and 125

Hz are present in the recording and its computational load is smaller than 2.048 seconds which is the length of

the input signal. This also offers better time resolution than 4096 samples (around 4 seconds of input signal)

giving the opportunity of recording transient sounds larger than 2 seconds, and although this is not the main

purpose of the algorithm, percentile levels are also provided in order to detect this type of noises and discard

measurements if appropriate.

Page 59: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

59 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

To calculate the processing speed of the algorithm, a digital signal is used, displayed on the following

oscilloscope screen capture:

Figure 38. Reference output signal of LPC 4337 board for computation time measurements. Pulse corresponds to time of processing, here a duty cycle of 954 sec.

In the table below the computational load of the algorithm with different duty cycles is shown.

5.3.1.1.3 Sampling Rate: 1000 Hz

5.3.1.1.4 Sample of: 32 bits (float)

5.3.1.1.5 Size of block: 2048 samples

5.3.1.1.6 Microprocessor: 204 MHz

Duty cycle Nº Blocks Time of processing

~3 sec 1 block 1,5 msec

~ 60 sec 29 blocks 42 msec

~500 sec 244 blocks 370 msec

~954 sec 465 blocks 680 msec

Table 14. Indicator 11.2.1. Computational load vs duty cycle.

Each block of processing (2.048 sec) takes around 1.5 msec. This demonstrates how the algorithm is fast

enough to be executed in real time.

5.3.1.1.6.1.1.1 Optimization

The implementation of the algorithm within A1 and A2 NeXOS sensors is being carried out and algorithm

optimization if needed is expected to be performed at this stage of the work plan.

5.3.1.1.7 Good Practice for the user

As a general recommendation, it is suggested to the user to read carefully all the documentation delivered

together with the GUI, in order for him/her to understand properly the meaning of the inputs that should be

defined by him/her and what output should be expected from the algorithm.

It is also highly suggested for the user to read (Dekeling R. T., 2014 a) and (Dekeling R. T., 2014 b) in order to

set snapshots duration and measurements duty cycle according to MSFD recommendations.

Page 60: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

60 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.2 MSFD Indicator 11.2.1. Extended

5.3.1.2.1 Introduction

This algorithm is an extension of the indicator 11.2.1. While in the indicator 11.2.1 it should calculate the

trends in the ambient noise level within 1/3 octave bands 63 and 125 Hz, in the indicator 11.2.1 extended the

range of ambient noise level is substantially increased to (20 Hz – 20 KHz). This involves obtaining a result

above the minima required by MFSD, but is a recommendation. For more information regarding MSFD

indicator 11.2.1, please refer to 5.3.1.1.

5.3.1.2.2 Methodology

As we did for indicator 11.2.1, this algorithm has been fully developed within NeXOS.

5.3.1.2.2.1 Study of reference algorithm

The baseline study was based on indicator 11.2.1. Please refer to 5.3.1.1.2.1.

5.3.1.2.2.1.1 Structure

The number of third-octave bands within the frequency range (20 – 20 KHz) according to IEC 61260 (1995) is

30. Therefore a total of 30 filters are applied to the input signal in order to obtain the SPLrms corresponding to

each frequency band. The number of decimation orders has been minimized obtaining a total of 3 different

orders. Decimation, which is needed here due to filtering implementation constraints of the processing

platform, is the process of decreasing the sampling frequency of a given signal, therefore after the decimation

process by 2 different orders, 2 different new sampling frequencies will be obtained. These sampling

frequencies are 1 and 16 KHz.

Each of these sampling frequencies will be used for the signal to be filtered in different frequency ranges. This

also helps in decreasing the need of high order filters implementation if IEC 61260 (1995) requirements are

wanted to be fulfilled. Keeping low order filters (fulfilling with IEC 61260 requirements) presents two main

advantages:

1. Low effect of filter delay on the filter output (low impact on the rms value computation and

consequently on SPLrms computation).

2. Low number of computations related to the filtering process and therefore a decrease on the

computation load of the algorithm.

In Table 15 cut-off frequencies of each third octave band implemented are depicted. Besides, it has been

included the sample frequency ( Fs ) obtained after the decimation process associated with each third octave

band. The order of the filter ( N ) has been also included.

Page 61: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

61 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

22,3872114 25,1188643 28,1838293 3

28,1838293 31,6227766 35,4813389 3

35,4813389 39,8107171 44,6383592 3

44,6683592 50,1187234 56,2341325 3

56,2341325 63,0957345 70,7945784 3

70,7945784 79,4328235 89,1250938 3

89,1250938 100 112,201845 3

112,201845 125,892541 141,253754 3

414,253754 158,489319 177,827941 4

177,827941 199,526232 223,872114 4

223,872114 251,188643 281,838293 3

281,838293 316,227766 354,813389 3

354,813389 398,107171 446,683592 3

446,683592 501,187234 562,341325 3

562,341325 630,957344 707,945784 3

707,945784 794,328235 891,250938 3

891,250938 1000 1122,01845 3

1122,01845 1258,92541 1412,53754 3

1412,53754 1584,89319 1778,27941 3

1778,27941 1995,26231 2238,72114 3

2238,72114 2511,88643 2818,38293 3

2818,38293 3162,27766 3548,13389 3

3548,13389 3981,07171 4466,83592 3

4466,83592 5011,87234 5623,41325 3

5623,41325 6309,57344 7079,45784 3

7079,45784 7943,28235 8912,50938 4

8912,50938 10000 11220,1845 4

11220,1845 12589,2541 14125,3754 4

14125,3754 15848,9319 17782,7941 4

17782,7941 19952,6231 22387,2114 4

1000

16000

48000

Table 15. Cut-off frequencies of each third octave band filter its associated sample frequency and butterworth order used in Indicator 11.2.1. Extended algorithm

As it can be seen in Table 15, there are three different sample frequencies taking into account the original

sample frequency of 48 KHz and the butterworth filter orders are 3 or 4 depending on the third octave band

and its sampling frequency associated. This is done in order to ensure the requirements of the norm IEC 61260

(1995).

Then the complete block diagram, in which the decimation block is added, is shown in Figure 39:

Page 62: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

62 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Acoustic Data

(Data Block)

Filter (251 Hz – 1995 Hz)

RMS

SPL

¿Time = Duty Cycle?(¿k = nBLOCKS?)

No

Yes

Total RMS

Total SPLPercentile

Levels

Meta data

Storage

DecimationM = 3

Filter (25 Hz – 199

Hz)

RMS

SPL

DecimationM = 48

Filter (2511 Hz – 19952 Hz)

RMS

SPL

Figure 39. Indicator 11.2.1 extended complete flow scheme.

5.3.1.2.2.1.2 Identification of basic modules (minimum algorithm features)

Basic modules of this algorithm are the same as in the indicator 11.2.1 (refer to 5.3.1.1.2.1.2), except for the

decimation module.

- Decimation module reduces the data rate according the decimation factor. However, downsampling

alone causes high-frequency signal components to be misinterpreted by subsequent users of the

data, which is a form of distortion called aliasing. So, the first step, if necessary, is to suppress aliasing

to an acceptable level using a filter called anti-aliasing filter. The decimation factor is usually an

integer greater than one. This factor divides the sampling rate.

Page 63: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

63 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.2.2.2 Implementation in Matlab

The modules that have been implemented in Matlab are the same as in indicator 11.2.1, except for the

decimation module. In the case of Matlab, there is a simple function that performs it.

y = decimate (x, r, n, 'fir') . The function reduces the sampling rate of x, the input signal, by a factor of r. The

decimated vector, y, is shortened by a factor of r so that length(y) = ceil(length(x)/r). By default, decimate uses

a lowpass Chebyshev Type I IIR filter of order 8. However, order of the filter as well as filter type (FIR filter) can

be changed.

5.3.1.2.2.3 Implementation in NeXOS Platform

Regarding the decimation module, a function of the ARM CMSIS DSP library that offers satisfactory results was

used. Please refer to 5.3.1.2.2.3.2.2.

void arm_fir_decimate_f32 (const arm_fir_decimate_instance_f32 *S, float32_t *pSrc, float32_t *pDst,

uint32_t blockSize)

These functions combine an FIR filter together with a decimator. They are used in multirate systems for

reducing the sample rate of a signal without introducing aliasing distortion.

[in] *S points to an instance of the floating-point FIR decimator structure.

[in] *pSrc points to the block of input data.

[out] *pDst points to the block of output data.

[in] blockSize number of input samples to process per call.

5.3.1.2.2.3.1 Observations and Limitations

As occurs in indicator 11.2.1 ( 5.3.1.1.2.3.6 ), in this case there are again memory limitations on the platform

and are more pronounced. In this algorithm a new vector is required to process decimation. In addition,

temporary vectors, which store the RMS and SPL values of each block grow as the number of filters to be

processed.

Moreover, according to the functional validation (5.3.1.2.2.3.2.2), it was detected that the SPLrms calculated

at frequencies corresponding to the filters sampled at 1 kHz have not performed well. More work is needed on

the decimation function, which seems to be the problem in this case.

So far we have achieved stable performance of the algorithm with 11 filters. The filters chosen in the

implementation are shown in Table 16:

Page 64: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

64 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 414,253754 158,489319 177,827941 4

223,872114 251,188643 281,838293 3

354,813389 398,107171 446,683592 3

562,341325 630,957344 707,945784 3

891,250938 1000 1122,01845 3

1412,53754 1584,89319 1778,27941 3

2238,72114 2511,88643 2818,38293 3

3548,13389 3981,07171 4466,83592 3

5623,41325 6309,57344 7079,45784 3

8912,50938 10000 11220,1845 4

14125,3754 15848,9319 17782,7941 4

16000

48000

Table 16. Chosen filters for Indicator 11.2.1 Extended. (To be optimized)

Moreover, after several tests it has been found that the maximum number of blocks to process is 5. To get an

idea, with a sample frequency of 48000 Hz and a block size of 2048, the algorithm can process a duty cycle of

213 milliseconds. It is therefore essential to optimize this algorithm in terms of memory use.

5.3.1.2.2.3.2 Versions

Until now just one version has been developed. This version allows the user to configure the size of blocks, the

duty cycle of the measurements and the channel gain.

5.3.1.2.2.3.2.1 Code

The code for this algorithm is available in Annexes\Annex_II_Indicator_11_2_1_extended.docx

5.3.1.2.2.3.2.2 Functionality Validation

Validation of the functionality is made in the same way as in indicator 11.2.1. Four different input blocks of

2048 samples each were built. Each block consists of white Gaussian noise and have different amplitudes. The

simulated blocks are read one by one.

RMS values obtained using the algorithm developed in C are similar to those obtained using the Matlab code.

To validate the decimation block functionality, the module has been compared between C and Matlab for each

of the 30 filters. The input signal is a white Gaussian noise of 2048 samples. A FIR filter of order 100 is used for

the decimated signal. For filters with a sampling frequency of 1000 Hz a decimation factor of 48 is used. For

filters with a frequency of 16000 Hz a factor of 3 is used and for the filters with sampling frequency of 48KHz

no decimation factor is used.

In Table 17 results of all the filters are shown:

FIR (Order) 100

Filter Center Frequency RMS MATLAB RMS C SPL MATLAB SPL C

SPL difference.

1KHZ

25,11886432 1,30E-03 2,05E-04 -57,5912 -73,773 16,1818

31,6227766 0,0021 7,4019-04 -53,4661 -62,6131 9,147

39,81071706 0,0046 0,0015 -46,7482 -56,6875 9,9393

50,11872336 0,0095 0,0034 -40,4901 -49,3723 8,8822

63,09573445 0,0141 0,0042 -37,0289 -47,4644 10,4355

79,43282347 0,0231 0,0113 -32,7459 -38,9398 6,1939

100 0,0484 0,0301 -26,3093 -30,4257 4,1164

Page 65: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

65 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

125,8925412 0,0263 0,0241 -31,6034 -32,3765 0,7731

158,4893193 0,0418 0,0202 -27,5723 -33,8784 6,3061

199,5262315 0,0241 0,0305 -32,3654 -30,3173 -2,0481

16KHZ

251,1886432 0,0418 0,0394 -27,5862 -28,0965 0,5103

316,227766 0,0441 0,0437 -27,1097 -27,1989 0,0892

398,1071706 0,0477 0,0478 -26,4273 -26,4198 -0,0075

501,1872336 0,0566 0,0569 -24,9462 -24,898 -0,0482

630,9573445 0,0699 0,0674 -23,1114 -23,4332 0,3218

794,3282347 0,1029 0,1021 -19,7543 -19,816 0,0617

1000 0,1215 0,1204 -18,3059 -18,3848 0,0789

1258,925412 0,114 0,1117 -18,8651 -19,0356 0,1705

1584,893192 0,1144 0,1113 -18,8278 -19,0666 0,2388

1995,262315 0,1517 0,1506 -16,3781 -16,4461 0,068

48 KHZ

2511,886432 0,1565 0,1563 -16,1103 -16,1201 0,0098

3162,27766 0,1965 0,1966 -14,1342 -14,1302 -0,004

3981,071706 0,2165 0,2164 -13,2901 -13,2933 0,0032

5011,872336 0,2485 0,2484 -12,0951 -12,0968 0,0017

6309,573445 0,2619 0,2619 -11,6361 -11,6377 0,0016

7943,282347 0,2599 0,2599 -11,7031 -11,7036 0,0005

10000 0,3166 0,3166 -9,9895 -9,9895 0

12589,25412 0,3479 0,3479 -9,171 -9,1707 -0,0003

15848,93192 0,3871 0,3871 -8,2435 -8,2439 0,0004

19952,62315 0,4605 0,4605 -6,7349 -6,7352 0,0003

Table 17. Validation of the decimation module.

The SPL difference is generally good for the filters with sampling frequency of 48 kHz and sampling frequency

of 16 kHz. However, the deviation observed in results of the filtering from 25 Hz to 200 Hz is not acceptable for

accurate results.

5.3.1.2.2.3.2.3 Computational Load Measurements

Computational measurements have been carried out using 2048 samples of block processing length. Refer to

5.3.1.1.2.3.7.3.

In the table below the computational load of the algorithm with different duty cycles is shown.

Sampling Rate: 48000 Hz

Sample of 32 bits: (float)

Size of block: 2048 samples

Microprocessor: 204 MHz

Duty cycle Nº Blocks Time of processing

~42.7 msec 1 block 12.2 msec

~ 213 msec 5 blocks 60 msec

Table 18. Indicator 11.2.1 extended. Computational load vs duty cycle.

Each block of processing (2.048 sec) takes around 12.1 msec. As for indicator 11.2.1, the algorithm is fast

enough to be executed in real time. However in this example it is about 10 times slower, this is because it has

many more filters to compute.

Page 66: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

66 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.2.2.3.2.4 Optimization

No optimization has been implemented yet. We are working on the implementation of the 30 third-octave

band filters.

5.3.1.2.3 Good Practices for the user

It should follow the general recommendations of indicator 11.2.1. Please refer to 5.3.1.1.7

5.3.1.3 Noise Band Monitoring

5.3.1.3.1 Introduction

This algorithm calculates the trends in the ambient noise level within a band of frequency defined by the user.

The general foundation is the same as for indicator 11.2.1, thus please refer to section 5.3.1.1.

5.3.1.3.2 Methodology

The frequency band for which trends are calculated is limited by a filter defined by the user. In this manner this

filter is not necessarily a third-octave band filter which follows IEC 61260 (1995) norm. The idea is to provide

the user with a flexible filtering tool.

To assist the user to generate this filter an external GUI is provided. For information on the GUI, see 5.4.1.

5.3.1.3.2.1 Study of reference algorithm

The baseline study was based on the same as for indicator 11.2.1. Please refer to 5.3.1.1.2.1.

5.3.1.3.2.1.1 Structure

The structure defined for this algorithm is similar to indicator 11.2.1. Instead of two filters (63 and 125 Hz),

now it takes only a user-defined filter.

The complete block diagram is depicted in Figure 40.

Page 67: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

67 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Acoustic Data

(Data Block)

Filter defined by

User

RMS

SPL

¿Time = Duty Cycle?(¿k = nBLOCKS?)

No

Yes

Total RMS

Total SPLPercentile

Levels

Meta data

Storage

Figure 40. Noise band monitoring complete flow scheme.

5.3.1.3.2.2 Implementation in ARM Cortex M4 microprocessor

5.3.1.3.2.2.1 Observations and Limitations

As for indicator 11.2.1 (see section 5.3.1.1.2.3.6), there are again memory limitations on the platform. In the

above case we assumed a value of 2048 sample blocks, and fs 1000Hz. But in this algorithm, both block size

and fs are specified by the user. For this reason, now the duty cycle parameter is not a good indication for the

limitation of the algorithm (see ( 8 ) ). In this case what is relevant is the total number of blocks that the

algorithm can process.

After several tests it has been found that the maximum number of blocks is 712. To get an idea, with a sample

frequency of 1000 Hz and a block size of 2048, the algorithm can process a duty cycle of 1458 seconds, which

corresponds to about 24 min.

Page 68: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

68 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.3.2.2.2 Versions

A first version has been developed. This version allows the user to configure the size of blocks, the sampling

frequency, the duty cycle of the measurements and the channel gain.

5.3.1.3.2.2.2.1 Code

The source code of this algorithm is provided in Annexes\Annex_III_Noise_Band_Monitoring.docx.

5.3.1.3.2.2.2.2 Functionality Validation

Validation of the functionality is made in the same way as in indicator 11.2.1. They have been built for

different input blocks of 2048 samples each. Each block consists of white Gaussian noise and has different

amplitudes. The simulated blocks are presented to the algorithm one by one.

As in section 5.3.1.2.2.3.2.2, RMS values obtained using the algorithm developed in C are similar to those

obtained using Matlab code.

5.3.1.3.2.2.2.3 Computational Load Measurements

As in indicator 11.2.1, computational measurements have been carried out using 2048 samples of block

processing length. Refer to 5.3.1.1.2.3.7.3.

In the table below the computational load of the algorithm with different duty cycles is shown.

Sampling Rate: 1000 Hz

Sample of 32 bits (float)

Size of block: 2048 samples

Microprocessor: 204 MHz

Duty cycle Nº Blocks Time of processing

~3 sec 1 block 1,1 msec

~ 60 sec 29 blocks 32 msec

~500 sec 244 blocks 272 msec

~954 sec 465 blocks 520 msec

~1458 sec 712 blocks 800 msec

Table 19. Noise Band Monitoring. Computational load vs duty cycle

Each block of processing (2.048 sec) takes around 1.1 msec. As for indicator 11.2.1, again the algorithm is fast

enough to be executed in real time. Even in this case it is somewhat faster because it computes a single filter

instead of two.

5.3.1.3.2.2.2.4 Optimization

The implementation of the algorithm within A1 and A2 NeXOS sensors is being carried out and algorithm

optimization (if needed) will be performed shortly.

5.3.1.3.3 Good Practices for the user

This should follow the general recommendations of indicator 11.2.1. Please refer to 5.3.1.1.7

5.3.1.4 MSFD Indicator 11.1.1.

5.3.1.4.1 Introduction

The aim of this section is to introduce the solution for the implementation of indicator 11.1.1 described on (Aj,

Ma., & André M, 2012) as follows:

Indicator 11.1.1: Proportion of days and their distribution within a calendar year over areas of a determined

surface, as well as their spatial distribution, in which anthropogenic sound sources exceed levels that are likely

to entail significant impact on marine animals measured as Sound Exposed Level (in dB re 1 µPa 2. s) or as peak

Page 69: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

69 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

sound pressure level (in dB re 1 µPa peak) at one metre, measured over the frequency band 10 Hz to 10 kHz

(11.1.1).

This description is not unambiguous and therefore the Technical Subgroup on Noise (TSG Noise) recommends

the following revision of the indicator 11.1.1 on low and mid-frequency impulsive sounds:

The proportion of days and their distribution within a calendar year, over geographical locations whose shape

and area are to be determined, and their spatial distribution in which source level or suitable proxy of

anthropogenic sound sources, measured over the frequency band 10 Hz to 10 kHz, exceeds a value that is

likely to entail significant impact on marine animals (11.1.1).

A basic principle of the MSFD is that it addresses the ecosystem rather than individual animals or species. This

indicator illustrates the cumulative impact of activities, rather than that of individual projects or programmes

(deal with by other EU legislation). Effects of localized singular activities are therefore not covered, and this

indicator on its own is not intended, nor is it sufficient, to manage singular events. Environmental Impact

Assessments (EIA) can be used to assess and, where necessary, limit the environmental impacts of individual

projects.

The impact that is addressed by Indicator 11.1.1 is “considerable” displacement. This is the displacement of a

significant proportion of individuals over a relevant time period and spatial scale. The indicator addresses the

cumulative impact of sound generating activities and possible displacement associated.

The purpose of this indicator is to assess the pressure on the environment by making available and overview of

all low and mid-frequency, impulsive sound sources over a period of one year throughout regional seas. This

will proved MS with an overview of the environmental pressures from these sources, which have not been

previously measured.

In order to fulfill with requirements described on (Aj, Ma., & André M, 2012), NeXOS is developing an

algorithm for its implementation in platforms A1 and A2. The aim of the present document is to describe how

NeXOS addresses with the requirements of the MSFD in terms of audio pre and post- processing as well as how

the MSFD indicator 11.1.1 is extracted and store.

5.3.1.4.2 Methodology

As in the indicator 11.2.1 and the indicator 11.2.1 Extended (please refer to section 5.3.1.1.2 this algorithm has

been developed “from scratch”.

5.3.1.4.2.1 Study of reference algorithm

In the following a scheme where MSFD indicator 11.1.1 algorithm is shown:

Figure 41. Indicator 11.1.1 Flow Scheme

Page 70: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

70 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

A band-pass filter is needed to fulfill with indicator 11.1.1. in order to filter out an input acoustic data and

extract some different parameters from it.

TSG Noise recommends that Member States work together in setting up a register, both at regional seas level

and the EU level. Seismic surveying, pile-driving, explosives, sonar working at relevant frequencies and some

acoustic deterrent devices are the most important sound-sources that should be considered for inclusion in

the register. There are additional sources of possible concern (e.g. boomers, sparkers, scientific echo

sounders). It is recommend that information on all such sources should be included in the registry.

The main items needed to derive the amount of pulse-block days (the number of days that in an area (block) a

certain threshold (pulse) is exceeded) as required in the text of the Commission Decision, are:

- Pulse-generating activity

- Day

- Location

- Source level

Once a register is established, it will be possible to determine the coarse scale spatial and temporal

distribution of impulsive noise sources. This quantified assessment of impulsive noise sources could be used in

the future to determine policy targets. It should also be possible to establish a baseline of “current condition”.

5.3.1.4.2.1.1 Structure

The functionality of the present algorithm is similar to Noise Band Monitoring, but instead of a user-defined

filter, it takes a 10 Hz to 10 kHz band-pass filter.

Then the complete block diagram, in which the particularity SPLrms processing after a certain duty cycle is

added, is as described below:

Page 71: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

71 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Acoustic Data (Data Block)

10 Hz – 10 kHz Filter

RMS

SPL

¿Time = Duty Cycle?

(¿k = nBLOCKS?)

Total RMS

Total SPL Percentile Level

Storage

No

Yes

Meta Data

Figure 42. Indicator 11.1.1 complete flow scheme

The functionality of the modules of this algorithm is the same as the one described in section 5.3.1.1.2.1.

5.3.1.4.2.2 Implementation in ARM Cortex M4 microprocessor

5.3.1.4.2.2.1 Observations and Limitations

The observations and limitations observed in this algorithm are similar to indicator 11.2.1 (please refer to

section 5.3.1.1.2.3.6) but in this case, regarding percentile levels, the output of the algorithm is prepared for

the storage of a single value, which is the percentile level set to L1.

5.3.1.4.2.2.2 Versions

Until now just one version has been developed. This version allows the user to configure the size of blocks, the

sampling frequency, the duty cycle of the measurements and the gain of the channel.

5.3.1.4.2.2.2.1 Code

The code of this algorithm is provided in Annexes\Annex_VI_Indicator_11_1_1.docx

Page 72: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

72 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.4.2.2.2.2 Functionality Validation

Validation of the functionality is made in the same way as in indicator 11.2.1. They have been built for

different input blocks of 2048 samples each. Each block consists of white Gaussian noise and has different

amplitudes. The simulated blocks are read at the entrance of algorithm one by one. When they have been read

the 4 (after 4 input blocks), are repeated again.

As in section 5.3.1.2.2.3.2.2, RMS values obtained using the algorithm developed in C are similar to those

obtained using Matlab code. However, in order to validate the value of SPLrms, a real Nexos platform is

needed (under development).

5.3.1.4.2.2.2.3 Computational Load Measurements

The same manner as in indicator 11.2.1, computational measurements have been carried out using 2048

samples of block processing length. Refer to 5.3.1.1.2.3.7.3.

In the table below the computational load of the algorithm with different duty cycles is shown.

Table 20 Indicator 11.1.1. Computational load vs duty cycle

5.3.1.4.3 Sampling Rate: 48000 Hz

5.3.1.4.4 Sample of 32 bits: (float)

5.3.1.4.5 Size of block: 2048 samples

5.3.1.4.6 Microprocessor: 204 MHz

5.3.1.4.7

5.3.1.4.8 Duty cycle 5.3.1.4.9 Nº Blocks 5.3.1.4.10 Time of processing

5.3.1.4.11 ~42,7 msec 5.3.1.4.12 1 block 5.3.1.4.13 860 µsec

5.3.1.4.14 ~213 msec 5.3.1.4.15 5 blocks 5.3.1.4.16 4.1 msec

5.3.1.4.17 ~1 sec 5.3.1.4.18 23 blocks 5.3.1.4.19 17,8 msec

5.3.1.4.20 ~10.66 sec 5.3.1.4.21 250 blocks 5.3.1.4.22 194,1 msec

5.3.1.4.23 ~30.72 sec 5.3.1.4.24 720 blocks 5.3.1.4.25 554,1 msec

Each block of processing (2.048 sec) takes around 860 𝜇sec. As happened with indicator 11.2.1, it can be seen

how the algorithm is fast enough to be executed in real time.

5.3.1.4.25.1.1.1 Optimization

As occurs with indicator 11.2.1 and noise band monitoring, the implementation of the algorithm within A1 and

A2 Nexos sensors is being carried out and algorithm optimization if needed is expected to be performed at this

stage.

5.3.1.4.26 Good Practices for the user.

As a general recommendation, it is suggested to the user to read carefully all the documentation delivered

together with the GUI, in order for him/her to understand properly the meaning of the inputs that should be

defined by him/her and what output should be expected from the algorithm.

Page 73: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

73 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

It is also highly recommended for the user to read ( (Dekeling R. T., Monitoring Guidance for Underwater Noise

in European Seas, Part II: Monitoring Guidance Specifications, 2014) and (Dekeling R. T., Thomsen, F., Werner,

S., Wittekind, D., Young, J.V., Monitoring Guidance for Underwater Noise in European Seas, Part III:

Background Information and Annexes, 2014) in order set snapshots duration and measurements duty cycle

according to MSFD recommendations.

5.3.1.5 Click Detector

5.3.1.5.1 Introduction

The aim of the present section is to introduce to the reader the solution for clicks generated by marine

mammal’s detection on NeXOS sensors A1 and A2. This module is based on the so-called module implemented

and developed in PAMGuard.

First, we will describe how the algorithm works conceptually explaining the purpose of each block. This will

help the user to configure the algorithm according to his/her requirements. Second, we describe how the

algorithm is ported to C for its use on the ARM microprocessor, indicating its limitations.

5.3.1.5.2 Methodology

Since it was decided in (Delory, 2015), bioacoustics algorithms developed for NeXOS platforms are based on

the open-source PAMGuard software. Therefore, the methodology for the development of the algorithm has

been based on the study of the reference algorithm in PAMGuard. The main and basic modules are identified

and ported to Matlab for technical testing, and then to C for ARM Cortex M4. Functionality validation of the

algorithm is made by comparison with PAMGuard version and Matlab performance.

5.3.1.5.2.1 Study of reference algorithm

The click detector algorithm is based on the so called Java class that can be found on the PAMGuard source

code. Note worthily the most important method implemented in this class is called look_for_clicks and its main

purpose is to distinguish a click within the input signal. Therefore, most efforts focused on understanding the

functioning of this method and its implementation for future optimizing and porting to an embedded platform.

5.3.1.5.2.1.1 Structure

In Figure 43, the Click detector algorithm’s scheme implemented in PAMGuard is described.

Page 74: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

74 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 43. Click Detector Algorithm Scheme implemented in PAMGuard. Picture extracted from help document included in the PAMGuard software.

In the following, the different modules are depicted briefly:

1. Acoustic Data: As mentioned in 5.3.1.5.2.1.2.1, the acquisition module is out of the scope of the

present section and is described in the section on transducer stage signal conditioning unit (4.2.3).

However, it is very important that this module is able to condition the signal in order for functionality

to be preserved. Therefore, it is important to keep in mind that:

a. The output of this module is expressed using floating point arithmetic.

b. The channel sensitivity should be known in order to be able to compute the sound pressure

level of the click’s peak.

c. Metadata regarding the UTC time should be provided in order to establish the time of

detection.

2. Prefilter: consists of a digital filter that decreases the bandwidth of the input signal. This will avoid the

detection of undesired transient noise of possible sound sources located at other spectral locations

than the one of interest. Its output is also used for localization and tracking algorithms. In this case, it

is interesting to have more frequency data within the signal in order to improve the localization.

3. Triggering Filter: This is a digital filter that further decreases the bandwidth of the input signal. It is

used in order to improve the click detection in a frequency range of interest (e.g. a given species

vocalizing at 15 KHz – 22 KHz.)

4. Trigger Decision: This module is in charge of analyzing the input signal and looks for possible clicks.

5. Clip Generator: A clip is generated once a trigger occurs. This module is under development by NEXOS

partner UPC.

6. Clip Data: Although no clip generator is implemented in the present document, data from the

detected clicks are studied and delivered to the user.

5.3.1.5.2.1.2 Identification of basic modules (minimum algorithm features) and Functionality

The identification of the basic modules is carried out by studying the signal flow and the basic methods

implemented in PAMGuard. It is obvious that the basic module will depend on the features that are considered

as minimum. Due to the lack of information by the MSFD on the requirements in terms of signal processing for

descriptor 1, we propose as minimal features:

1. Detect and identify the click.

2. Time of event

3. Peak sound pressure level of the click in dB re 1µPa.

Page 75: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

75 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4. Being able to filter the input signal in order to increase the accuracy of the click detections related to

a specific marine mammal species.

In the following a description of each stage is developed.

5.3.1.5.2.1.2.1 Acoustic Data

This module is described in the section on transducer stage signal conditioning unit (4.2.3). However, it is very

important that this module is able to condition the signal in order for functionality to be preserved. Therefore,

it is important to keep in mind that:

1. The output of this module must be expressed using floating point arithmetic.

2. The channel sensitivity should be known in order to be able to compute the sound pressure level of

the click’s peak.

3. UTC time should be provided in order to record the time of detection.

5.3.1.5.2.1.2.2 Prefilter

For NeXOS sensor A1, this module is not implemented. This module aims to help in localization and tracking

tasks. A1 NeXOS does not contain any localization nor tracking feature, and therefore, it is not implemented.

This module is only implemented for the A2 sensor, providing the possibility of using sound data with

mammal’s clicks detected for localization and tracking performance

5.3.1.5.2.1.2.3 Trigger - filter

This module is implemented for both platforms A1 and A2. It consists of a filtering stage, in which the user

defines whether he/she wants the input signal to be filtered out or not and in affirmative case, the filter

parameters to be used. The purpose of this stage is to increase the efficiency of the click detection by letting

just the information related to the marine animal vocalization being input to the trigger decision stage.

Its implementation is supported with a Matlab-based GUI whose functioning can be seen in section 5.4.3. It is

important to keep in mind that it is the user’s responsibility to review the transfer function of the chosen filter

and evaluate the possible effect of the filter delay to the input signal. The transfer function is shown to the

user. If the user agrees with the transfer function shown, the header file in order to perform the filtering stage

is generated and the filter flag is set to 1.

5.3.1.5.2.1.2.4 Trigger Decision

The trigger automatically makes a measure of background noise and then compares the signal level to the

noise level. When the signal level reaches a certain threshold above the noise level a click clip is started. When

the signal level falls to below the threshold for more than a set number of bins, the click clip ends and the clip

is sent to the localization and classification modules.

The trigger decision stage is able to detect and extract relevant information about the click detected. This

information consists of:

Main frequency ( Hz ). Frequency of maximum amplitude.

𝐿𝑝𝑒𝑎𝑘- Maximum SPL in frequency

Click waveform (start and end time stamps) – Data Clip

Time localization of click event.

This stage is particularly important for the good performance of the algorithm, since it will detect the impulsive

sound which can be related to a generated click. It’s worth to mention that on the help document released by

PAMGuard there is a special comment on trigger parameters which express the need of user experience on

click detection to increase the efficiency of the algorithm performance.

Signal and noise levels are compared by:

Page 76: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

76 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

The noise level N at sample i is measured using ( 7 ):

𝑁𝑖 = 𝛼𝑁|𝑥|𝑖 + (1 − 𝛼𝑁) 𝑁𝑖−1 ( 7 )

The signal level S is measured using ( 8 )

𝑆𝑖 = 𝛼𝑠|𝑥|𝑖 + (1 − 𝛼𝑠) 𝑆𝑖−1 ( 8 )

where 𝛼𝑁 is either the Long filter input parameter when no click is active (i.e. the signal is below threshold) or

the Long Filter 2 input parameter when the signal is above threshold. 𝛼𝑆 is the Short filter input parameter. A

click is started / stopped when the signal to noise ratio goes above / below the threshold parameter. Long,

short filters and the threshold are defined by the user together with other parameters that can be seen in

Table 21 and are explained herein:

Threshold: indicates the sound pressure level at which the algorithm starts looking for clicks.

Long filter: is a weight coefficient for equation ( 7 ) when there is no click present.

Long filter 2: is a weight coefficient for equation ( 7 ) when there is a click present.

Short Filter: is a weight coefficient for equation ( 8 ). This coefficient is used along the whole signal.

Min click Separation indicates the number of samples between two consecutive clicks in order for the

second to be considered as one, avoiding false clicks consisting of transient sounds, or double-peak

clicks.

Max click length: indicates the maximum number of samples that a click event can last.

Presample: indicates the number of artificial samples that the signal is zero-padded with. Zero-value

samples are added to the beginning of each input processing block.

Postsamples: indicates the number of artificial samples that the signal is zero-padded with. Zero-value

samples are added to the end of each input processing block.

Threshold (dB) 0

Long Filter 0,01

Long filter 2 0,001

Short Filter 0,1

Min click Spearation (samples) 0

Max click Length 1024

pre sample (samples) 0

post samples (samples) 0

Parameters

Table 21. PAMGuard Click Detector Module and Matlab Click detector user defined inputs and their default values.

5.3.1.5.2.1.2.5 Clip Generator

When a click is detected, a sound clip is created. This sound clip contains the click waveform. It is worth to

mention that this clip is generated from the output of the pre-filter stage. This is because it has more

frequency information than the output of the trigger filtering stage. This information is used for further species

study/classification and localization purpose.

Page 77: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

77 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.5.2.2 Implementation in Matlab

For technical analysis and optimization, the algorithm was implemented in Matlab and tested with a simulated

click signal. This signal is generated with a Matlab support code provided by PAMGuard. The modules

implemented are then:

Prefilter

Trigger filter

Trigger decision

Clip generator

5.3.1.5.2.2.1 Prefilter and Trigger filter They consist of a GUI in which the user can define the filter to be used. The types of filters available are IIR

Butterworth or Chebyshev Filters and in turn they can be specified as low or high pass and pass band filters by

means of their cut-off frequencies and the sample frequency of work. This GUI is the same one developed for

the implementation of the algorithm in the NeXOS sensors but without the possibility of writing a header file

for the C code. Its functionality can be seen in section 5.4.3.

5.3.1.5.2.2.2 Trigger Decision The trigger decision module is implemented by coding the short and long filters as they are defined in ( 7 ) and

( 8 ). Then the output of these two filters are compared when the signal is above the threshold and if the

condition of SNR > Threshold and there is no click active, then a click event is started and set to True. This is

maintained until the condition mentioned above is not fulfilled anymore or the maximum length of the click

has been exceeded.

Once the start of a click event is detected, the peak is detected and its value and position with respect to the

input signal is stored.

5.3.1.5.2.3 Clip generator

Taking into account the maximum length of the click, the start and end of the click are set. As in PAMGuard,

the user must define the percentage of the click energy for a click clip to be generated and start and end of the

click to be calculated.

In order to do so, the total energy of the click is computed taking into account the maximum length of the

click, with the peak of the click located at the middle position. Then the new energy defined by the user in

percentage form is computed and from the middle position, samples at both sides are added to the click clip

until the energy requirement defined by the user is fulfilled.

5.3.1.5.2.3.1 Functionality validation

In order to test the algorithm implemented in Matlab, a test signal is generated with the support Matlab

function to generate clicks. First 40 clicks are generated and then they are concatenated with random

separation between them. The separation is filled with zeros. The signal lasts 13 seconds and is stored in a wav

file with a sample frequency of 48 KHz. In PAMGuard, the sampling frequency is previously defined in the

audio acquisition module, however the sampling frequency is not a key parameter in this module, since the

detection is made in the time domain. The sampling frequency is only necessary if prefilter/triggering filter are

used or the frequency content of the click needs to be known.

PAMGuard software is set for it to read the signal and click parameters are set as they are defined in Figure 44

Page 78: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

78 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Threshold -3,1 dB

Long Filter 0,01

Long filter 2 0,001

Short Filter 0,1

Min click Spearation 0

Max click Length 1024

pre sample 0

post samples 0

Parameters

Figure 44. Click Parameters for test validation in Matlab

Results from PAMGuard can be seen in Figure 45

Figure 45. PAMGuard Results from test WAV file

Page 79: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

79 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 46. Click Detector Matlab algorithm results with Test WAV file. 40 Clicks detected

Figure 47. Detailed zoom on Figure 46.

As can be seen in Figure 46 and in Figure 47, click detection and its peak detection matches with PAMGuard

results shown in Figure 45.

Once the peak of the click is located, the start and end of the click are established depending on the percentage of the total energy (1024 samples with peak located at sample 512) of the click as it has been explained in 5.3.1.5.2.3. In this case the energy has been established to the 100 % of the click. This is done in order to be sure that the constraint of the distance between two consecutive clicks is taken into account by the algorithm.

Page 80: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

80 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 48. Click Start and end calculation - Matlab function

5.3.1.5.2.4 Implementation in NeXOS

The main goal of the Click Detector algorithm is to find when and where a click has occurred. In order to do that, the input signal must be evaluated in order to check if it exceeds a certain threshold (predefined by the user) for it to be considered a “possible click”. The signal then is filtered by two different filters (short and long filters), both of them, filtered sample by sample and estimate the signal and background noise respectively. The estimated signal to noise ratio (S/N) is computed and compared to the threshold level defined by the user. A click is considered only if the S/N ratio exceeds the threshold level. Then, the algorithm looks for the peak level and its position. Once this is found, it is stored in the click structure.

5.3.1.5.2.4.1 Block Diagram

The implementation of the click detector algorithm in the microprocessor ARM Cortex M4 has been carried out by means of three different functions that are interconnected. These functions are:

Click Detector This is the main function and it is called in the main script where the signal processing is performed.

Look For Clicks This function is called in Click Detector, after the Trigger filter and the absolute value of the input signal is computed.

Get Click Once the click is detected, the peak level of the click and its position is stored in an array of C structures. By default, taking into account that the processing block is 2048 samples long, if the maximum length of a click is 1024 samples, in the best scenario, just 2 clicks would occur within that processing block, therefore, the length of the array of clicks is set to maximum number of clicks that in the best case scenario would occur. The structure of the click detector algorithm implemented for microprocessor ARM Cortex M4 can be seen in Figure 49.

Page 81: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

81 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 49. Structure of the Click Detector Algorithm implemented in C for MicroProcessor ARM Cortex M4

5.3.1.5.2.4.2 Functionality

The click detector algorithm contains three source files .c and four header files .h

Click parameters ( .h )

Look for clicks ( .h / .c )

Get click ( .h / .c )

Click detector ( .h / .c ) Input file contains the signal input with a predefined block size (512, 1024, 2048 samples).

5.3.1.5.2.4.2.1 Click parameters.h

This file contains all the parameters needed to find the clicks, defined by the user. These parameters are:

num_of_clicks_expected. Maximum number of clicks that a click structure can contain. This is limited by the number of samples that are processed at a time (BLOCK_SIZE) and the maximum length of a click in samples.

BLOCK_SIZE. Size of the block that is processed at a time. o More than 3072 samples cannot be introduced because either the sensor or the free version

of the program (LPC Xpresso) do not allow it. o In case two signals with different sizes are introduced as inputs, the Block Size will have the

maximum size. 𝐵𝐿𝑂𝐶𝐾𝑆𝐼𝑍𝐸 = max _𝑙𝑒𝑛𝑔𝑡ℎ(𝑖𝑛𝑝𝑢𝑡1, 𝑖𝑛𝑝𝑢𝑡2)

Prefilter_flag. Indicates if the signal should be filtered before the click detection process. This

parameter is not used by now.

Click Parameters (Header File)

Click Detector

Triggering Filter

Butterworth

Low Pass

Band Pass

High Pass

Chebyshev

Low Pass

Band Pass

High Pass

Absolute Value

Look For Clicks

Long Filter

Short Filter

Set Bit (SNR condition)

Get Click

Page 82: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

82 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter_flag. Indicates if the signal should be filtered after the prefilter process. This parameter cannot be 1 if the prefilter_flag is 0. This parameter is not used by now.

Long_filter_coeff [ 2 ]. An array with Noise filter coefficients.

Default values are (0.00001, 0.000001).

Long_filter_coeff_1 [ 2 ]. This parameter is not defined by the user directly. It is computed as: 𝑙𝑜𝑛𝑔𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓1

= 1 − 𝑙𝑜𝑛𝑔𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓

Short_filter_coeff. Signal filter coefficient. Default value is 0.01

Short_filter_coeff_1. This parameter is not defined by the user directly It is computed as follows:

𝑠ℎ𝑜𝑟𝑡𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓1

= 1 − 𝑠ℎ𝑜𝑟𝑡𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓

Trigger_level. This is the threshold level. This parameter indicates the amplitude level at which an

input sample can be considered as a possible click. This level will be asked in dB re 1µPA to the user and will be converted to Digital units automatically taking into account the sensitivity of the system.

Max_click_length. Maximum size of a click in samples. By default is 1024.

Min_click_separation. Separation between two clicks in samples. By default is 100. However, we do

not count with it in this algorithm.

Previous_sample_lng. This parameter is used to initialize the long filter. It is not defined by the user.

Previous_sample_sh. This parameter is used to initialize the short filter. It is not defined by the user.

5.3.1.5.2.4.2.1.1 Matlab files

In order to let the user define some of the parameters in the Click detector algorithm, we have developed a Matlab script that is able to generate the click_parameters.h file. Open Generation_Of_Click_Parameters.m in matlab, and run the script. It’s worth to mention that the function write_c_h_file_parameters should be either in the working path directory or added to it.

5.3.1.5.2.4.2.2 Click_detector ( .h / .c )

This function processes data and detects when and where a click is detected. The functionality of click_detector is to get the absolute value of the input, getting the position of possible clicks by calling look_for_clicks and then getting peak values and positions of the clicks detected calling get_click.

5.3.1.5.2.4.2.3 Look for clicks ( .h / .c )

The first thing this function does is to evaluate the input signal with the trigger level. If the signal is above or equal than the trigger level we can start looking for the clicks and click_status parameter is 1. Once we know the click status, we run the short and long filters sample by sample. (Run_short_filter and run_long_filter).

- Run_short_filter. This function filters the input signal starting with the first sample. The signal level is estimated using:

Page 83: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

83 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

𝑠𝑖𝑔𝑛𝑎𝑙𝑙𝑒𝑣𝑒𝑙 = (𝑠ℎ𝑜𝑟𝑡𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓

∗ 𝑠𝑎𝑚𝑝𝑙𝑒) + (𝑠ℎ𝑜𝑟𝑡𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓1

∗ 𝑝𝑟𝑒𝑣𝑖𝑜𝑢𝑠𝑠𝑖𝑔𝑛𝑎𝑙𝑙𝑒𝑣𝑒𝑙 ) ( 9 )

- Run_long_filter. This function filters the input signal in order to get an estimation of the background

noise. Depending on click_status the noise level is measured with a different noise filter coefficient. o If click_status = 1, long filter coefficient will be 0.000001. o If click_status = 0, long filter coefficient will be 0.00001.

𝑛𝑜𝑖𝑠𝑒𝑙𝑒𝑣𝑒𝑙 = (𝑙𝑜𝑛𝑔𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓[𝑐𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑥] ∗ 𝑠𝑎𝑚𝑝𝑙𝑒)

+ (𝑙𝑜𝑛𝑔𝑓𝑖𝑙𝑡𝑒𝑟𝑐𝑜𝑒𝑓𝑓1[𝑐𝑜𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑡𝑥] ∗ 𝑝𝑟𝑒𝑣𝑖𝑜𝑢𝑠𝑛𝑜𝑖𝑠𝑒𝑙𝑒𝑣𝑒𝑙

)

( 10 )

Once both estimations are computed (signal and noise levels), it is necessary to know if the signal to noise ratio is larger than the trigger level. If this condition is true then a click has been detected. (This condition will be stored in a variable called Overthreshold) If the signal and the signal to noise ratio are above the trigger level, we can evaluate the clicks.

- If it’s the first time a click has been detected, the position of this detection will be stored in real_clicks variable and num_of_clicks will increment to 1.

- If num_of_clicks is not zero (because a click has been already detected) it means that another click has been detected, so we need to know in which position this occurred. In order to do that, we check if the difference between the new position that is being evaluated and the position that previously has been stored in real_clicks is greater than the maximum click length (by default 1024), if this is true then, another click has been detected and the position evaluated is store on real_clicks, and again, num_of_clicks is incremented. It is required that the difference between clicks is 1024 samples.

Finally, real_clicks will contain the positions where the signal to noise ratio is for the first time above the trigger level, regarding the difference between clicks (1024). And num_of_clicks will be the number of clicks that has been detected.

(We add a board_LED_set that every time a click is detected, the blue led is on. When detections are too fast to be seen, an oscilloscope is needed).

5.3.1.5.2.4.2.4 Get_click ( .h / .c )

This function looks for peak values of the click and its position once we have real_clicks. First of all, we have declared a struct type named Click that it is used in the function. Click type consists of two different parameters regarding amplitude and localization of a click event. In order to find peak values, we need boundaries. Because of the maximum click length (by default 1024), the samples that we have to evaluate from real_clicks (which contain the positions where a click has been detected) are 512. However, it these samples exceed the block size, we will stop looking for peaks when we get to the last sample of the signal input.

Page 84: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

84 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Once we have delimited the boundaries, we start looking for the peaks. So as to find them, we need to check whether the amplitude of the next sample to process is the same or is greater than the amplitude of the click detected (stored in real_clicks). If so, we have found the click’s peak and we get its value and its position too. The value of the peak, will be converted to SPL by means of a look up table that is included in the code. The position and the SPL value are stored in the Click structure.

5.3.1.5.2.4.3 Observations and Limitations

The read of this document is highly recommended in order to understand how the algorithm works and how

the click parameters should be defined by the user. PAMGuard suggests the familiarization with the input

parameters defined by the user and since the present algorithm is based on the same algorithm, the same

suggestion is made for NeXOS users.

Special attention should be paid on the triggering filtering stage and the specification of the threshold level,

which has to be referenced to 1 µPa. The threshold would be automatically corrected by the click parameters

generator taking into account the channel sensitivity and ADC transfer functions.

The main limitation, is the maximum length of the click event. This is due to the limitation on the block size for

the audio data processing (that is 2048 samples).

Other limitations are related to the extra-features that are implemented in PAMGuard but haven’t been

implemented here so far (for instance, the frequency content of the click).. By now, it is known that the

computational load has to be as small as possible. However, there is no maximum established by NeXOS. Of

course, this limit will depend on the functioning and need of other tasks that should be carried out by the

microprocessor. Therefore, by now, the extra features have been set to the minimum and it is expected that

an optimization and a feature addition will occur at next NeXOS Stage in task 6.4 Sensor assembly and factory

testing.

5.3.1.5.2.4.4 Versions

There will be just one version delivered.

5.3.1.5.2.4.4.1 Code

It can be seen in Annexes\Annex_IV_Click_Detector.docx.

5.3.1.5.2.4.4.2 Functionality Validation

Since the Matlab algorithm was validated by comparison with PAMGuard Output against the same input

signal, the output of the Click Detector algorithm implemented in C is validated by comparison with that

implemented in Matlab.

Since the output of the Click Detector algorithm developed for NeXOS consists of the peak level of the click and

the position with respect to the input block size, the comparison between the two algorithms will be done

based on these two parameters.

In order to do so, a simulated signal containing 2 different clicks is generated and used as an input to both

algorithms.

Page 85: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

85 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 50. Simulated Click generated signal for NeXOS Algorithm Validation

Position

Sample Q15 Float

270 29789 0,9091

1294 29789 0,9091

270 0,9091

1294 0,9091

Peak Value

LPC 4337

Matlab

Table 22. Results obtained with Click Detector Algorithms implemented in Matlab and in NeXOS (C programming language)

Results are consistent with Matlab output regarding Peak Amplitude and localization in time of the click event.

5.3.1.5.2.4.4.3 Computational Load Measurements

Processing time has been measured for 2048 samples. As it can be seen in Figure 51, this processing time is

3.52 ms. It is obvious that this time is independent from the sample frequency ( fs ), however it is very

important when real time processing is desired.

Taking the highest possible ( fs = 100KHz ), 2048 samples means 21 ms. This means that, in principle, the

algorithm can be run in real time, however care should be taken regarding:

• As it has been mentioned before, extra features (obtain click event information) will be added to the

actual algorithm, and this will increase the processing time, therefore a maximum should be

established in order to know what features can be added or not.

• The speed of the microcontroller at the time of the measurement is maximum which may not be the

most efficient from a power consumption perspective.

• The microcontroller may be taking care of other processes (apart from audio processing) and this will

reduce the time window for audio processing.

Page 86: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

86 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Algorithm: CLICK DETECTOR

Block Size (Samples): 2048

Matlab ARM CORTEX M4 Execution time (ms)

Click Position 270 269

Click Value 0,90909 0,909093,52

FLOAT

Figure 51. Processing time for the Click Detector

5.3.1.5.2.4.4.4 Optimization

No optimization is performed to the actual algorithm, this is expected to be carried out at the next NeXOS

stage in NeXOS task 6.4 Sensor assembly and factory testing.

5.3.1.5.3 Good Practices for the user

It is highly recommended to read carefully all the documentation about this algorithm delivered together with

it, this consists of:

The present document.

Annex with code

Click Detector GUI (section 5.4.3)

As it has been mentioned before, special attention should be paid to the triggering filtering stage and the

specification of the threshold level, which has to be referenced to 1 µPa.

Filters implemented are the responsibility of the user, therefore the user should be familiar with filtering

techniques and should be aware of the signal transformation that occurs when a filter is applied to the signal.

The Click Detector GUI aims to help the user in the estimation of the performance of the filters applied,

however it is highly recommended for the user to get familiar with filtering techniques if he/she does not have

previous experience on such topic.

The threshold would be automatically corrected by the click parameters generator taking into account the

channel sensitivity and ADC transfer functions, therefore the user has not to get worried about this topic. If the

system sensitivity is changed due to any reason, the user may change this in the code which it is something not

trivial if the user has not previous experience on microcontroller programming, under his responsibility.

Page 87: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

87 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.6 Whistle Detector

5.3.1.6.1 Introduction

The purpose of the Whistle Detector is to detect whistle like vocalizations from marine mammals, in a similar

way as the Click Detector. The method for the detection takes the spectrogram data as input and extracts the

contours of tonal sounds, applying a noise removal process in order to improve the contour detection.

Some of the noise removal blocks that the algorithm includes in PAMguard are optional, and their final

objective is to improve the contour detection. Here the work focuses on the blocks included in PAMguard that

have been configured as essential for the algorithm to operate.

5.3.1.6.2 Methodology

The algorithm is based, like the other bioacoustic algorithms, on the open source software PAMGuard. Among

the different algorithms that PAMGuard offers related to passive underwater acoustic monitoring, one is called

Whistles and Moans, based on a previous version called Whistle Detector. This is the reference algorithm for

NeXOS Whistle Detector.

5.3.1.6.2.1 Study of reference algorithm

The Whistles and Moans algorithm in PAMGuard follows the following scheme:

Spectrogram

Median Filter

Average

Subtraction

Thresholding

Connecting

Regions

FFTlength

FFThop

nFilter

(odd)

1024

512

61

updateConstant

0.02

Threshold

8 dB

ConnectionType4 / 8

minFreq

maxFreq0

24e3

minLenght10

minTotalSize20

RAW Signal

Gaussian Kernel

Smoothing

(Optional)

nW

his

tle

s

Init

ial fr

eq

[n]

Fin

al

fre

q[n

]

Init

ial ti

me

[n

]

Fin

al

tim

e[n

]

Ma

x f

req

[n]

Min

fre

q[n

]

Du

rati

on

[n

]

Rejoining and

Branching

Regions

(Optional)

Click Removal

(Optional)

MaxCrossLength5

Figure 52. PAMGuard Whistles And Moans Detector block diagram.

Page 88: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

88 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.6.2.1.1 Structure

Click removal: It is common for dolphin whistles to be overlaid by broadband clicks from other animals, so the

clicks are removed from the raw audio data in blocks of the same length as the FFT in the subsequent

spectrogram.

Spectrogram: The spectrogram consists of a successive FFT of the data input, with a determined number of

points and a determined FFT hop which overlaps one slice with another.

Spectrogram Noise Removal: Three noise removal algorithms are applied to the spectrogram data to improve

the contour detection.

Median filter: Filter to enhance tonal peaks in the spectrogram. It obtains a median value and

subtracts it from the original data.

Average subtraction: Running average background to remove constant tones subtracting it from the

output of the median filter.

Gaussian Smoothing Kernel: Smooth of the spectrogram by convolving it with a Gaussian smoothing

kernel. It is useful as it removes a large amount of single pixel regions.

Thresholding: All data points in the denoised spectrogram below a defined threshold are set to zero. This block

has two possible outputs: one in which the points of the denoised spectrogram over the threshold are set to 1,

and other in which that points are left with its FFT values.

Connecting Regions: The binary map of points proceeding from the threshold is divided into regions according

if the pixels are in touch or not. There are two different kinds of connection: connect-4 (four sides) and

connect-8 (four sides and four diagonals). Parameters like minimum total length or minimum number of pixels

determine when a region is considered a whistle or is discarded.

Rejoining and Branching Regions: Each whistle could cross or be crossed by other(s) whistle(s). Connecting

Regions detects them as a unique region, so this block tries to split the crossed whistles into different

branches.

5.3.1.6.2.1.2 Identification of basic modules (minimum algorithm features) and Functionality

The fundamental modules that the Whistles and Moans algorithm in PAMGuard needs to work properly, are

the ones that conform the following block diagram.

Figure 53. Fundamental PAMGuard Whistles And Moans Detector flow scheme

A more specific explanation of each module is provided below.

Noise Removal Process

Spectrogram

Median Filter

Average

Subtraction

Thresholding

Connecting

Regions

FFTlength

FFThop

nFilter

(odd)

1024

512

61

updateConstant

0.02

Threshold

8 dB

ConnectionType4 / 8

minFreq

maxFreq0

24e3

minLenght10

minTotalSize20

RAW Signal

nW

his

tle

s

Init

ial fr

eq

[n]

Fin

al

fre

q[n

]

Init

ial ti

me

[n

]

Fin

al

tim

e[n

]

Ma

x f

req

[n]

Min

fre

q[n

]

Du

rati

on

[n

]

Noise Removal Process

Page 89: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

89 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.5.2.1.1.1. Spectrogram

A spectrogram is, in essence, computed as a succession of FFTs of a signal with a determined overlap in time.

This overlap is configured here via a parameter called FFThop. This parameter indicates the jump from the

beginning of a FFT and the beginning of the next one. A typical FFThop is 50 % of the FFTlength parameter where

FFTlength is the number of samples processed.

PAMguard contains a certain amount of code meant for the graphic representation of the spectrogram. This

will be directly made in Matlab with the proper function and will not be needed in NeXOS, so it is not relevant

to explain it here. On the other hand, the mathematical calculation of the spectrogram is the fundamental

basis of the Whistle Detector, and its parameters will have a direct impact on both whistle detection and time

consumption.

The spectrogram generates a different number of slices depending on the divisions of the signal according to

the values of FFTlength and FFThop.

5.3.1.5.2.1.1.2. Spectrogram noise removal: Median filter

The spectrogram noise removal stage is included in PAMguard both in the spectrogram itself and in the

Whistles And Moans detector. First part of this stage is the median filter.

The median filter is used to enhance tonal peaks in the spectrogram by flattening the spectrum across the

entire frequency range. In order to do this, it uses the median value in spite of the mean because in order to

obtain stable values for the central tendency of each whistle.

This filter examines a FFT slice from the spectrogram at a time. Its parameter ‘nFilter’ indicates how many

points it will take to calculate its median; being half of them at each side of each central value. This median

value is then subtracted from the original data. This is represented in equation ( 11 ).

𝑦𝑚𝑒𝑑𝑖𝑎𝑛𝐹𝑖𝑙𝑡𝑒𝑟 = 𝑦𝑓 − 𝑚𝑒𝑑𝑖𝑎𝑛(𝑦𝑓−

𝑛𝐹𝑖𝑙𝑡𝑒𝑟2

: 𝑦𝑓+

𝑛𝐹𝑖𝑙𝑡𝑒𝑟2

) ( 11 )

5.3.1.5.2.1.1.3. Spectrogram noise removal: Average subtraction

The aim of the average subtraction module is to remove constant tones from the spectrogram. The process is

the mathematical tool “running average background removal”. Background removal is a kind of noise removal

mainly used in image processing. It tries to suppress the information in the background to enhance the

information in the foreground. To do this in this case, the running average is calculated and then subtracted

from the input data (in logarithmic units). Again, this block processes a slice at a time.

Equation ( 12 ) shows the running average calculation. There is a parameter which impacts clearly in the result.

It is the α of the equation, or updateConstant in PAMGuard. This parameter indicates “how much” of the signal

is used to calculate the average. A small number (typically, 0.02) indicates great amounts of background

suppression from not much signal, and vice versa.

𝑏𝑡𝑓 = 𝛼 · 𝑙𝑦(𝑚𝑒𝑑𝑖𝑎𝑛𝐹𝑖𝑙𝑡𝑒𝑟)𝑡𝑓 + (1 − 𝛼)𝑏𝑡−1𝑓 ( 12 )

The equation ( 13 ) shows the subtraction of the result of from the original input.

𝑙𝑦𝑡𝑓(𝑎𝑣𝑒𝑟𝑎𝑔𝑒𝑆𝑢𝑏𝑡𝑟𝑎𝑐𝑡𝑖𝑜𝑛) = 𝑙𝑦𝑡𝑓(𝑚𝑒𝑑𝑖𝑎𝑛𝐹𝑖𝑙𝑡𝑒𝑟) − 𝑏𝑡−1𝑓 ( 13 )

5.3.1.5.2.1.1.4. Thresholding

A threshold is applied to the input, putting to zero all data points below that threshold. On the other hand, the

data over threshold is treated in three different ways:

a) A RAW output with the data input as it is, without performing the threshold.

Page 90: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

90 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

b) A binary output where the data over threshold is put to one.

c) An output where the data over threshold is left as it was in the input.

The default value of the threshold parameter is 8 dB. This parameter has a critical impact in the next stages of

the processing, as the regions detected depends on what amount of data is 1 or not.

5.3.1.5.2.1.1.5. Connecting Regions

This module connects the points in the spectrogram proceeding from the Thresholding stage to define the

regions with whistles detected. It has as input the binary map proceeding from the Thresholding process (the

rest of the Thresholding outputs are only used in purposes of graphical representation of the spectrogram).

This stage of the process is to connect these pixels in the binary map into regions, being these regions made up

of pixels in direct contact with another. This connection can be of two different types: connect-4 and connect-

8. In connect-4, the spectrogram pixels are considered in contact if they are in touch on their sides. In connect-

8, in addition of this, they are considered also the contact in the corners.

Once the regions are defined and all the possible pixels are included in each of them, the regions that contain

less than a minimum number of pixels (minTotalSize, by default 20) or that are shorter than a minimum total

length of time bins (slices, named as minLength) are not considered as final regions detected. The regions

detected are also defined between a minimum frequency and a maximum frequency (minFreq and maxFreq).

Out of that range, the input bins are not processed.

In order to do all this processing, this module needs two slices as input, considering that each one of them has

to be compared with the one immediately next to it to create the regions and decide the connections.

5.3.1.6.2.2 Implementation in Matlab

The strategy followed for the Matlab implementation of the Whistle Detector is the programming flow that C

would have, in order to prepare the code to be transferable to the microcontroller without major changes.

This implies avoiding Matlab resources not available in the ARM CMSIS DSP library such as implicit declaration

of variables, certain built-in functions, etc. A special resource is also used: the division of the input signal into

chunks, to simulate block entries in NeXOS.

5.3.1.6.2.2.1 Spectrogram

Spectrogram functions in Matlab and PAMguard are alike. The first and unavoidable process is the calculation

of how many chunks can be processed for each block. As the FFThop has to be used from one FFT to the next,

two chunks are processed at a time, so the FFT of the part that contains a part of the first chunk and a part

from the next one can be calculated. This is illustrated in Figure 54.

Input [n-1] (BLOCK_SIZE) Input [n] (BLOCK_SIZE)

fft_hop

FFT [m-2] (fft_length)

FFT [m-1] (fft_length)

FFT [m] (fft_length)

Figure 54. Example of overlapping from one FFT to the next in two different chunks of the input signal for fft_length = BLOCK_SIZE and fft_hop = fft_length/2

Page 91: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

91 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

The number of slices is calculated at the beginning, to know how many slices will result from each FFT process.

The first iteration this number will be higher than the rest of them, since there are two chunks to process.

From the second on, we only have to process the part than the first chunk shares with the second, and the

second one. In the example of the Figure 54, if it is referred to a first iteration of the spectrogram, in the

second one we only have to process two chunks in spite of three; the FFT[m+1] (from the shared part of

Input[n] and Input[n+1]) and the FFT[m+2] (from Input[n+1]).

As the spectrogram needs two chunks as input, the first of all will be necessarily zero, in order to process the

first real chunk. That means that a few outputs from the spectrogram are incorrect, depending on the FFTlength

and the FFThop. In the preceding example, the first two slices will be irrelevant since they are calculated with a

chunk which contains only zeros.

The spectrogram outputs a matrix, since it obtains several FFT slices from each pair of chunks. The number of

slices determines the height of the matrix, and the fft_length, its width. For this reason the rest of the Whistle

Detector is conditioned by the number of slices the spectrogram obtains. Until all slices are processed, the

spectrogram cannot process a new chunk.

Since the FFT of each slice has a positive and negative part, and the spectrogram only needs the positive one,

the output matrix of the spectrogram has a 𝐹𝐹𝑇𝑙𝑒𝑛𝑔𝑡ℎ

2 width. This reduces the time consumption for the rest of

the algorithm by half.

5.3.1.6.2.2.2 Median filter

The median value is calculated from the input slice by slice that comes directly from the spectrogram, and then

is subtracted from the input itself.

The nFilter parameter indicates the order of the filter. An array is created where there are half nFilter points

that repeat the first values of the input, then the complete input and then the half nFilter points of the end of

the input. This array is ordered in descendant order by the function bubble (which in the other hand uses the

function swap). From this the median value is extracted and stored as the first output. The algorithm continues

over the rest of the slice. The operation of the median filter can be seen in Figure 55.

Input Data

5 3 1 4 6 8 7 2

Data for median calculation

5 5 3 1 4 6 8 7 2 2

Median values

5 3 3 4 6 7 7 2

Figure 55. Example of the operation of the Median Filter

5.3.1.6.2.2.3 Average Subtraction

Since this module is fundamentally a simple pair of operations sample-by-sample, its translation from Java to

Matlab is practically immediate.

The equations are also ( 12 ) and ( 13 ), so they are written directly. The block diagram that defines the entire

process is shown in Figure 56.

Page 92: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

92 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Log(|*|)

z-1

z-1

α

1-α

+

+ 10(*)

bn

bn-1

+-

+

+

Input

Output

Figure 56. Block diagram for the average subtraction module of the Whistle Detector

There is only one consideration; the median filter can result in zeros, whose base-10 logarithm is - the medints

that repeat the first values of the input, then the compb, that transforms in ∞, so then all the algorithm result

in infinites. To avoid that, if the median filter slice has any zeros, logarithm calculated is log(10-100).

In previous versions this didn’t occur since as the median Filter works with zeros, there was a checking in

which if b wasn’t a number (function isnan()), bn-1 was not actualized. In debugging process, we saw that this

instruction consumed certain amount of time, and wasn’t translatable to C, so it was changed to median filter

and the mentioned logarithm approximation was applied.

5.3.1.6.2.2.4 Thresholding

The thresholding process is simple, and there is a difference between Java and Matlab. As the output with raw

values and the one with the FFT thresholded are not used, the only output is the binary map, that is the input

that Connecting Regions needs.

5.3.1.6.2.2.5 Connecting Regions

To obtain regions containing the pixels of the thresholded spectrogram is the objective of the Whistle Detector

algorithm, since these regions will be the potential whistles. This algorithm is noticeably the most particular of

all, as it uses object-oriented programming over two slices of the signal, without performing any significant

processing. Two objects are needed for this purpose: Region and Pixel. Both are Matlab handles.

Pixel: This object contains only two properties: row and column. Both correspond to the row and the

column of the pixel in the binary map from the thresholded noise-reduced spectrogram. The pixels

allow us to know the size of the region, its first and last slice, and its higher and lower point. They

could be used to plot the regions on the thresholded spectrogram.

Region: The regions are the sections of the thresholded spectrogram which contain pixels in contact.

To define all the parameters needed for this object, several properties are used:

PixelsInReg: Array of as many Pixel objects as pixels are in the Region.

totalPixels: Number of total pixels in Region, contained in PixelsInReg.

firstSlice: First slice whose pixel(s) have been included in the Region.

lastSlice: Last slice whose pixels have been included in the Region.

isConnected: Array which contains the reg id of the Regions that are connected to this Region. If

there aren’t connections, is 0.

isGrowing: boolean (0,1) that indicates if the Region accepts more Pixels or not.

Page 93: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

93 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

isDead: boolean (0,1) that marks the Region as non-existing when it is merged with other one.

reg_id: Number that identify in a univocal way the Region. It coincides with the index of the

RegionArray of ConnectingRegions.

Properties such as minimum and maximum frequency, initial and final frequency and initial and final

time are not considered, because they are immediate to calculate from the pixels in the region, and

they are not necessary for the region definition and the whistle detection. The main reason is that in

NeXOS, including all these properties will reduce drastically the number of regions that can be stored

in memory. This is the actual line of work: to see how many regions can be detected, including all

their characteristic parameters.

The methods in the object Region are, besides the constructor, the ones listed hereunder.

AddPixel(R,pixel)

Adds a pixel pixel to Region R, and actualizes the parameters needed. It won’t work if the Region

is ended (this must not happen, but is included to detect possible errors).

MergeRegions (RT,R1,R2)

Unifies Regions R1 and R2 in RT. RT can be one of them or not. All the parameters from both

Regions are included, except for the connections. They are included in the function

ConnectingRegions as some checkings must be done.

ConnectRegions (R1, connection)

Includes the n_reg defined in connection into the array of connections in R1. This has to be done

for both regions to connect.

FinishRegion(R)

Region R is marked as not growing.

Connecting Regions module

The new slice is compared with the old one through the frequencies decided. When a pixel is non-zero, the

connect-4 or connect-8 process is implemented. If connect-4 is enabled, ConnectingRegions checks if there is

another pixel preceding this pixel in the same slice. If so, it connects the actual pixel to the preceding region,

labeling the pixel with its reg_id. Then, the pixel is compared with the pixel next to it in the old slice. If this

pixel is also different to zero, there can be two possibilities:

a) The preceding pixel is zero, so the actual pixel is included and labeled in the region from the pixel

next to it.

b) The preceding pixel is also different to zero (so the actual pixel is yet connected to this one), so

both Regions are marked as connected.

If nor the pixel next to the actual one nor the pixel precedent to it are different to zero, this pixel may conform

a new Region. To guarantee that there is not another Region next to this one, this condition is checked, and if

there is a Region containing the next pixel in the new slice and the next one in the old slice, the actual pixel is

added to this Region (this strategy avoids the creation of a single-pixel Region, saving memory consumption).

If connect-8 is selected, all the preceding process is also done, but there are two more conditions to check. If

the pixel in the corners are not zero and are not in the same Region as the actual pixel, both Regions are

marked as connected and labeled if the actual pixel is not 1. If it is 1, it is directly added to the Region and

labeled.

Page 94: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

94 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Once the slice is covered, we go also round RegionArray in order to finish Regions, when they have not grown

during an entire slice. We also check if there are connections to perform between finished Regions, so that

Regions are properly merged into one. This process implies the preservation of the connections left, without

repeating them. To do this, the property isConnected from both Regions is analyzed and a vector with the

connections left is created. This array is stored as the new Region isConnected property.

There is a last step, which is to check if the Regions that have been detected are or not going to be considered

as potential whistles. The array ConnectedRegions stores the Regions that pass all the conditions, including

minTotalSize in pixels and the minLength in slices.

5.3.1.6.2.2.6 Functionality validation

In order to prove that the developed algorithm performs properly, a test input is introduced both in PAMguard

and Matlab, and the outputs of each module are compared. The used input is a group of real dolphin whistles

with a light tone at 5 kHz.

The parameters are default: median filter length 61, average subtraction constant 0.02, threshold 8 dB,

frequency between 0 Hz and 24 kHz, connect-4, MinLength 10 time slices, MinTotalSize 20 pixels. The rest of

the modules in PAMguard are not activated: there is not click suppression, branched regions are left intact,

Gaussian Kernel is off.

It can be seen in Figure 57 how the spectrogram developed in Matlab obtains a representation very similar to

PAMguard. The perceived differences are due to rendering. In Figure 58 a comparison between the noise

reduction stage (median filter and average subtraction) between both algorithms are displayed. Again, there

are perceived differences due to rendering, but the effect of both modules is visible.

Figure 59 shows the difference between the thresholded spectrogram in Matlab and PAMguard, where a

sensible change from one result to another can be observed. This is probably caused by a conversion factor in

PAMguard and remains a point to resolve. Using a lower threshold the two outputs do coincide as can be seen

in Figure 60, but their Region-count doesn’t. This is under study at the moment.

Figure 57. Comparison between Matlab (left) and PAMguard (right) spectrogram

Page 95: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

95 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 58. Comparison between Matlab (left) and PAMguard (right) noise reduction stage

Figure 59. Comparison between Matlab (left) and PAMguard (right) thresholded spectrogram

Figure 60. Comparison between a thresholded spectrogram in Matlab (left) with 3 dB threshold and a thresholded spectrogram in PAMguard (right) with 8 dB threshold

Concerning the number of Regions, we are going to compare executions with different parameters between

Matlab and PAMguard. While there are sensible differences between Matlab and PAMguard now being

studied. updateConstant and nFilter are maintained at their default values (0.02 and 61 respectively).

Page 96: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

96 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

M

atla

b

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

Mat

lab

PA

Mgu

ard

FFTlength 102

4 102

4 102

4 102

4 102

4 102

4 102

4 102

4 102

4 102

4 512 512 512 512 256 256

FFThop 512 512 512 512 512 512 256 256 256 256 256 256 128 128 128 128

Threshold 8 8 8 8 5 5 8 8 8 8 5 5 5 5 3 3

Connection

Type 4 4 4 4 8 8 4 4 8 8 4 4 8 8 8 8

MinFreq 0 0 0 0 0 0 0 0 10e

3 10e

3 0 0

10e3

10e3

0 0

MaxFreq 24e

3 24e

3 24e

3 24e

3 24e

3 24e

3 24e

3 24e

3 15e

3 15e

3 24e

3 24e

3 15e

3 15e

3 24e

3 24e

3

MinTotalSize

20 20 10 10 20 20 10 10 10 10 20 20 10 10 10 10

MinLength 10 10 5 5 10 10 5 5 5 5 10 10 5 5 5 5

Connected

Regions 2 8 5 23 13 20 38 61 12 37 22 29 33 29 33 29

Table 23. Comparison between connecting regions performance in Matlab and PAMGuard

5.3.1.6.2.2.7 Matlab code

Please see Annexes\Annex_V_Whistle_Detector.docx.

Page 97: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

97 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.6.2.2.8 General overview

In this section we explain the function and interdependences of the different blocks of the Whistle Detector,

mainly based on the Matlab version.

main.c

The main method includes some code for the Whistle Detector including initialisation. This includes all the

variable declaration, the initialization of global variables like Nreg (number of the next Region to create),

OldInput (needed for the overlap) and input parameters such as constants like fft_hop, nFilter, etc.

In addition to the initialization of OldInput, the LastAverageInput has also to be set to zero. This is the slice of

the coefficients obtained in AverageSubtraction to do the average subtraction process. Other important steps

must be done before everything starts like the calculation of the range for the Region detection. As there are a

maxFreq and a minFreq, there are a minPix and a maxPix in each slice of fft_length pixels, where the

ConnectingRegions algorithm is going to run.

The Threshold is also converted to linear scale, in order to threshold the signal without calculating logarithms

sample by sample.

globals.h

The whistle detector uses many shared variables across different functions. To avoid passing one to another

and copy memory once and again, a header contains an external declaration of all the shared variables. Once

the global variables are defined in main.c, they can be used in any part of the algorithm.

This strategy is widely used as a clean, reliable solution to link various source files in a program.

whistle_detector_f (.h and .c)

This is the core of the entire algorithm, distributing the variables, the slices and the results as needed. It

returns the number of whistles detected directly from ConnectingRegions.

The first part of this file is the calculation of the number of chunks to split the two concatenated inputs and

decide the number of iterations that the spectrogram will do.

The number of chunks is the number of times the processing needs to be done. The Spectrogram matrix size is

n_chunks x fft_length, so in each iteration a FFT slice from this matrix is processed, and it returns to the chunk

calculation and the Spectrogram module when done.

spectrogram_f (.h and .c)

This module is similar to the one in Matlab; everything explained earlier (Spectrogram) is totally valid here

except for one thing deriving from the FFT: the length of the information. The CMSIS FFT used to calculate it

obtains a FFT whose positive part occupies fft_length in spite of fft_length/2, this has to be considered along

the whole algorithm. Basically, the processing has to be done through the entire slice and not half of it.

A function called fft_f is created to calculate the FFT properly using this library.

fft_f (.h and .c)

The FFT is calculated using the CMSIS-DSP library. The module for the FFT used is arm_cfft_f32. It needs a

2*fft_length input, with the real part of the values in the even positions (considering zero) and the imaginary

ones in the odd positions. As we don’t have complex numbers as input, all the imaginary values are zero.

Strictly the FFT has 2*fft_length points, but CMSIS works with fft_length and obtains a positive part with length

fft_length.

Page 98: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

98 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

With this input, the FFT is calculated and passed to the output.

medianFilter_f (.h and .c)

In this case, the module is identical to its Matlab version. Functions swap and bubble to calculate the median

are also implemented. The only commentary is that it needs the function fabsf to get the absolute value in

float format from the library math.h.

averageSubtraction_f (.h and .c)

Again, this block is the same as in Matlab. It uses the functions log10f, fabsf and powf from math.h.

thresholding_f (.h and .c)

As in PAMGuard and Matlab, the thresholding process compares the spectrogram from the noise removal

stage with a threshold in dB, putting the values to 1 (above) or 0 (below).

In order to save processing time, the comparison is performed between each sample of the noise-removed

spectrogram and the threshold in linear scale, which has been calculated in main.

connectingRegions (.h and .c)

The connecting regions module has been largely improved with respect to the Matlab version. In the platform

version, there are no connections stored, as the Regions touching other Regions are immediately merged in

one of them, being the other one discarded, thanks to the usage of linked lists.

As the Regions conform a struct, we have decided to integrate the nodes of the list within the Regions itselves,

avoiding to create a struct for the Region and another struct for the node. The pixel object in Matlab has

disappeared in C in order to save memory, but the struct Region includes information about its number of

pixels, first and last slice, first frequency pixel and last frequency pixel, that are the relevant parameters to

characterize each whistle.

5.3.1.6.2.2.9 Observations and Limitations

Because of memory limitation, a maximum number of Regions has to be set, estimated to be 500 (the length

of the RegionArray). This made necessary that the Regions be stored in a dynamic list.

The number of connections was an array in Matlab, so it was a very limiting parameter if we did it that way in

C, so we developed a strategy to merge the Regions immediately after each slice processing, so the connecting

process disappeared.

As the number of slices is a 16-bit integer, the actual maximum number of slices is 65535 – which should be

plenty in the general case. This can be changed to a 32-bit integer, or even 64-bit, but this has a direct impact

on the memory consumption of RegionList.

5.3.1.6.2.2.10 Versions

After a first version that contained the spectrogram, the thresholding and the connecting regions modules, in

order to observe if the memory limitations allowed the algorithm to work properly, the noise removal process

(median filter and average subtraction) was included, resulting in version 1.0.

In the first test-version there was a RegionArray containing the Regions, as in Matlab. But this array faced

memory limitations when ported to C, estimated to be 500 Regions, which was unnecessary because deleted

Regions were still occupying memory. We use linked lists instead. In version 1.0 the Regions are thus stored in

a linked list, and they grow and merge online, before being terminated. This strategy discards the function

ConnectRegions, the parameter connections, and stores in memory only the relevant Regions.

Page 99: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

99 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

5.3.1.6.2.2.10.1 Code

Please see Annex V-B.

5.3.1.6.2.2.10.2 Functionality Validation

The algorithm functionality in the platform is being compared with the results in Matlab - as they were already

validated in PAMguard. An input signal is used in the platform which consists in the same input as in Matlab,

introduced block by block, and its output is also plotted in Matlab. As the whole algorithm is not yet

developed, we only have tested the spectrogram, showing that it works exactly as in Matlab, except that in

Matlab half the FFT has to be passed to the output, whereas spectrogram only uses the positive part.

5.3.1.6.2.2.10.3 Computational Load Measurements

An Input of 90000 samples was used in Matlab sampled at 48 kHz, lasting 1.82 s. A block of 256 samples lasts

5.12 ms, a block of 512; 10.28, and one of 1024 lasts 20.7 ms.

The Whistle Detector processing time for an Input with BLOCK_SIZE 256 lasts 31.2 ms, and the processing of a

BLOCK_SIZE of 512 lasts 67.8 ms. So, the time processing is around 6 times the duration of the signal. This

confirms that, at the moment, a real-time Whistle Detector is not possible with this sampling frequency.

A test with 10 input blocks has been performed, obtaining a time processing of 550 ms. We hoped that the

time that each block lasts would grow a little iteration after iteration, as it has more Regions to manage, but

the average is 55 ms, so that growth is not higher than the initialization of the algorithm performed before the

first iteration.

The fft_length used to do the measures has been in all cases the same as the BLOCK_SIZE, as we have

observed that in this way we can obtain the best results both in contour detection and in time consumption.

5.3.1.6.2.2.10.4 Optimization

The preceding section used a BLOCK_SIZE of 512, and some tests used a BLOCK_SIZE of 256, but none used

1024 samples, because the tests with a BLOCK_SIZE of 1024 samples are now unstable.

Because of that, our efforts to optimize the algorithm are in two lines. The main line is to reduce the memory

usage, as it is a very heavy algorithm because it needs many arrays and matrixes in the different parts of the

processing, in addition to the Region List and all the parameters in each Region. We are trying to convert as

many arrays and matrixes as possible in pointers. The immediate objective is to work properly with blocks of

1024 samples.

The second but not less important line is the reduction of the time consumption, which in any case is highly

connected with the memory reading and writing processes.

5.3.1.6.3 Good Practices for the user

A good choice of fft_length, fft_hop, threshold and Region restrictions determine the grade of success at

detecting whistles —not to say the time of processing— so the user has to choose the parameters carefully in

order to get good results for the Whistle Detector.

5.4 SUPPORT SYSTEMS (GUIS FOR USER INTERFACE).

5.4.1 Noise Band Monitoring GUI

As mentioned in section 5.3.1.1, the user is responsible for the filter’s design using the Matlab GUI developed.

This GUI generates the header file for the filter needed in the Noise Band Monitoring algorithm.

In the provided GUI, the user has to make different choices about the desired filter. These choices start with

the selection of the type of filter:

Low pass.

Page 100: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

100 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Band pass.

High pass.

Once this has been decided, the user will choose between a Butterworth filter and a Chebyshev filter.

Depending on the user’s choice, the parameters to decide will vary. These parameters will be shown in the

following figure.

Low Pass

Butterworth

Chebyshev

- Sample Frequency

- Filter Order

- Cutoff Frequency

High Pass

- Sample Frequency

- Filter Order

- Low Cutoff Frequency

- High Cutoff Frequency

Butterworth

Chebyshev

- Sample Frequency

- Filter Order

- Cutoff Frequency

Band Pass

Butterworth

Chebyshev

Figure 61. Different filter parameters depending on the choice made by the user.

It is important to mention that these parameters have default values (which can be seen in the table below)

but it’s the user’s responsibility that the filter created is stable and behaves properly, which means that the

behavior of the filter should be checked by the user. In order to do so, the GUI shows the transfer function of

the filter, but it doesn’t warn the user about any possible error in the filter design or possible computational

errors.

Filter Parameters Default Values

Sampling Frequency 48000

Filter order 3

Cutoff Frequency 10000

Low Cutoff Frequency 20

High Cutoff Frequency 10000

Page 101: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

101 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Table 24. Filter Parameters and its default values.

The transfer function of each filter with its default values are shown in the following figures.

Figure 62. Response of the Butterworth filter depending on the type chosen.

Figure 63. Response of the Chebyshev filter depending on the type chosen.

Finally, when all the parameters have been decided and checked by the user, the header file for the filter is

created (Filter.h). This file contains three variables which are the ones that the ARM CMSIS DSP library needs.

These are:

1. pCoeffs: the coefficients of the filter created.

Fs (Hz) Cuttof Freq (Hz) N Fs (Hz) Flow (Hz) Fhigh (Hz) N Fs (Hz) Cutoff Freq(Hz) N

48000 1000 3 48000 20 10000 3 48000 20 3

Zoom Plot Zoom Plot

BUTTERWORTH

Zoom Plot

Band Pass

Plot

High Pass

Plot

Low Pass

Plot

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-400

-300

-200

-100

0

Frequency ( Hz )G

ain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

200

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-100

-50

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

-2000 0 2000 4000 6000 8000 10000 12000

-160

-140

-120

-100

-80

-60

-40

-20

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2

x 104

-150

-100

-50

0

Frequency ( Hz )

Gain

(dB

)

-10 0 10 20 30 40 50 60 70 80

-80

-70

-60

-50

-40

-30

-20

-10

0

Frequency ( Hz )

Gain

(dB

)

Fs (Hz) Cuttof Freq (Hz) N Fs (Hz) Flow (Hz) Fhigh (Hz) N Fs (Hz) Cutoff Freq(Hz) N

48000 1000 3 48000 20 10000 3 48000 20 3

Zoom Plot Zoom Plot Zoom Plot

CHEBYSHEV

Low Pass Band Pass High Pass

Plot Plot Plot

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

50

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-400

-300

-200

-100

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

200

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-60

-40

-20

0

20

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

-500 0 500 1000 1500 2000 2500 3000 3500 4000 4500

-100

-80

-60

-40

-20

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2

x 104

-180

-160

-140

-120

-100

-80

-60

-40

-20

0

20

Frequency ( Hz )

Gain

(dB

)

0 5 10 15 20 25 30 35 40 45

-50

-40

-30

-20

-10

0

Frequency ( Hz )

Gain

(dB

)

Page 102: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

102 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

2. numStages: Number of second order stages in the filter.

3. pState: the address of the state buffer.

In order to run this script, open the matlab file Generation_of_Filter_Parameters.m. The functions

write_c_h_file_parameters, write_c_h_file and plot_filter should either be in the working path directory or be

added to it.

5.4.2 MFSD Indicator 11.2.1, indicator 11.2.1 extended and noise band monitoring GUI

The simulation of indicator 11.2.1, indicator 11.2.1 extended and of noise band monitoring require four input

variables. These variables are:

Block size of the input (in samples).

Sampling frequency (fs) of the input signal.

Duty Cycle of the indicator.

Channel Gain .

It should be kept in mind that sampling frequency must be 1000 Hz in the case of indicator 11.2.1 and 48000

Hz in the case of indicator 11.2.1 extended.

Filling the text fields in the GUI, the user can generate the header file that contains these input variables.

Figure 64. GUI for header file of indicator 11.2.1.

In order to create the header file, user should run Generation_of_indicator_11_2_1_Parameters.m and the

functions write_c_h_file_parameters_ indicator_11_2_1 should either be in the working path directory or be

added to it.

5.4.3 Click Detector GUI

A series of parameters are necessary in order to parameterize the Click Detector algorithm and these

parameters have to be defined by the user. So, we have developed a matlab GUI that is able to generate the

header file click_parameters.h that would give the specifications to the algorithm for it to work properly.

All parameters needed to find the clicks, as explained in section 5.3.1.5.2.4.2.1 are:

Number of Clicks expected.

Block Size.

Prefilter flag.

Filter flag.

Long Filter Coefficient 1.

Long Filter Coefficient 2.

Short Filter Coefficient.

Trigger Level.

Maximum Click Length.

Minimum Click Separation.

Page 103: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

103 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

In the GUI, these parameters have default values which can be modified by the user. These values are

presented in Table 25.

Page 104: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

104 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Click Parameters Default Values

Number of Clicks

expected 4

Block Size 2048

Prefilter Flag 0

Filter Flag 0

Long Filter Coefficient

1 0.00001

Long Filter Coefficient

2 0.000001

Short Filter Coefficient 0.01

Trigger Level 0.7

Maximum Click Length 1024

Minimum Click

Separation 100

Table 25. Click Parameters and its default values.

Once the user has defined the click parameters, the user is asked whether a filter stage is desired to be

implemented or not. If the answer is no, the click_parameters.h file is created immediately. However, if the

answer is yes, the Filter Flag parameters is set to 1 and then, the user has to define the desired filter.

First of all, the user has to decide the type of filter:

Low pass.

Band pass.

High pass.

Then, the user has to choose between a Butterworth filter and a Chebyshev filter. Finally, the parameters of

each filter are defined. These parameters are shown in the Figure 61.

Depending on the type and the method, the filter parameters have different default values.

Filter Parameters Default Values

Page 105: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

105 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Sampling Frequency 48000

Filter order 3

Cutoff Frequency 10000

Low Cutoff Frequency 20

High Cutoff Frequency 10000

Table 26. Filter Parameters and its default values.

In order to check the response of the filter, its transfer function (Gain and phase plots) is shown to the user.

The response of each filter with the default values are shown below:

Figure 65. Response of the Butterworth filter depending on the type chosen.

Fs (Hz) Cuttof Freq (Hz) N Fs (Hz) Flow (Hz) Fhigh (Hz) N Fs (Hz) Cutoff Freq(Hz) N

48000 1000 3 48000 20 10000 3 48000 20 3

Zoom Plot Zoom Plot

BUTTERWORTH

Zoom Plot

Band Pass

Plot

High Pass

Plot

Low Pass

Plot

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-400

-300

-200

-100

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

200

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-100

-50

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

-2000 0 2000 4000 6000 8000 10000 12000

-160

-140

-120

-100

-80

-60

-40

-20

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2

x 104

-150

-100

-50

0

Frequency ( Hz )

Gain

(dB

)

-10 0 10 20 30 40 50 60 70 80

-80

-70

-60

-50

-40

-30

-20

-10

0

Frequency ( Hz )

Gain

(dB

)

Page 106: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

106 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 66. Response of the Chebyshev filter depending on the type chosen.

Finally, once all filter parameters have been chosen, a message will appear in order to check if the filter

parameters chosen are the desired ones. If they are, the Filter.h file is created. Then, another message will

appear to check if the click parameters chosen are correct. If they are, the click_parameter.h is created.

As mentioned in previous sections, in order to run the GUI, the user should open the file

Generation_Of_Click_and_Filter_Parameters.m. And it is important that the functions

write_c_h_file_parameters, write_c_h_file and plot_filter should either be in the working path directory or be

added to it.

It is the responsibility of the user to choose proper filter parameters and a carefully check of the transfer

function is highly recommended.

Fs (Hz) Cuttof Freq (Hz) N Fs (Hz) Flow (Hz) Fhigh (Hz) N Fs (Hz) Cutoff Freq(Hz) N

48000 1000 3 48000 20 10000 3 48000 20 3

Zoom Plot Zoom Plot Zoom Plot

CHEBYSHEV

Low Pass Band Pass High Pass

Plot Plot Plot

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

50

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-400

-300

-200

-100

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-100

0

100

200

Frequency ( Hz )P

hase (

Degre

es)

0 0.5 1 1.5 2 2.5

x 104

-60

-40

-20

0

20

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2 2.5

x 104

-200

-150

-100

-50

0

Frequency ( Hz )

Phase (

Degre

es)

-500 0 500 1000 1500 2000 2500 3000 3500 4000 4500

-100

-80

-60

-40

-20

0

Frequency ( Hz )

Gain

(dB

)

0 0.5 1 1.5 2

x 104

-180

-160

-140

-120

-100

-80

-60

-40

-20

0

20

Frequency ( Hz )

Gain

(dB

)

0 5 10 15 20 25 30 35 40 45

-50

-40

-30

-20

-10

0

Frequency ( Hz )

Gain

(dB

)

Page 107: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

107 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

6 ANNEX I – INDICATOR 11.2.1 CODE

6.1 STRUCTURE The code is structured as usual in C, in two different folders. One folder called src folder,

contains the source files and the other called inc contains the header files needed in order

for the algorithm to work properly

6.2 CODE

6.2.1 Indicator 11.2.1 /* * indicator_11_2_1.h * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Obtain values for Indicator 11.2.1 * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * "Indicator 11.2.1" returns the SPLrms values of the input signal for 63 Hz and 125 Hz filters. * It also returns the value of the SPLrms percentiles. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef INDICATOR_11_2_1_H_ #define INDICATOR_11_2_1_H_ #include <arm_math.h> void indicator_11_2_1(float32_t * Input, uint16_t k, float32_t *rmsValueVector, float32_t *splValueVector, float32_t * Output); #endif /* INDICATOR_11_2_1_H_ */ /* * indicator_11_2_1.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */

Page 108: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

108 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/* * @brief Obtain values for Indicator 11.2.1 * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * "Indicator 11.2.1" returns the SPLrms values of the input signal for 63 Hz and 125 Hz filters. * It also returns the value of the SPLrms percentiles. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <indicator_11_2_1.h> #include <inputMatlab.h> #include <lookUpTable_UD_SPLrms.h> #include <math.h> #include <stdlib.h> #include <stdio.h> #include "percentile_level.h" #include "filter_63_fs_1000_fp.h" #include "filter_125_fs_1000_fp.h" /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ float32_t rmsValue = 0; float32_t splValue = 0; float32_t percentile90SPL; float32_t percentile10SPL; float32_t *pCoeffs_f; uint8_t numStages_f; float32_t *pState_f; uint16_t i; uint16_t j; float32_t rmsValueVector_temp[NBLOCKS]; float32_t splValueVector_temp[NBLOCKS]; arm_status status; const uint8_t num_filters = 2; /***************************************************************************** * Public types/enumerations/variables ****************************************************************************/ /***************************************************************************** * Private functions ****************************************************************************/ /***************************************************************************** * Public functions ****************************************************************************/ /** * @brief Get the SPL of each filter and its percentiles 90 and 10.

Page 109: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

109 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* @param[in] *Input points to the input vector. * @param[in] k. Counter of maximum value: NBLOCKS * @param[in] *rmsValueVector points to the RMS value vector. * @param[in] *splValueVector points to the SPL value vector. * @param[in] *Output points to the output vector in which SPLrms and its percentiles values are stored. * @return none * * <b>Functionality of the function:</b> * \par * This function gets the SPLrms value of an input signal, as well as its percentiles. * First of all the Input signal must be filtered. * There are two filters, one with a center frequency of 63 Hz and the other one with a centre frequency of 125 Hz. * Every time the signal is filtered, we store the RMS value on a vector and the same is done with the SPL value. * So a vector with the RMS and SPL values for each center frequency is obtained. * * When the RMS and SPL values for each center frequency is obtained, it will be stores in a vector the RMS of every RMS obtained with a different * center frequency. This is, the RMS of every RMS obtained by a fc of 63 Hz and 125 Hz. * The same is done with the SPL. * * Then the percentiles l_90 and l_10 of the SPL is obtained. * * Finally the output will be a vector containing the final SPL, SPL percentile l_90 and SPL percentile l_10. * */

void indicator_11_2_1( float32_t * Input, uint16_t k, float32_t *rmsValueVector, float32_t *splValueVector, float32_t * Output ) { // This is the loop for each filter. Depending on the value of i, the filter will be done with a fc of 63 Hz or 125 Hz. for (i=0;i<num_filters;i++){ float32_t signalToProcess[BLOCK_SIZE]; // Choose filter switch (i) { case 0: //Filter for fc = 63,09573445 pCoeffs_f = pCoeffs_f_63_fp; numStages_f = numStages_f_63_fp; pState_f = pState_f_63_fp; break; case 1: //Filter for fc = 125,89254118 pCoeffs_f = pCoeffs_f_125_fp; numStages_f = numStages_f_125_fp; pState_f = pState_f_125_fp; break; } //Filtering block arm_biquad_casd_df1_inst_f32 *S = (arm_biquad_casd_df1_inst_f32 *)malloc(sizeof(arm_biquad_casd_df1_inst_f32)); arm_biquad_cascade_df1_init_f32 ( S , numStages_f , pCoeffs_f, pState_f ); arm_biquad_cascade_df1_f32( S ,Input, signalToProcess, BLOCK_SIZE ); free(S); // RMS computation X Hz and store it in the vector. arm_rms_f32( signalToProcess, BLOCK_SIZE, &rmsValue); rmsValueVector[k+NBLOCKS*i] = rmsValue; // SPL computation X Hz and store it in the vector.

Page 110: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

110 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN); splValueVector[k+NBLOCKS*i] = splValue; // Once every block has been processed, get the RMS and SPL of each filter and get the percentiles of each one of them. if(k==(NBLOCKS-1)){ //rmsValueVector_temp will contain the RMS of each RMS obtained with the filters. for (j=0;j<NBLOCKS;j++){ rmsValueVector_temp[j] = rmsValueVector[j+NBLOCKS*i]; } //splValueVector_temp will contain the SPL of each SPL obtained with the filters . for (j=0;j<NBLOCKS;j++){ splValueVector_temp[j] = splValueVector[j+NBLOCKS*i]; } // SPL total arm_rms_f32( rmsValueVector_temp, NBLOCKS, &rmsValue); splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN); // Percentiles percentile90SPL = percentile_level (splValueVector_temp, NBLOCKS, 90); percentile10SPL = percentile_level (splValueVector_temp, NBLOCKS, 10); Output[3*i] = splValue; Output[3*i+1] = percentile90SPL; Output[3*i+2] = percentile10SPL; } } }

6.2.2 LookUpTable_UD_SPLrms

/* * lookUpTable_UD_SPLrms.h * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Identifies digital values with SPLrms re 1uPa values * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * lookUpTable_UD_SPLrms link digital values of the processing with SPLrms values re 1uPa, taking into account: * - Sensitivity of hydrophone * - Gain of the channel * - Conversion Factor of ADC * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This

Page 111: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

111 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef LOOKUPTABLE_UD_SPLRMS_H_ #define LOOKUPTABLE_UD_SPLRMS_H_ #include <arm_math.h> // Include CMSIS header /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ #define NELEMS(x) (sizeof(x) / sizeof((x)[0])) /***************************************************************************** * Private functions ****************************************************************************/ float32_t lookUpTable_UD_SPLrms( float32_t Input, uint8_t Gain); #endif /* * lookUpTable_UD_SPLrms.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Identifies digital values with SPLrms re 1uPa values * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * lookUpTable_UD_SPLrms link digital values of the processing with SPLrms values re 1uPa, taking into account: * - Sensitivity of hydrophone * - Gain of the channel * - Conversion Factor of ADC * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <lookUpTable_UD_SPLrms.h> /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ const float32_t SPLrms_Table_Gain20[1024]= { 81.6704 , 81.7645 , 81.8585 , 81.9526 , 82.0467 , 82.1408 , 82.2348 , 82.3289 , 82.423 , 82.517 ,

Page 112: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

112 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

82.6111 , 82.7052 , 82.7993 , 82.8933 , 82.9874 , 83.0815 , 83.1756 , 83.2696 , 83.3637 , 83.4578 , 83.5518 , 83.6459 , 83.74 , 83.8341 , 83.9281 , 84.0222 , 84.1163 , 84.2103 , 84.3044 , 84.3985 , 84.4926 , 84.5866 , 84.6807 , 84.7748 , 84.8688 , 84.9629 , 85.057 , 85.1511 , 85.2451 , 85.3392 , 85.4333 , 85.5273 , 85.6214 , 85.7155 , 85.8096 , 85.9036 , 85.9977 , 86.0918 , 86.1859 , 86.2799 , 86.374 , 86.4681 , 86.5621 , 86.6562 , 86.7503 , 86.8444 , 86.9384 , 87.0325 , 87.1266 , 87.2206 , 87.3147 , 87.4088 , 87.5029 , 87.5969 , 87.691 , 87.7851 , 87.8791 , 87.9732 , 88.0673 , 88.1614 , 88.2554 , 88.3495 , 88.4436 , 88.5376 , 88.6317 , 88.7258 , 88.8199 , 88.9139 , 89.008 , 89.1021 , 89.1962 , 89.2902 , 89.3843 , 89.4784 , 89.5724 , 89.6665 , 89.7606 , 89.8547 , 89.9487 , 90.0428 , 90.1369 , 90.2309 , 90.325 , 90.4191 , 90.5132 , 90.6072 , 90.7013 , 90.7954 , 90.8894 , 90.9835 , 91.0776 , 91.1717 , 91.2657 , 91.3598 , 91.4539 , 91.5479 , 91.642 , 91.7361 , 91.8302 , 91.9242 , 92.0183 , 92.1124 , 92.2065 , 92.3005 , 92.3946 , 92.4887 , 92.5827 , 92.6768 , 92.7709 , 92.865 , 92.959 , 93.0531 , 93.1472 , 93.2412 , 93.3353 , 93.4294 , 93.5235 , 93.6175 , 93.7116 , 93.8057 , 93.8997 , 93.9938 , 94.0879 , 94.182 , 94.276 , 94.3701 , 94.4642 , 94.5582 , 94.6523 , 94.7464 , 94.8405 , 94.9345 , 95.0286 , 95.1227 , 95.2168 , 95.3108 , 95.4049 , 95.499 , 95.593 , 95.6871 , 95.7812 , 95.8753 , 95.9693 , 96.0634 , 96.1575 , 96.2515 , 96.3456 , 96.4397 , 96.5338 , 96.6278 , 96.7219 , 96.816 , 96.91 , 97.0041 , 97.0982 , 97.1923 , 97.2863 , 97.3804 , 97.4745 , 97.5685 , 97.6626 , 97.7567 , 97.8508 , 97.9448 , 98.0389 , 98.133 , 98.2271 , 98.3211 , 98.4152 , 98.5093 , 98.6033 , 98.6974 , 98.7915 , 98.8856 , 98.9796 , 99.0737 , 99.1678 , 99.2618 , 99.3559 , 99.45 , 99.5441 , 99.6381 , 99.7322 , 99.8263 , 99.9203 , 100.0144 , 100.1085 , 100.2026 , 100.2966 , 100.3907 , 100.4848 , 100.5788 , 100.6729 , 100.767 , 100.8611 , 100.9551 , 101.0492 , 101.1433 , 101.2374 , 101.3314 , 101.4255 , 101.5196 , 101.6136 , 101.7077 , 101.8018 , 101.8959 , 101.9899 , 102.084 , 102.1781 , 102.2721 , 102.3662 , 102.4603 , 102.5544 , 102.6484 , 102.7425 , 102.8366 , 102.9306 , 103.0247 , 103.1188 , 103.2129 , 103.3069 , 103.401 , 103.4951 , 103.5891 , 103.6832 , 103.7773 , 103.8714 , 103.9654 , 104.0595 , 104.1536 , 104.2477 , 104.3417 , 104.4358 , 104.5299 , 104.6239 , 104.718 , 104.8121 , 104.9062 , 105.0002 , 105.0943 , 105.1884 , 105.2824 , 105.3765 , 105.4706 , 105.5647 , 105.6587 , 105.7528 , 105.8469 , 105.9409 , 106.035 , 106.1291 , 106.2232 , 106.3172 , 106.4113 , 106.5054 , 106.5994 , 106.6935 , 106.7876 , 106.8817 , 106.9757 , 107.0698 , 107.1639 , 107.258 , 107.352 , 107.4461 , 107.5402 , 107.6342 , 107.7283 , 107.8224 , 107.9165 , 108.0105 , 108.1046 , 108.1987 , 108.2927 , 108.3868 , 108.4809 , 108.575 , 108.669 , 108.7631 , 108.8572 , 108.9512 , 109.0453 , 109.1394 , 109.2335 , 109.3275 , 109.4216 , 109.5157 , 109.6097 , 109.7038 , 109.7979 , 109.892 , 109.986 , 110.0801 , 110.1742 , 110.2683 , 110.3623 , 110.4564 , 110.5505 , 110.6445 , 110.7386 , 110.8327 , 110.9268 , 111.0208 , 111.1149 , 111.209 , 111.303 , 111.3971 , 111.4912 , 111.5853 , 111.6793 , 111.7734 , 111.8675 , 111.9615 , 112.0556 , 112.1497 , 112.2438 , 112.3378 , 112.4319 , 112.526 , 112.62 , 112.7141 , 112.8082 , 112.9023 , 112.9963 , 113.0904 , 113.1845 , 113.2786 , 113.3726 , 113.4667 , 113.5608 , 113.6548 , 113.7489 , 113.843 , 113.9371 , 114.0311 , 114.1252 , 114.2193 , 114.3133 , 114.4074 , 114.5015 , 114.5956 , 114.6896 , 114.7837 , 114.8778 , 114.9718 , 115.0659 , 115.16 , 115.2541 , 115.3481 , 115.4422 ,

Page 113: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

113 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

115.5363 , 115.6303 , 115.7244 , 115.8185 , 115.9126 , 116.0066 , 116.1007 , 116.1948 , 116.2889 , 116.3829 , 116.477 , 116.5711 , 116.6651 , 116.7592 , 116.8533 , 116.9474 , 117.0414 , 117.1355 , 117.2296 , 117.3236 , 117.4177 , 117.5118 , 117.6059 , 117.6999 , 117.794 , 117.8881 , 117.9821 , 118.0762 , 118.1703 , 118.2644 , 118.3584 , 118.4525 , 118.5466 , 118.6406 , 118.7347 , 118.8288 , 118.9229 , 119.0169 , 119.111 , 119.2051 , 119.2992 , 119.3932 , 119.4873 , 119.5814 , 119.6754 , 119.7695 , 119.8636 , 119.9577 , 120.0517 , 120.1458 , 120.2399 , 120.3339 , 120.428 , 120.5221 , 120.6162 , 120.7102 , 120.8043 , 120.8984 , 120.9924 , 121.0865 , 121.1806 , 121.2747 , 121.3687 , 121.4628 , 121.5569 , 121.6509 , 121.745 , 121.8391 , 121.9332 , 122.0272 , 122.1213 , 122.2154 , 122.3095 , 122.4035 , 122.4976 , 122.5917 , 122.6857 , 122.7798 , 122.8739 , 122.968 , 123.062 , 123.1561 , 123.2502 , 123.3442 , 123.4383 , 123.5324 , 123.6265 , 123.7205 , 123.8146 , 123.9087 , 124.0027 , 124.0968 , 124.1909 , 124.285 , 124.379 , 124.4731 , 124.5672 , 124.6612 , 124.7553 , 124.8494 , 124.9435 , 125.0375 , 125.1316 , 125.2257 , 125.3198 , 125.4138 , 125.5079 , 125.602 , 125.696 , 125.7901 , 125.8842 , 125.9783 , 126.0723 , 126.1664 , 126.2605 , 126.3545 , 126.4486 , 126.5427 , 126.6368 , 126.7308 , 126.8249 , 126.919 , 127.013 , 127.1071 , 127.2012 , 127.2953 , 127.3893 , 127.4834 , 127.5775 , 127.6715 , 127.7656 , 127.8597 , 127.9538 , 128.0478 , 128.1419 , 128.236 , 128.3301 , 128.4241 , 128.5182 , 128.6123 , 128.7063 , 128.8004 , 128.8945 , 128.9886 , 129.0826 , 129.1767 , 129.2708 , 129.3648 , 129.4589 , 129.553 , 129.6471 , 129.7411 , 129.8352 , 129.9293 , 130.0233 , 130.1174 , 130.2115 , 130.3056 , 130.3996 , 130.4937 , 130.5878 , 130.6818 , 130.7759 , 130.87 , 130.9641 , 131.0581 , 131.1522 , 131.2463 , 131.3404 , 131.4344 , 131.5285 , 131.6226 , 131.7166 , 131.8107 , 131.9048 , 131.9989 , 132.0929 , 132.187 , 132.2811 , 132.3751 , 132.4692 , 132.5633 , 132.6574 , 132.7514 , 132.8455 , 132.9396 , 133.0336 , 133.1277 , 133.2218 , 133.3159 , 133.4099 , 133.504 , 133.5981 , 133.6921 , 133.7862 , 133.8803 , 133.9744 , 134.0684 , 134.1625 , 134.2566 , 134.3507 , 134.4447 , 134.5388 , 134.6329 , 134.7269 , 134.821 , 134.9151 , 135.0092 , 135.1032 , 135.1973 , 135.2914 , 135.3854 , 135.4795 , 135.5736 , 135.6677 , 135.7617 , 135.8558 , 135.9499 , 136.0439 , 136.138 , 136.2321 , 136.3262 , 136.4202 , 136.5143 , 136.6084 , 136.7024 , 136.7965 , 136.8906 , 136.9847 , 137.0787 , 137.1728 , 137.2669 , 137.361 , 137.455 , 137.5491 , 137.6432 , 137.7372 , 137.8313 , 137.9254 , 138.0195 , 138.1135 , 138.2076 , 138.3017 , 138.3957 , 138.4898 , 138.5839 , 138.678 , 138.772 , 138.8661 , 138.9602 , 139.0542 , 139.1483 , 139.2424 , 139.3365 , 139.4305 , 139.5246 , 139.6187 , 139.7127 , 139.8068 , 139.9009 , 139.995 , 140.089 , 140.1831 , 140.2772 , 140.3713 , 140.4653 , 140.5594 , 140.6535 , 140.7475 , 140.8416 , 140.9357 , 141.0298 , 141.1238 , 141.2179 , 141.312 , 141.406 , 141.5001 , 141.5942 , 141.6883 , 141.7823 , 141.8764 , 141.9705 , 142.0645 , 142.1586 , 142.2527 , 142.3468 , 142.4408 , 142.5349 , 142.629 , 142.723 , 142.8171 , 142.9112 , 143.0053 , 143.0993 , 143.1934 , 143.2875 , 143.3816 , 143.4756 , 143.5697 , 143.6638 , 143.7578 , 143.8519 , 143.946 , 144.0401 , 144.1341 , 144.2282 , 144.3223 , 144.4163 , 144.5104 , 144.6045 , 144.6986 , 144.7926 , 144.8867 , 144.9808 , 145.0748 , 145.1689 , 145.263 , 145.3571 , 145.4511 , 145.5452 , 145.6393 , 145.7333 , 145.8274 , 145.9215 , 146.0156 , 146.1096 , 146.2037 , 146.2978 , 146.3919 , 146.4859 , 146.58 , 146.6741 , 146.7681 , 146.8622 , 146.9563 , 147.0504 , 147.1444 , 147.2385 , 147.3326 , 147.4266 , 147.5207 , 147.6148 , 147.7089 , 147.8029 , 147.897 , 147.9911 , 148.0851 , 148.1792 , 148.2733 , 148.3674 ,

Page 114: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

114 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

148.4614 , 148.5555 , 148.6496 , 148.7436 , 148.8377 , 148.9318 , 149.0259 , 149.1199 , 149.214 , 149.3081 , 149.4022 , 149.4962 , 149.5903 , 149.6844 , 149.7784 , 149.8725 , 149.9666 , 150.0607 , 150.1547 , 150.2488 , 150.3429 , 150.4369 , 150.531 , 150.6251 , 150.7192 , 150.8132 , 150.9073 , 151.0014 , 151.0954 , 151.1895 , 151.2836 , 151.3777 , 151.4717 , 151.5658 , 151.6599 , 151.7539 , 151.848 , 151.9421 , 152.0362 , 152.1302 , 152.2243 , 152.3184 , 152.4125 , 152.5065 , 152.6006 , 152.6947 , 152.7887 , 152.8828 , 152.9769 , 153.071 , 153.165 , 153.2591 , 153.3532 , 153.4472 , 153.5413 , 153.6354 , 153.7295 , 153.8235 , 153.9176 , 154.0117 , 154.1057 , 154.1998 , 154.2939 , 154.388 , 154.482 , 154.5761 , 154.6702 , 154.7642 , 154.8583 , 154.9524 , 155.0465 , 155.1405 , 155.2346 , 155.3287 , 155.4228 , 155.5168 , 155.6109 , 155.705 , 155.799 , 155.8931 , 155.9872 , 156.0813 , 156.1753 , 156.2694 , 156.3635 , 156.4575 , 156.5516 , 156.6457 , 156.7398 , 156.8338 , 156.9279 , 157.022 , 157.116 , 157.2101 , 157.3042 , 157.3983 , 157.4923 , 157.5864 , 157.6805 , 157.7745 , 157.8686 , 157.9627 , 158.0568 , 158.1508 , 158.2449 , 158.339 , 158.4331 , 158.5271 , 158.6212 , 158.7153 , 158.8093 , 158.9034 , 158.9975 , 159.0916 , 159.1856 , 159.2797 , 159.3738 , 159.4678 , 159.5619 , 159.656 , 159.7501 , 159.8441 , 159.9382 , 160.0323 , 160.1263 , 160.2204 , 160.3145 , 160.4086 , 160.5026 , 160.5967 , 160.6908 , 160.7848 , 160.8789 , 160.973 , 161.0671 , 161.1611 , 161.2552 , 161.3493 , 161.4434 , 161.5374 , 161.6315 , 161.7256 , 161.8196 , 161.9137 , 162.0078 , 162.1019 , 162.1959 , 162.29 , 162.3841 , 162.4781 , 162.5722 , 162.6663 , 162.7604 , 162.8544 , 162.9485 , 163.0426 , 163.1366 , 163.2307 , 163.3248 , 163.4189 , 163.5129 , 163.607 , 163.7011 , 163.7951 , 163.8892 , 163.9833 , 164.0774 , 164.1714 , 164.2655 , 164.3596 , 164.4537 , 164.5477 , 164.6418 , 164.7359 , 164.8299 , 164.924 , 165.0181 , 165.1122 , 165.2062 , 165.3003 , 165.3944 , 165.4884 , 165.5825 , 165.6766 , 165.7707 , 165.8647 , 165.9588 , 166.0529 , 166.1469 , 166.241 , 166.3351 , 166.4292 , 166.5232 , 166.6173 , 166.7114 , 166.8054 , 166.8995 , 166.9936 , 167.0877 , 167.1817 , 167.2758 , 167.3699 , 167.464 , 167.558 , 167.6521 , 167.7462 , 167.8402 , 167.9343 , 168.0284 , 168.1225 , 168.2165 , 168.3106 , 168.4047 , 168.4987 , 168.5928 , 168.6869 , 168.781 , 168.875 , 168.9691 , 169.0632 , 169.1572 , 169.2513 , 169.3454 , 169.4395 , 169.5335 , 169.6276 , 169.7217 , 169.8157 , 169.9098 , 170.0039 , 170.098 , 170.192 , 170.2861 , 170.3802 , 170.4743 , 170.5683 , 170.6624 , 170.7565 , 170.8505 , 170.9446 , 171.0387 , 171.1328 , 171.2268 , 171.3209 , 171.415 , 171.509 , 171.6031 , 171.6972 , 171.7913 , 171.8853 , 171.9794 , 172.0735 , 172.1675 , 172.2616 , 172.3557 , 172.4498 , 172.5438 , 172.6379 , 172.732 , 172.826 , 172.9201 , 173.0142 , 173.1083 , 173.2023 , 173.2964 , 173.3905 , 173.4846 , 173.5786 , 173.6727 , 173.7668 , 173.8608 , 173.9549 , 174.049 , 174.1431 , 174.2371 , 174.3312 , 174.4253 , 174.5193 , 174.6134 , 174.7075 , 174.8016 , 174.8956 , 174.9897 , 175.0838 , 175.1778 , 175.2719 , 175.366 , 175.4601 , 175.5541 , 175.6482 , 175.7423 , 175.8363 , 175.9304 , 176.0245 , 176.1186 , 176.2126 , 176.3067 , 176.4008 , 176.4949 , 176.5889 , 176.683 , 176.7771 , 176.8711 , 176.9652 , 177.0593 , 177.1534 , 177.2474 , 177.3415 , 177.4356 , 177.5296 , 177.6237, 177.7178, 177.8119, 177.9059 }; const float32_t RMSspl_Table_Gain50[1024]= { 51.6704 , 51.7645 , 51.8585 , 51.9526 , 52.0467 , 52.1408 , 52.2348 , 52.3289 , 52.423 , 52.517 ,

Page 115: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

115 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

52.6111 , 52.7052 , 52.7993 , 52.8933 , 52.9874 , 53.0815 , 53.1756 , 53.2696 , 53.3637 , 53.4578 , 53.5518 , 53.6459 , 53.74 , 53.8341 , 53.9281 , 54.0222 , 54.1163 , 54.2103 , 54.3044 , 54.3985 , 54.4926 , 54.5866 , 54.6807 , 54.7748 , 54.8688 , 54.9629 , 55.057 , 55.1511 , 55.2451 , 55.3392 , 55.4333 , 55.5273 , 55.6214 , 55.7155 , 55.8096 , 55.9036 , 55.9977 , 56.0918 , 56.1859 , 56.2799 , 56.374 , 56.4681 , 56.5621 , 56.6562 , 56.7503 , 56.8444 , 56.9384 , 57.0325 , 57.1266 , 57.2206 , 57.3147 , 57.4088 , 57.5029 , 57.5969 , 57.691 , 57.7851 , 57.8791 , 57.9732 , 58.0673 , 58.1614 , 58.2554 , 58.3495 , 58.4436 , 58.5376 , 58.6317 , 58.7258 , 58.8199 , 58.9139 , 59.008 , 59.1021 , 59.1962 , 59.2902 , 59.3843 , 59.4784 , 59.5724 , 59.6665 , 59.7606 , 59.8547 , 59.9487 , 60.0428 , 60.1369 , 60.2309 , 60.325 , 60.4191 , 60.5132 , 60.6072 , 60.7013 , 60.7954 , 60.8894 , 60.9835 , 61.0776 , 61.1717 , 61.2657 , 61.3598 , 61.4539 , 61.5479 , 61.642 , 61.7361 , 61.8302 , 61.9242 , 62.0183 , 62.1124 , 62.2065 , 62.3005 , 62.3946 , 62.4887 , 62.5827 , 62.6768 , 62.7709 , 62.865 , 62.959 , 63.0531 , 63.1472 , 63.2412 , 63.3353 , 63.4294 , 63.5235 , 63.6175 , 63.7116 , 63.8057 , 63.8997 , 63.9938 , 64.0879 , 64.182 , 64.276 , 64.3701 , 64.4642 , 64.5582 , 64.6523 , 64.7464 , 64.8405 , 64.9345 , 65.0286 , 65.1227 , 65.2168 , 65.3108 , 65.4049 , 65.499 , 65.593 , 65.6871 , 65.7812 , 65.8753 , 65.9693 , 66.0634 , 66.1575 , 66.2515 , 66.3456 , 66.4397 , 66.5338 , 66.6278 , 66.7219 , 66.816 , 66.91 , 67.0041 , 67.0982 , 67.1923 , 67.2863 , 67.3804 , 67.4745 , 67.5685 , 67.6626 , 67.7567 , 67.8508 , 67.9448 , 68.0389 , 68.133 , 68.2271 , 68.3211 , 68.4152 , 68.5093 , 68.6033 , 68.6974 , 68.7915 , 68.8856 , 68.9796 , 69.0737 , 69.1678 , 69.2618 , 69.3559 , 69.45 , 69.5441 , 69.6381 , 69.7322 , 69.8263 , 69.9203 , 70.0144 , 70.1085 , 70.2026 , 70.2966 , 70.3907 , 70.4848 , 70.5788 , 70.6729 , 70.767 , 70.8611 , 70.9551 , 71.0492 , 71.1433 , 71.2374 , 71.3314 , 71.4255 , 71.5196 , 71.6136 , 71.7077 , 71.8018 , 71.8959 , 71.9899 , 72.084 , 72.1781 , 72.2721 , 72.3662 , 72.4603 , 72.5544 , 72.6484 , 72.7425 , 72.8366 , 72.9306 , 73.0247 , 73.1188 , 73.2129 , 73.3069 , 73.401 , 73.4951 , 73.5891 , 73.6832 , 73.7773 , 73.8714 , 73.9654 , 74.0595 , 74.1536 , 74.2477 , 74.3417 , 74.4358 , 74.5299 , 74.6239 , 74.718 , 74.8121 , 74.9062 , 75.0002 , 75.0943 , 75.1884 , 75.2824 , 75.3765 , 75.4706 , 75.5647 , 75.6587 , 75.7528 , 75.8469 , 75.9409 , 76.035 , 76.1291 , 76.2232 , 76.3172 , 76.4113 , 76.5054 , 76.5994 , 76.6935 , 76.7876 , 76.8817 , 76.9757 , 77.0698 , 77.1639 , 77.258 , 77.352 , 77.4461 , 77.5402 , 77.6342 , 77.7283 , 77.8224 , 77.9165 , 78.0105 , 78.1046 , 78.1987 , 78.2927 , 78.3868 , 78.4809 , 78.575 , 78.669 , 78.7631 , 78.8572 , 78.9512 , 79.0453 , 79.1394 , 79.2335 , 79.3275 , 79.4216 , 79.5157 , 79.6097 , 79.7038 , 79.7979 , 79.892 , 79.986 , 80.0801 , 80.1742 , 80.2683 , 80.3623 , 80.4564 , 80.5505 , 80.6445 , 80.7386 , 80.8327 , 80.9268 , 81.0208 , 81.1149 , 81.209 , 81.303 , 81.3971 , 81.4912 , 81.5853 , 81.6793 , 81.7734 , 81.8675 , 81.9615 , 82.0556 , 82.1497 , 82.2438 , 82.3378 , 82.4319 , 82.526 , 82.62 , 82.7141 , 82.8082 , 82.9023 , 82.9963 , 83.0904 , 83.1845 , 83.2786 , 83.3726 , 83.4667 , 83.5608 , 83.6548 , 83.7489 , 83.843 , 83.9371 , 84.0311 , 84.1252 , 84.2193 , 84.3133 , 84.4074 , 84.5015 , 84.5956 , 84.6896 , 84.7837 , 84.8778 , 84.9718 , 85.0659 , 85.16 , 85.2541 , 85.3481 , 85.4422 ,

Page 116: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

116 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

85.5363 , 85.6303 , 85.7244 , 85.8185 , 85.9126 , 86.0066 , 86.1007 , 86.1948 , 86.2889 , 86.3829 , 86.477 , 86.5711 , 86.6651 , 86.7592 , 86.8533 , 86.9474 , 87.0414 , 87.1355 , 87.2296 , 87.3236 , 87.4177 , 87.5118 , 87.6059 , 87.6999 , 87.794 , 87.8881 , 87.9821 , 88.0762 , 88.1703 , 88.2644 , 88.3584 , 88.4525 , 88.5466 , 88.6406 , 88.7347 , 88.8288 , 88.9229 , 89.0169 , 89.111 , 89.2051 , 89.2992 , 89.3932 , 89.4873 , 89.5814 , 89.6754 , 89.7695 , 89.8636 , 89.9577 , 90.0517 , 90.1458 , 90.2399 , 90.3339 , 90.428 , 90.5221 , 90.6162 , 90.7102 , 90.8043 , 90.8984 , 90.9924 , 91.0865 , 91.1806 , 91.2747 , 91.3687 , 91.4628 , 91.5569 , 91.6509 , 91.745 , 91.8391 , 91.9332 , 92.0272 , 92.1213 , 92.2154 , 92.3095 , 92.4035 , 92.4976 , 92.5917 , 92.6857 , 92.7798 , 92.8739 , 92.968 , 93.062 , 93.1561 , 93.2502 , 93.3442 , 93.4383 , 93.5324 , 93.6265 , 93.7205 , 93.8146 , 93.9087 , 94.0027 , 94.0968 , 94.1909 , 94.285 , 94.379 , 94.4731 , 94.5672 , 94.6612 , 94.7553 , 94.8494 , 94.9435 , 95.0375 , 95.1316 , 95.2257 , 95.3198 , 95.4138 , 95.5079 , 95.602 , 95.696 , 95.7901 , 95.8842 , 95.9783 , 96.0723 , 96.1664 , 96.2605 , 96.3545 , 96.4486 , 96.5427 , 96.6368 , 96.7308 , 96.8249 , 96.919 , 97.013 , 97.1071 , 97.2012 , 97.2953 , 97.3893 , 97.4834 , 97.5775 , 97.6715 , 97.7656 , 97.8597 , 97.9538 , 98.0478 , 98.1419 , 98.236 , 98.3301 , 98.4241 , 98.5182 , 98.6123 , 98.7063 , 98.8004 , 98.8945 , 98.9886 , 99.0826 , 99.1767 , 99.2708 , 99.3648 , 99.4589 , 99.553 , 99.6471 , 99.7411 , 99.8352 , 99.9293 , 100.0233 , 100.1174 , 100.2115 , 100.3056 , 100.3996 , 100.4937 , 100.5878 , 100.6818 , 100.7759 , 100.87 , 100.9641 , 101.0581 , 101.1522 , 101.2463 , 101.3404 , 101.4344 , 101.5285 , 101.6226 , 101.7166 , 101.8107 , 101.9048 , 101.9989 , 102.0929 , 102.187 , 102.2811 , 102.3751 , 102.4692 , 102.5633 , 102.6574 , 102.7514 , 102.8455 , 102.9396 , 103.0336 , 103.1277 , 103.2218 , 103.3159 , 103.4099 , 103.504 , 103.5981 , 103.6921 , 103.7862 , 103.8803 , 103.9744 , 104.0684 , 104.1625 , 104.2566 , 104.3507 , 104.4447 , 104.5388 , 104.6329 , 104.7269 , 104.821 , 104.9151 , 105.0092 , 105.1032 , 105.1973 , 105.2914 , 105.3854 , 105.4795 , 105.5736 , 105.6677 , 105.7617 , 105.8558 , 105.9499 , 106.0439 , 106.138 , 106.2321 , 106.3262 , 106.4202 , 106.5143 , 106.6084 , 106.7024 , 106.7965 , 106.8906 , 106.9847 , 107.0787 , 107.1728 , 107.2669 , 107.361 , 107.455 , 107.5491 , 107.6432 , 107.7372 , 107.8313 , 107.9254 , 108.0195 , 108.1135 , 108.2076 , 108.3017 , 108.3957 , 108.4898 , 108.5839 , 108.678 , 108.772 , 108.8661 , 108.9602 , 109.0542 , 109.1483 , 109.2424 , 109.3365 , 109.4305 , 109.5246 , 109.6187 , 109.7127 , 109.8068 , 109.9009 , 109.995 , 110.089 , 110.1831 , 110.2772 , 110.3713 , 110.4653 , 110.5594 , 110.6535 , 110.7475 , 110.8416 , 110.9357 , 111.0298 , 111.1238 , 111.2179 , 111.312 , 111.406 , 111.5001 , 111.5942 , 111.6883 , 111.7823 , 111.8764 , 111.9705 , 112.0645 , 112.1586 , 112.2527 , 112.3468 , 112.4408 , 112.5349 , 112.629 , 112.723 , 112.8171 , 112.9112 , 113.0053 , 113.0993 , 113.1934 , 113.2875 , 113.3816 , 113.4756 , 113.5697 , 113.6638 , 113.7578 , 113.8519 , 113.946 , 114.0401 , 114.1341 , 114.2282 , 114.3223 , 114.4163 , 114.5104 , 114.6045 , 114.6986 , 114.7926 , 114.8867 , 114.9808 , 115.0748 , 115.1689 , 115.263 , 115.3571 , 115.4511 , 115.5452 , 115.6393 , 115.7333 , 115.8274 , 115.9215 , 116.0156 , 116.1096 , 116.2037 , 116.2978 , 116.3919 , 116.4859 , 116.58 , 116.6741 , 116.7681 , 116.8622 , 116.9563 , 117.0504 , 117.1444 , 117.2385 , 117.3326 , 117.4266 , 117.5207 , 117.6148 , 117.7089 , 117.8029 , 117.897 , 117.9911 , 118.0851 , 118.1792 , 118.2733 , 118.3674 ,

Page 117: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

117 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

118.4614 , 118.5555 , 118.6496 , 118.7436 , 118.8377 , 118.9318 , 119.0259 , 119.1199 , 119.214 , 119.3081 , 119.4022 , 119.4962 , 119.5903 , 119.6844 , 119.7784 , 119.8725 , 119.9666 , 120.0607 , 120.1547 , 120.2488 , 120.3429 , 120.4369 , 120.531 , 120.6251 , 120.7192 , 120.8132 , 120.9073 , 121.0014 , 121.0954 , 121.1895 , 121.2836 , 121.3777 , 121.4717 , 121.5658 , 121.6599 , 121.7539 , 121.848 , 121.9421 , 122.0362 , 122.1302 , 122.2243 , 122.3184 , 122.4125 , 122.5065 , 122.6006 , 122.6947 , 122.7887 , 122.8828 , 122.9769 , 123.071 , 123.165 , 123.2591 , 123.3532 , 123.4472 , 123.5413 , 123.6354 , 123.7295 , 123.8235 , 123.9176 , 124.0117 , 124.1057 , 124.1998 , 124.2939 , 124.388 , 124.482 , 124.5761 , 124.6702 , 124.7642 , 124.8583 , 124.9524 , 125.0465 , 125.1405 , 125.2346 , 125.3287 , 125.4228 , 125.5168 , 125.6109 , 125.705 , 125.799 , 125.8931 , 125.9872 , 126.0813 , 126.1753 , 126.2694 , 126.3635 , 126.4575 , 126.5516 , 126.6457 , 126.7398 , 126.8338 , 126.9279 , 127.022 , 127.116 , 127.2101 , 127.3042 , 127.3983 , 127.4923 , 127.5864 , 127.6805 , 127.7745 , 127.8686 , 127.9627 , 128.0568 , 128.1508 , 128.2449 , 128.339 , 128.4331 , 128.5271 , 128.6212 , 128.7153 , 128.8093 , 128.9034 , 128.9975 , 129.0916 , 129.1856 , 129.2797 , 129.3738 , 129.4678 , 129.5619 , 129.656 , 129.7501 , 129.8441 , 129.9382 , 130.0323 , 130.1263 , 130.2204 , 130.3145 , 130.4086 , 130.5026 , 130.5967 , 130.6908 , 130.7848 , 130.8789 , 130.973 , 131.0671 , 131.1611 , 131.2552 , 131.3493 , 131.4434 , 131.5374 , 131.6315 , 131.7256 , 131.8196 , 131.9137 , 132.0078 , 132.1019 , 132.1959 , 132.29 , 132.3841 , 132.4781 , 132.5722 , 132.6663 , 132.7604 , 132.8544 , 132.9485 , 133.0426 , 133.1366 , 133.2307 , 133.3248 , 133.4189 , 133.5129 , 133.607 , 133.7011 , 133.7951 , 133.8892 , 133.9833 , 134.0774 , 134.1714 , 134.2655 , 134.3596 , 134.4537 , 134.5477 , 134.6418 , 134.7359 , 134.8299 , 134.924 , 135.0181 , 135.1122 , 135.2062 , 135.3003 , 135.3944 , 135.4884 , 135.5825 , 135.6766 , 135.7707 , 135.8647 , 135.9588 , 136.0529 , 136.1469 , 136.241 , 136.3351 , 136.4292 , 136.5232 , 136.6173 , 136.7114 , 136.8054 , 136.8995 , 136.9936 , 137.0877 , 137.1817 , 137.2758 , 137.3699 , 137.464 , 137.558 , 137.6521 , 137.7462 , 137.8402 , 137.9343 , 138.0284 , 138.1225 , 138.2165 , 138.3106 , 138.4047 , 138.4987 , 138.5928 , 138.6869 , 138.781 , 138.875 , 138.9691 , 139.0632 , 139.1572 , 139.2513 , 139.3454 , 139.4395 , 139.5335 , 139.6276 , 139.7217 , 139.8157 , 139.9098 , 140.0039 , 140.098 , 140.192 , 140.2861 , 140.3802 , 140.4743 , 140.5683 , 140.6624 , 140.7565 , 140.8505 , 140.9446 , 141.0387 , 141.1328 , 141.2268 , 141.3209 , 141.415 , 141.509 , 141.6031 , 141.6972 , 141.7913 , 141.8853 , 141.9794 , 142.0735 , 142.1675 , 142.2616 , 142.3557 , 142.4498 , 142.5438 , 142.6379 , 142.732 , 142.826 , 142.9201 , 143.0142 , 143.1083 , 143.2023 , 143.2964 , 143.3905 , 143.4846 , 143.5786 , 143.6727 , 143.7668 , 143.8608 , 143.9549 , 144.049 , 144.1431 , 144.2371 , 144.3312 , 144.4253 , 144.5193 , 144.6134 , 144.7075 , 144.8016 , 144.8956 , 144.9897 , 145.0838 , 145.1778 , 145.2719 , 145.366 , 145.4601 , 145.5541 , 145.6482 , 145.7423 , 145.8363 , 145.9304 , 146.0245 , 146.1186 , 146.2126 , 146.3067 , 146.4008 , 146.4949 , 146.5889 , 146.683 , 146.7771 , 146.8711 , 146.9652 , 147.0593 , 147.1534 , 147.2474 , 147.3415 , 147.4356 , 147.5296 , 147.6237, 147.7178, 147.8119, 147.9059 }; const float32_t UD_Table[1024]= { 1.079e-05 , 1.0907e-05 , 1.1026e-05 , 1.1146e-05 , 1.1267e-05 , 1.139e-05 , 1.1514e-05 , 1.1639e-05 , 1.1766e-05 , 1.1894e-05 ,

Page 118: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

118 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1.2024e-05 , 1.2155e-05 , 1.2287e-05 , 1.2421e-05 , 1.2556e-05 , 1.2693e-05 , 1.2831e-05 , 1.2971e-05 , 1.3112e-05 , 1.3255e-05 , 1.3399e-05 , 1.3545e-05 , 1.3693e-05 , 1.3842e-05 , 1.3992e-05 , 1.4145e-05 , 1.4299e-05 , 1.4454e-05 , 1.4612e-05 , 1.4771e-05 , 1.4932e-05 , 1.5094e-05 , 1.5259e-05 , 1.5425e-05 , 1.5593e-05 , 1.5763e-05 , 1.5934e-05 , 1.6108e-05 , 1.6283e-05 , 1.6461e-05 , 1.664e-05 , 1.6821e-05 , 1.7004e-05 , 1.7189e-05 , 1.7377e-05 , 1.7566e-05 , 1.7757e-05 , 1.795e-05 , 1.8146e-05 , 1.8343e-05 , 1.8543e-05 , 1.8745e-05 , 1.8949e-05 , 1.9156e-05 , 1.9364e-05 , 1.9575e-05 , 1.9788e-05 , 2.0004e-05 , 2.0222e-05 , 2.0442e-05 , 2.0664e-05 , 2.0889e-05 , 2.1117e-05 , 2.1347e-05 , 2.1579e-05 , 2.1814e-05 , 2.2052e-05 , 2.2292e-05 , 2.2535e-05 , 2.278e-05 , 2.3028e-05 , 2.3279e-05 , 2.3532e-05 , 2.3789e-05 , 2.4048e-05 , 2.4309e-05 , 2.4574e-05 , 2.4842e-05 , 2.5112e-05 , 2.5386e-05 , 2.5662e-05 , 2.5942e-05 , 2.6224e-05 , 2.651e-05 , 2.6798e-05 , 2.709e-05 , 2.7385e-05 , 2.7683e-05 , 2.7985e-05 , 2.8289e-05 , 2.8598e-05 , 2.8909e-05 , 2.9224e-05 , 2.9542e-05 , 2.9864e-05 , 3.0189e-05 , 3.0518e-05 , 3.085e-05 , 3.1186e-05 , 3.1525e-05 , 3.1869e-05 , 3.2216e-05 , 3.2567e-05 , 3.2921e-05 , 3.328e-05 , 3.3642e-05 , 3.4008e-05 , 3.4379e-05 , 3.4753e-05 , 3.5132e-05 , 3.5514e-05 , 3.5901e-05 , 3.6292e-05 , 3.6687e-05 , 3.7086e-05 , 3.749e-05 , 3.7898e-05 , 3.8311e-05 , 3.8728e-05 , 3.915e-05 , 3.9576e-05 , 4.0007e-05 , 4.0443e-05 , 4.0883e-05 , 4.1329e-05 , 4.1779e-05 , 4.2234e-05 , 4.2693e-05 , 4.3158e-05 , 4.3628e-05 , 4.4103e-05 , 4.4584e-05 , 4.5069e-05 , 4.556e-05 , 4.6056e-05 , 4.6558e-05 , 4.7065e-05 , 4.7577e-05 , 4.8095e-05 , 4.8619e-05 , 4.9148e-05 , 4.9683e-05 , 5.0224e-05 , 5.0771e-05 , 5.1324e-05 , 5.1883e-05 , 5.2448e-05 , 5.3019e-05 , 5.3597e-05 , 5.418e-05 , 5.477e-05 , 5.5367e-05 , 5.5969e-05 , 5.6579e-05 , 5.7195e-05 , 5.7818e-05 , 5.8447e-05 , 5.9084e-05 , 5.9727e-05 , 6.0378e-05 , 6.1035e-05 , 6.17e-05 , 6.2372e-05 , 6.3051e-05 , 6.3737e-05 , 6.4431e-05 , 6.5133e-05 , 6.5842e-05 , 6.6559e-05 , 6.7284e-05 , 6.8017e-05 , 6.8757e-05 , 6.9506e-05 , 7.0263e-05 , 7.1028e-05 , 7.1802e-05 , 7.2583e-05 , 7.3374e-05 , 7.4173e-05 , 7.4981e-05 , 7.5797e-05 , 7.6622e-05 , 7.7457e-05 , 7.83e-05 , 7.9153e-05 , 8.0015e-05 , 8.0886e-05 , 8.1767e-05 , 8.2657e-05 , 8.3557e-05 , 8.4467e-05 , 8.5387e-05 , 8.6317e-05 , 8.7257e-05 , 8.8207e-05 , 8.9167e-05 , 9.0138e-05 , 9.112e-05 , 9.2112e-05 , 9.3115e-05 , 9.4129e-05 , 9.5154e-05 , 9.619e-05 , 9.7238e-05 , 9.8297e-05 , 9.9367e-05 , 0.00010045 , 0.00010154 , 0.00010265 , 0.00010377 , 0.0001049 , 0.00010604 , 0.00010719 , 0.00010836 , 0.00010954 , 0.00011073 , 0.00011194 , 0.00011316 , 0.00011439 , 0.00011564 , 0.00011689 , 0.00011817 , 0.00011945 , 0.00012076 , 0.00012207 , 0.0001234 , 0.00012474 , 0.0001261 , 0.00012747 , 0.00012886 , 0.00013027 , 0.00013168 , 0.00013312 , 0.00013457 , 0.00013603 , 0.00013751 , 0.00013901 , 0.00014053 , 0.00014206 , 0.0001436 , 0.00014517 , 0.00014675 , 0.00014835 , 0.00014996 , 0.00015159 , 0.00015324 , 0.00015491 , 0.0001566 , 0.00015831 , 0.00016003 , 0.00016177 , 0.00016353 , 0.00016531 , 0.00016711 , 0.00016893 , 0.00017077 , 0.00017263 , 0.00017451 , 0.00017641 , 0.00017833 , 0.00018028 , 0.00018224 , 0.00018422 , 0.00018623 , 0.00018826 , 0.00019031 , 0.00019238 , 0.00019448 , 0.00019659 , 0.00019873 , 0.0002009 , 0.00020309 , 0.0002053 , 0.00020753 , 0.00020979 , 0.00021208 , 0.00021439 , 0.00021672 , 0.00021908 , 0.00022147 , 0.00022388 , 0.00022632 , 0.00022878 , 0.00023127 , 0.00023379 , 0.00023634 , 0.00023891 , 0.00024151 , 0.00024414 , 0.0002468 , 0.00024949 , 0.0002522 , 0.00025495 , 0.00025773 , 0.00026053 , 0.00026337 , 0.00026624 , 0.00026914 , 0.00027207 , 0.00027503 , 0.00027802 , 0.00028105 , 0.00028411 , 0.00028721 , 0.00029033 , 0.0002935 , 0.00029669 , 0.00029992 , 0.00030319 , 0.00030649 , 0.00030983 , 0.0003132 , 0.00031661 , 0.00032006 , 0.00032354 , 0.00032707 , 0.00033063 , 0.00033423 , 0.00033787 , 0.00034155 , 0.00034527 , 0.00034903 , 0.00035283 , 0.00035667 , 0.00036055 , 0.00036448 , 0.00036845 , 0.00037246 , 0.00037652 , 0.00038062 , 0.00038476 , 0.00038895 , 0.00039319 , 0.00039747 , 0.0004018 , 0.00040617 , 0.00041059 , 0.00041507 , 0.00041958 , 0.00042415 , 0.00042877 , 0.00043344 , 0.00043816 , 0.00044293 , 0.00044776 , 0.00045263 , 0.00045756 , 0.00046254 , 0.00046758 , 0.00047267 , 0.00047782 , 0.00048302 , 0.00048828 , 0.0004936 , 0.00049897 , 0.00050441 , 0.0005099 , 0.00051545 , 0.00052106 , 0.00052674 ,

Page 119: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

119 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.00053247 , 0.00053827 , 0.00054413 , 0.00055006 , 0.00055605 , 0.0005621 , 0.00056823 , 0.00057441 , 0.00058067 , 0.00058699 , 0.00059338 , 0.00059984 , 0.00060638 , 0.00061298 , 0.00061965 , 0.0006264 , 0.00063322 , 0.00064012 , 0.00064709 , 0.00065413 , 0.00066126 , 0.00066846 , 0.00067574 , 0.0006831 , 0.00069053 , 0.00069805 , 0.00070565 , 0.00071334 , 0.00072111 , 0.00072896 , 0.0007369 , 0.00074492 , 0.00075303 , 0.00076123 , 0.00076952 , 0.0007779 , 0.00078637 , 0.00079494 , 0.00080359 , 0.00081234 , 0.00082119 , 0.00083013 , 0.00083917 , 0.00084831 , 0.00085755 , 0.00086688 , 0.00087632 , 0.00088587 , 0.00089551 , 0.00090526 , 0.00091512 , 0.00092509 , 0.00093516 , 0.00094534 , 0.00095564 , 0.00096604 , 0.00097656 , 0.0009872 , 0.00099795 , 0.0010088 , 0.0010198 , 0.0010309 , 0.0010421 , 0.0010535 , 0.0010649 , 0.0010765 , 0.0010883 , 0.0011001 , 0.0011121 , 0.0011242 , 0.0011365 , 0.0011488 , 0.0011613 , 0.001174 , 0.0011868 , 0.0011997 , 0.0012128 , 0.001226 , 0.0012393 , 0.0012528 , 0.0012664 , 0.0012802 , 0.0012942 , 0.0013083 , 0.0013225 , 0.0013369 , 0.0013515 , 0.0013662 , 0.0013811 , 0.0013961 , 0.0014113 , 0.0014267 , 0.0014422 , 0.0014579 , 0.0014738 , 0.0014898 , 0.0015061 , 0.0015225 , 0.001539 , 0.0015558 , 0.0015727 , 0.0015899 , 0.0016072 , 0.0016247 , 0.0016424 , 0.0016603 , 0.0016783 , 0.0016966 , 0.0017151 , 0.0017338 , 0.0017526 , 0.0017717 , 0.001791 , 0.0018105 , 0.0018302 , 0.0018502 , 0.0018703 , 0.0018907 , 0.0019113 , 0.0019321 , 0.0019531 , 0.0019744 , 0.0019959 , 0.0020176 , 0.0020396 , 0.0020618 , 0.0020843 , 0.002107 , 0.0021299 , 0.0021531 , 0.0021765 , 0.0022002 , 0.0022242 , 0.0022484 , 0.0022729 , 0.0022977 , 0.0023227 , 0.002348 , 0.0023735 , 0.0023994 , 0.0024255 , 0.0024519 , 0.0024786 , 0.0025056 , 0.0025329 , 0.0025605 , 0.0025884 , 0.0026165 , 0.002645 , 0.0026738 , 0.0027029 , 0.0027324 , 0.0027621 , 0.0027922 , 0.0028226 , 0.0028534 , 0.0028844 , 0.0029158 , 0.0029476 , 0.0029797 , 0.0030121 , 0.0030449 , 0.0030781 , 0.0031116 , 0.0031455 , 0.0031797 , 0.0032144 , 0.0032494 , 0.0032848 , 0.0033205 , 0.0033567 , 0.0033932 , 0.0034302 , 0.0034675 , 0.0035053 , 0.0035435 , 0.003582 , 0.0036211 , 0.0036605 , 0.0037003 , 0.0037406 , 0.0037814 , 0.0038225 , 0.0038642 , 0.0039063 , 0.0039488 , 0.0039918 , 0.0040353 , 0.0040792 , 0.0041236 , 0.0041685 , 0.0042139 , 0.0042598 , 0.0043062 , 0.0043531 , 0.0044005 , 0.0044484 , 0.0044968 , 0.0045458 , 0.0045953 , 0.0046453 , 0.0046959 , 0.0047471 , 0.0047988 , 0.004851 , 0.0049038 , 0.0049572 , 0.0050112 , 0.0050658 , 0.0051209 , 0.0051767 , 0.0052331 , 0.0052901 , 0.0053477 , 0.0054059 , 0.0054648 , 0.0055243 , 0.0055844 , 0.0056452 , 0.0057067 , 0.0057689 , 0.0058317 , 0.0058952 , 0.0059594 , 0.0060243 , 0.0060899 , 0.0061562 , 0.0062232 , 0.006291 , 0.0063595 , 0.0064287 , 0.0064987 , 0.0065695 , 0.006641 , 0.0067134 , 0.0067865 , 0.0068604 , 0.0069351 , 0.0070106 , 0.0070869 , 0.0071641 , 0.0072421 , 0.007321 , 0.0074007 , 0.0074813 , 0.0075627 , 0.0076451 , 0.0077283 , 0.0078125 , 0.0078976 , 0.0079836 , 0.0080705 , 0.0081584 , 0.0082472 , 0.008337 , 0.0084278 , 0.0085196 , 0.0086124 , 0.0087061 , 0.008801 , 0.0088968 , 0.0089937 , 0.0090916 , 0.0091906 , 0.0092907 , 0.0093918 , 0.0094941 , 0.0095975 , 0.009702 , 0.0098077 , 0.0099145 , 0.010022 , 0.010132 , 0.010242 , 0.010353 , 0.010466 , 0.01058 , 0.010695 , 0.010812 , 0.01093 , 0.011049 , 0.011169 , 0.01129 , 0.011413 , 0.011538 , 0.011663 , 0.01179 , 0.011919 , 0.012049 , 0.01218 , 0.012312 , 0.012446 , 0.012582 , 0.012719 , 0.012857 , 0.012997 , 0.013139 , 0.013282 , 0.013427 , 0.013573 , 0.013721 , 0.01387 , 0.014021 , 0.014174 , 0.014328 , 0.014484 , 0.014642 , 0.014801 , 0.014963 , 0.015125 , 0.01529 , 0.015457 , 0.015625 , 0.015795 , 0.015967 , 0.016141 , 0.016317 , 0.016494 , 0.016674 , 0.016856 , 0.017039 , 0.017225 , 0.017412 , 0.017602 , 0.017794 , 0.017987 , 0.018183 , 0.018381 , 0.018581 , 0.018784 , 0.018988 , 0.019195 , 0.019404 , 0.019615 , 0.019829 , 0.020045 , 0.020263 , 0.020484 , 0.020707 , 0.020932 , 0.02116 , 0.021391 , 0.021624 , 0.021859 , 0.022097 , 0.022338 , 0.022581 , 0.022827 , 0.023075 , 0.023327 ,

Page 120: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

120 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.023581 , 0.023837 , 0.024097 , 0.024359 , 0.024625 , 0.024893 , 0.025164 , 0.025438 , 0.025715 , 0.025995 , 0.026278 , 0.026564 , 0.026853 , 0.027146 , 0.027441 , 0.02774 , 0.028042 , 0.028348 , 0.028656 , 0.028968 , 0.029284 , 0.029603 , 0.029925 , 0.030251 , 0.03058 , 0.030913 , 0.03125 , 0.03159 , 0.031934 , 0.032282 , 0.032634 , 0.032989 , 0.033348 , 0.033711 , 0.034078 , 0.034449 , 0.034825 , 0.035204 , 0.035587 , 0.035975 , 0.036366 , 0.036762 , 0.037163 , 0.037567 , 0.037976 , 0.03839 , 0.038808 , 0.039231 , 0.039658 , 0.04009 , 0.040526 , 0.040968 , 0.041414 , 0.041865 , 0.04232 , 0.042781 , 0.043247 , 0.043718 , 0.044194 , 0.044675 , 0.045162 , 0.045654 , 0.046151 , 0.046653 , 0.047161 , 0.047675 , 0.048194 , 0.048719 , 0.049249 , 0.049786 , 0.050328 , 0.050876 , 0.05143 , 0.05199 , 0.052556 , 0.053128 , 0.053707 , 0.054292 , 0.054883 , 0.055481 , 0.056085 , 0.056695 , 0.057313 , 0.057937 , 0.058568 , 0.059205 , 0.05985 , 0.060502 , 0.061161 , 0.061827 , 0.0625 , 0.063181 , 0.063869 , 0.064564 , 0.065267 , 0.065978 , 0.066696 , 0.067423 , 0.068157 , 0.068899 , 0.069649 , 0.070408 , 0.071174 , 0.071949 , 0.072733 , 0.073525 , 0.074325 , 0.075135 , 0.075953 , 0.07678 , 0.077616 , 0.078461 , 0.079316 , 0.080179 , 0.081052 , 0.081935 , 0.082827 , 0.083729 , 0.084641 , 0.085563 , 0.086494 , 0.087436 , 0.088388 , 0.089351 , 0.090324 , 0.091307 , 0.092302 , 0.093307 , 0.094323 , 0.09535 , 0.096388 , 0.097438 , 0.098499 , 0.099571 , 0.10066 , 0.10175 , 0.10286 , 0.10398 , 0.10511 , 0.10626 , 0.10741 , 0.10858 , 0.10977 , 0.11096 , 0.11217 , 0.11339 , 0.11463 , 0.11587 , 0.11714 , 0.11841 , 0.1197 , 0.121 , 0.12232 , 0.12365 , 0.125 , 0.12636 , 0.12774 , 0.12913 , 0.13053 , 0.13196 , 0.13339 , 0.13485 , 0.13631 , 0.1378 , 0.1393 , 0.14082 , 0.14235 , 0.1439 , 0.14547 , 0.14705 , 0.14865 , 0.15027 , 0.15191 , 0.15356 , 0.15523 , 0.15692 , 0.15863 , 0.16036 , 0.1621 , 0.16387 , 0.16565 , 0.16746 , 0.16928 , 0.17113 , 0.17299 , 0.17487 , 0.17678 , 0.1787 , 0.18065 , 0.18261 , 0.1846 , 0.18661 , 0.18865 , 0.1907 , 0.19278 , 0.19488 , 0.197 , 0.19914 , 0.20131 , 0.2035 , 0.20572 , 0.20796 , 0.21022 , 0.21251 , 0.21483 , 0.21717 , 0.21953 , 0.22192 , 0.22434 , 0.22678 , 0.22925 , 0.23175 , 0.23427 , 0.23682 , 0.2394 , 0.24201 , 0.24464 , 0.24731 , 0.25 , 0.25272 , 0.25547 , 0.25826 , 0.26107 , 0.26391 , 0.26679 , 0.26969 , 0.27263 , 0.2756 , 0.2786 , 0.28163 , 0.2847 , 0.2878 , 0.29093 , 0.2941 , 0.2973 , 0.30054 , 0.30381 , 0.30712 , 0.31046 , 0.31385 , 0.31726 , 0.32072 , 0.32421 , 0.32774 , 0.33131 , 0.33492 , 0.33856 , 0.34225 , 0.34598 , 0.34974 , 0.35355 , 0.3574 , 0.3613 , 0.36523 , 0.36921 , 0.37323 , 0.37729 , 0.3814 , 0.38555 , 0.38975 , 0.394 , 0.39829 , 0.40262 , 0.40701 , 0.41144 , 0.41592 , 0.42045 , 0.42503 , 0.42965 , 0.43433 , 0.43906 , 0.44384 , 0.44868 , 0.45356 , 0.4585 , 0.46349 , 0.46854 , 0.47364 , 0.4788 , 0.48402 , 0.48929 , 0.49461 , 0.5 , 0.50544 , 0.51095 , 0.51651 , 0.52214 , 0.52782 , 0.53357 , 0.53938 , 0.54525 , 0.55119 , 0.55719 , 0.56326 , 0.56939 , 0.57559 , 0.58186 , 0.5882 , 0.5946 , 0.60108 , 0.60762 , 0.61424 , 0.62093 , 0.62769 , 0.63453 , 0.64144 , 0.64842 , 0.65548 , 0.66262 , 0.66983 , 0.67713, 0.6845, 0.69195, 0.69949 }; /***************************************************************************** * Private functions ****************************************************************************/ /**

Page 121: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

121 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* @brief Get the SPLrms realtive to UD value. * @param[in] *Input points to the input vector. * @param[in] Gain is the gain of the channel (20 dB or 50 dB). * @return SPLrms value * * <b>Functionality of the function:</b> * \par * This function gets the SPLrms realtive to digital units processed. * This function has two possible results, when gain channel is 20 dB either is 50 dB. * The table provides 1024 values, which provide sufficient resolution, without resulting in excessive memory consumption. * The equally spaced values is logarithmic, in order to get resolution in low values. * */ float32_t lookUpTable_UD_SPLrms(float32_t Input, uint8_t Gain) { float32_t maxInput, minInput, dif_dB, dif_lineal, dif_total, SPLrms; uint16_t n, y; const float32_t * SPLrms_Table; n = NELEMS(SPLrms_Table); minInput = 1.078959e-05; maxInput = 7.071068e-01; y=0; if (Gain == 20) { SPLrms_Table = SPLrms_Table_Gain20; } else if (Gain == 50) { SPLrms_Table = SPLrms_Table_Gain20; } if (Input >= maxInput) { SPLrms = (float32_t) SPLrms_Table[n-1];} else if (Input <= minInput) { SPLrms = (float32_t) SPLrms_Table[0];} else if (Input > minInput) { while(Input > UD_Table[y]) { y++; } dif_lineal = UD_Table[y]-UD_Table[y-1]; dif_dB = SPLrms_Table[y]-SPLrms_Table[y-1]; dif_total = Input-UD_Table[y-1]; SPLrms =(float32_t) ((dif_total*dif_dB/dif_lineal) + SPLrms_Table[y-1]); } return SPLrms; }

6.2.2.1.1.1.1.1.1 Percentile_level /* * percentile_level.h * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Calculates a certain percentile level on a vector. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. *

Page 122: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

122 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* @par * percentile_level calculates a certain percentile leven on a vector. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef PERCENTILE_LEVEL_H_ #define PERCENTILE_LEVEL_H_ /***************************************************************************** * Private functions ****************************************************************************/ float32_t percentile_level (float32_t input_vector[], int vector_size, int percentile_level); #endif /* * percentile_level.c * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Calculates a certain percentile level on a vector. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * percentile_level calculates a certain percentile leven on a vector. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <arm_math.h> #include <stdio.h> #include <stdlib.h> /***************************************************************************** * Private functions ****************************************************************************/ int cmpfunc (const void * a, const void * b) { return ( *(int*)b - *(int*)a ); }

Page 123: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

123 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/** * @brief Get the SPL of each filter and its percentiles 90 and 10. * @param[in] input_vector[] points to the input vector. * @param[in] vector_size is the size of the input_vector. * @param[in] percentile_level is the target level of percentile. * @return level of percentile. * * <b>Functionality of the function:</b> * \par * This function gets the value of percentile indicated in percentile_level input argument. */ float32_t percentile_level (float32_t input_vector[], int vector_size, int percentile_level){ int position; if ( percentile_level >= 100 ){ percentile_level = 99; } if (percentile_level <= 0 ){ percentile_level = 1; } position = floor( ( percentile_level * vector_size ) / 100 ); qsort (input_vector, vector_size, sizeof(float32_t), cmpfunc); if ( position == vector_size-1){ return input_vector[position-1]; } else { return input_vector[position]; } }

6.2.2.1.1.1.1.1.2 Filters (63 and 125 Hz) /* * filter_63_fs_1000_fp.h * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Header file of filter of 63 Hz. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * filter_63_fs_1000_fp has the values needed by the ARM CMSIS DSP in order to carry out the filter of 63 Hz * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */

Page 124: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

124 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

# include <arm_math.h> float32_t pCoeffs_f_63_fp[15] = { 8.7526e-05, 0.00017505, 8.7526e-05, 1.764, -0.91246, 1, 0, -1, 1.7669, -0.95121, 1, -2, 1, 1.8347, -0.95945 }; //2 stages uint8_t numStages_f_63_fp = 3; float32_t pState_f_63_fp[12]; /* * filter_125_fs_1000_fp.h * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Header file of filter of 63 Hz. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * filter_125_fs_1000_fp has the values needed by the ARM CMSIS DSP in order to carry out the filter of 125 Hz * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ # include <arm_math.h> float32_t pCoeffs_f_125_fp[15] = { 0.00063858, 0.0012772, 0.00063858, 1.2868, -0.8323, 1, 0, -1, 1.2228, -0.90655, 1, -2, 1, 1.4482, -0.91951 }; //2 stages uint8_t numStages_f_125_fp = 3; float32_t pState_f_125_fp[12];

Page 125: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

125 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

6.2.2.1.1.1.1.1.3 Main (simulation of CTN) /* * main.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief main of indicator 11.2.1 * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * main declares the needed variables and call indicator 11.2.1 function. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <board.h> #include <indicator_11_2_1.h> #include "inputMatlab.h" /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ float32_t rmsValueVector[NBLOCKS*2]; float32_t splValueVector[NBLOCKS*2]; uint16_t k; /***************************************************************************** * Private functions ****************************************************************************/ /* Sets up system hardware */ static void prvSetupHardware(void) { SystemCoreClockUpdate(); Board_Init(); Board_LED_Set(0, false); } /***************************************************************************** * Public functions ****************************************************************************/ int main(void){ prvSetupHardware(); //Start measuring time in processing Board_LED_Set(0, true); //Green light on q15_t Input[BLOCK_SIZE]; float32_t Input_float[BLOCK_SIZE];

Page 126: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

126 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

float32_t Output[3*2]; //Three values (SPLrms, L10 and L90) for each filter (63 Hz and 125 Hz) uint8_t i = 0; for (k=0; k<NBLOCKS; k++){ if (i == 0) { get_input_1(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; } else if (i == 1) { get_input_2(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; } else if (i == 2) { get_input_3(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; } else if (i == 3) { get_input_4(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i = 0; } } //Stop measuring time in processing Board_LED_Set(0, false); //Green ligth off Board_LED_Set(1, true); //Green blue on // Never returns, for warning only return (0); }

Page 127: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

127 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

7 Annex II – Indicator 11.2.1 Code

7.1 INTRODUCTION This annex aims to explain the process that has been carried out by CTN in order to ensure

the good performance of the filtering process in the Indicator 11.2.1. Extended version.

The number of third-octave bands within the frequency range of (20 – 20 KHz) according to

IEC 61260 (1995) is of 30 frequency bands. Therefore a total of 30 filters are applied to the

input signal in order to obtain the SPLrms corresponding to each frequency band. As it has

been mentioned before the number of decimation orders has been minimized obtaining a

total of 3 different orders. As it has been mentioned before, decimation is the process of

decreasing the simple frequency of a given signal, therefore after the decimation process by

2 different orders, 2 different new simple frequencies will be obtained. These sample

frequencies are 1 and 16 KHz.

Each of these sample frequencies will be used for the signal to be filtered in different

frequency ranges. This also helps in decreasing the need of high order filters

implementation if IEC 61260 (1995) requirements are wanted to be fulfilled. Keeping low

order filters (fulfilling with IEC 61260 requirements) presents two main advantages:

3. Low effect of filter delay on the filter output (low impact on the rms value

computation and consequently on SPLrms computation).

4. Low number of computations related to the filtering process and therefore a

decrease on the computation load of the algorithm.

In Table 15 cut-off frequencies of each third octave band implemented are depicted.

Besides, it has been included the sample frequency ( Fs ) obtained after the decimation

process associated with each third octave band. The order of the filter ( N ) has been also

included.

Page 128: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

128 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

22,3872114 25,1188643 28,1838293 3

28,1838293 31,6227766 35,4813389 3

35,4813389 39,8107171 44,6383592 3

44,6683592 50,1187234 56,2341325 3

56,2341325 63,0957345 70,7945784 3

70,7945784 79,4328235 89,1250938 3

89,1250938 100 112,201845 3

112,201845 125,892541 141,253754 3

414,253754 158,489319 177,827941 4

177,827941 199,526232 223,872114 4

223,872114 251,188643 281,838293 3

281,838293 316,227766 354,813389 3

354,813389 398,107171 446,683592 3

446,683592 501,187234 562,341325 3

562,341325 630,957344 707,945784 3

707,945784 794,328235 891,250938 3

891,250938 1000 1122,01845 3

1122,01845 1258,92541 1412,53754 3

1412,53754 1584,89319 1778,27941 3

1778,27941 1995,26231 2238,72114 3

2238,72114 2511,88643 2818,38293 3

2818,38293 3162,27766 3548,13389 3

3548,13389 3981,07171 4466,83592 3

4466,83592 5011,87234 5623,41325 3

5623,41325 6309,57344 7079,45784 3

7079,45784 7943,28235 8912,50938 4

8912,50938 10000 11220,1845 4

11220,1845 12589,2541 14125,3754 4

14125,3754 15848,9319 17782,7941 4

17782,7941 19952,6231 22387,2114 4

1000

16000

48000

Table 27. Cut-off frequencies of each third octave band filter its associated sample frequency and butterworth order used in Indicator 11.2.1. Extended algorithm

As it can be seen in Table 15, there are three different sample frequencies taking into

account the original sample frequency of 48 KHz and the butterworth filter orders are 3 or 4

depending on the third octave band and its sample frequency associated. This is done in

order to ensure the requirements of the norm IEC 61260 (1995).

7.2 VALIDATION OF FILTERS Filter validation has been carried out in two different stages:

1. Validation in Matlab

2. Comparison between Matlab and ARM Cortex M4 performance.

7.2.1 Validation in Matlab

The validation of the filters matlab has been carried out by following the next steps

1. Design of the filter

2. Computation of its transfer function

3. Check the transfer function versus IEC 61260 (1995) requirements.

Page 129: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

129 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 35,4813389 39,8107171 44,6383592 3

Plot

Zoom Plot

It is worth to mention that filter transfer functions have been checked versus class 0

third-octave band filters according to the norm IEC 61260 (1995).

As a result of this validation, a plot showing the transfer function of each third-octave filter

implemented in matlab versus IEC 61260 (1995) requirements is generated and can be seen

from Figure 67 to Figure 96 (note : fn = nominal frequency);

Figure 67. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

25 Hz.

Figure 68. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

31.5 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 22,3872114 25,1188643 28,1838293 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 28,1838293 31,6227766 35,4813389 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 44,6683592 50,1187234 56,2341325 3

Plot

Zoom Plot

Page 130: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

130 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 69. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

40 Hz.

Figure 70. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

50 Hz.

Figure 71. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 63 Hz.

Figure 72. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 80 Hz.

Figure 73.

Filter

Transfer

Funct

ion VS

IEC

60595

(1995

) – class

'

third-

octav

e

band requi

reme

nts fn =

100

Hz.

Figure 74.

Filter

Transfer

Funct

ion VS

IEC

60595

(1995

) – class

'

third-

octav

e

band requi

reme

nts fn =

125

Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 56,2341325 63,0957345 70,7945784 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 89,1250938 100 112,201845 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 70,7945784 79,4328235 89,1250938 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 112,201845 125,892541 141,253754 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 89,1250938 100 112,201845 3

Plot

Zoom Plot

Page 131: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

131 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 75. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 160 Hz.

Figure 76. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 200 Hz.

Figure 77. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

250 Hz.

Figure 78. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

315 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 177,827941 199,526232 223,872114 4

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 281,838293 316,227766 354,813389 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 223,872114 251,188643 281,838293 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 141,253754 158,489319 177,827941 4

Plot

Zoom Plot

Page 132: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

132 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 79. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

400 Hz.

Figure 80. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

500 Hz.

Figure 81. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

630 Hz.

Figure 82. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn =

800 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 446,683592 501,187234 562,341325 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 707,945784 794,328235 891,250938 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 562,341325 630,957344 707,945784 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 354,813389 398,107171 446,683592 3

Plot

Zoom Plot

Page 133: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

133 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 83. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

1000 Hz.

Figure 84. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

1250 Hz.

Figure 85. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

1600 Hz.

Figure 86. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

2000 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1122,01845 1258,92541 1412,53754 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1412,53754 1584,89319 1778,27941 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1778,27941 1995,26231 2238,72114 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 891,250938 1000 1122,01845 3

Plot

Zoom Plot

Page 134: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

134 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 87. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

2500 Hz.

Figure 88. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

3150 Hz.

Figure 89. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

4000 Hz.

Figure 90. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

5000 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 2818,38293 3162,27766 3548,13389 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 4466,83592 5011,87234 5623,41325 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 3548,13389 3981,07171 4466,83592 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 2238,72114 2511,88643 2818,38293 3

Plot

Zoom Plot

Page 135: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

135 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 91. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

6300 Hz.

Figure 92. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

8000 Hz.

Figure 93. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

10000 Hz.

Figure 94. Filter Transfer Function VS IEC 60595 (1995) – class ' third-octave band requirements fn =

12500 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 5623,41325 6309,57344 7079,45784 3

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 7079,45784 7943,28235 8912,50938 4

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 11220,1845 12589,2541 14125,3754 4

Zoom Plot

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 8912,50938 10000 11220,1845 4

Plot

Zoom Plot

Page 136: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

136 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 95. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 16000 Hz.

Figure 96. Filter Transfer Function VS IEC 60595

(1995) – class ' third-octave band requirements fn = 20000 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 14125,3754 15848,9319 17782,7941 4

Plot

Zoom Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 17782,7941 19952,6231 22387,2114 4

Zoom Plot

Plot

Page 137: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

137 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

7.2.2 Validation in ARM Cortex M4

The validation of the filtering process carried out by the ARM Cortex M4 – based

microcontroller is done by comparison between the filtering performance in Matlab and in

the microcontroller.

A pseudo-random signal is generated in Matlab with a certain seed in order to be able to

generate always the same values. This signal is used for the filtering process in matlab and it

is ported to a .h file for it to be able to be read by the C coding environment and filter the

signal using the ARM Cortex M4 – based microcontroller.

Filters used in ARM Cortex M4 are Biquad type and their coefficients have been computed

in Matlab.

The output of the filtering process carried out on the ARM Cortex M4 – based

microcontroller is read by matlab. The FFT of this output (signal filtered in time domain) is

computed and it is compared to the process of filtering in Matlab using a PC.

It is worth to mention that all computations are done using single-precision floats (32 bits) in

both, Matlab and ARM Cortex M4 – based microcontroller.

Comparison of the filtering process is depicted from figure Figure 97 to Figure 126.

Figure 97. Filter process comparison between Matlab

(Bujtterworth filter) and ARM Cortex M4 (Biquad

filter). fn = 25 Hz.

Figure 98. Filter process comparison between Matlab

(Bujtterworth filter) and ARM Cortex M4 (Biquad

filter). fn = 31.5 Hz.

Figure 99. Filter process comparison between Matlab

(Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 40 Hz.

Figure 100. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 50 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 22,3872114 25,1188643 28,1838293 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 28,1838293 31,6227766 35,4813389 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 35,4813389 39,8107171 44,6383592 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 44,6683592 50,1187234 56,2341325 3

Plot

Page 138: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

138 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 101. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 63 Hz.

Figure 102. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 80 Hz.

Figure 103. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 100 Hz.

Figure 104. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 125 Hz.

Figure 105. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 160 Hz.

Figure 106. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 200 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 56,2341325 63,0957345 70,7945784 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 70,7945784 79,4328235 89,1250938 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 89,1250938 100 112,201845 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 112,201845 125,892541 141,253754 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 141,253754 158,489319 177,827941 4

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

1000 177,827941 199,526232 223,872114 4

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 223,872114 251,188643 281,838293 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 281,838293 316,227766 354,813389 3

Plot

Page 139: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

139 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 107. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 250 Hz.

Figure 108. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 315 Hz.

Figure 109. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 400 Hz.

Figure 110. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 500 Hz.

Figure 111. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 630 Hz.

Figure 112. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4 (Biquad filter). fn = 800 Hz.

Figure 113. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

Figure 114. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 354,813389 398,107171 446,683592 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 446,683592 501,187234 562,341325 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 562,341325 630,957344 707,945784 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 707,945784 794,328235 891,250938 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 891,250938 1000 1122,01845 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1122,01845 1258,92541 1412,53754 3

Plot

Page 140: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

140 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

(Biquad filter). fn = 1000 Hz. (Biquad filter). fn = 1250 Hz.

Figure 115. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 1600 Hz.

Figure 116. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 2000 Hz.

Figure 117. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 2500 Hz.

Figure 118. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 3150 Hz.

Figure 119. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 4000 Hz.

Figure 120. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 5000 Hz.

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1412,53754 1584,89319 1778,27941 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 1778,27941 1995,26231 2238,72114 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

16000 2238,72114 2511,88643 2818,38293 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 2818,38293 3162,27766 3548,13389 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 3548,13389 3981,07171 4466,83592 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 4466,83592 5011,87234 5623,41325 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 5623,41325 6309,57344 7079,45784 3

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 7079,45784 7943,28235 8912,50938 4

Plot

Page 141: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

141 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Figure 121. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 6300 Hz.

Figure 122. Filter process comparison between Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 8000 Hz.

Figure 123. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 10000 Hz.

Figure 124. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 12500 Hz.

Figure 125. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 16000 Hz.

Figure 126. Filter process comparison between

Matlab (Bujtterworth filter) and ARM Cortex M4

(Biquad filter). fn = 20000 Hz.

7.3 STRUCTURE CODE The code is structured as usual in C, in two different folders. One folder called src folder,

contains the source files and the other called inc contains the header files needed in order

for the algorithm to work properly

7.3.1 Code

7.3.1.1 Filters

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 8912,50938 10000 11220,1845 4

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 11220,1845 12589,2541 14125,3754 4

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 14125,3754 15848,9319 17782,7941 4

Plot

Fs (Hz) Flow (Hz) Fc (Hz) Fhigh (Hz) N

48000 17782,7941 19952,6231 22387,2114 4

Plot

Page 142: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

142 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter 25 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_25_fp[15] = { 5.825e-06, 1.165e-05,

5.825e-06, 1.9398, -0.96423,

1,

0, -1, 1.9501, -0.98019,

1,

-2, 1, 1.9635, -0.98372

};

//2 stages

uint8_t numStages_f_25_fp = 3;

float32_t pState_f_25_fp[12];

Filter 31 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_31_fp[15] = { 1.1516e-05, 2.3031e-

05, 1.1516e-05, 1.9167, -0.95517,

1,

0, -1, 1.9277,

-0.97514,

1,

-2, 1, 1.9476,

-0.97954

};

//2 stages

uint8_t numStages_f_31_fp = 3;

float32_t pState_f_31_fp[12];

Filter 39 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_39_fp[15] = { 2.2495e-05, 4.4989e-

05, 2.2495e-05, 1.8836, -0.94406,

1,

0, -1, 1.8943,

-0.96894,

1,

-2, 1, 1.924,

-0.97437

};

//2 stages

uint8_t numStages_f_39_fp = 3;

float32_t pState_f_39_fp[12];

Page 143: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

143 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter 50 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_50_fp[15] = { 4.5007e-05, 9.0013e-

05, 4.5007e-05, 1.8348, -0.92967,

1,

0, -1, 1.8433,

-0.96086,

1,

-2, 1, 1.8884,

-0.96764

};

//2 stages

uint8_t numStages_f_50_fp = 3;

float32_t pState_f_50_fp[12];

Filter 63 Hz; Fs = 1000 Hz

/*

* filter_63_fs_1000_fp.h

*

* Created on: 15/1/2015

* Author: Centro Tecnológico Naval

*/

/*

* @brief Header file of filter of 63 Hz.

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* \par

* filter_63_fs_1000_fp has the values needed by the ARM CMSIS DSP in order

to carry out the filter of 63 Hz

*

*

* \par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

# include <arm_math.h>

Page 144: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

144 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

float32_t pCoeffs_f_63_fp[15] = { 8.7526e-05,

0.00017505, 8.7526e-05, 1.764, -0.91246,

1,

0, -1, 1.7669,

-0.95121,

1,

-2, 1, 1.8347,

-0.95945

};

//2 stages

uint8_t numStages_f_63_fp = 3;

float32_t pState_f_63_fp[12];

Page 145: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

145 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter 79 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_79_fp[15] = { 0.00017075,

0.00034151, 0.00017075, 1.6601, -0.89098,

1,

0, -1, 1.6515,

-0.93916,

1,

-2, 1, 1.7536,

-0.94907

};

//2 stages

uint8_t numStages_f_79_fp = 3;

float32_t pState_f_79_fp[12];

Filter 100 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_100_fp[15] = { 0.00033131,

0.00066262, 0.00033131, 1.5079, -0.86458,

1,

0, -1, 1.4786,

-0.9244,

1,

-2, 1, 1.6313,

-0.93601

};

//2 stages

uint8_t numStages_f_100_fp = 3;

float32_t pState_f_100_fp[12];

Filter 125 Hz; Fs = 1000 Hz

/*

* filter_125_fs_1000_fp.h

*

* Created on: 15/1/2015

* Author: Centro Tecnológico Naval

*/

Page 146: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

146 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/*

* @brief Header file of filter of 63 Hz.

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* filter_125_fs_1000_fp has the values needed by the ARM CMSIS DSP in

order to carry out the filter of 125 Hz

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

# include <arm_math.h>

float32_t pCoeffs_f_125_fp[15] = { 0.00063858, 0.0012772,

0.00063858, 1.2868, -0.8323,

1,

0, -1, 1.2228,

-0.90655,

1,

-2, 1, 1.4482,

-0.91951

};

//2 stages

uint8_t numStages_f_125_fp = 3;

float32_t pState_f_125_fp[12];

Filter 160 Hz; Fs = 1000 Hz

float32_t pCoeffs_f_158_fp[20] = { 0.0001, 0.0003, 0.0001,

0.9074, -0.8027,

1.0000,

2.0000, 1.0000, 1.0480, -0.8126,

1.0000,

-2.0000, 1.0000, 0.8528, -0.9109,

Page 147: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

147 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1.0000,

-2.0000, 1.0000, 1.2015, -0.9218

};

//2 stages

uint8_t numStages_f_158_fp = 4;

float32_t pState_f_158_fp[16];

Filter 200 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_199_fp[20] = { 0.00030806,

0.00061612, 0.00030806, 0.44459, -0.75965,

1,

2, 1, 0.63564,

-0.76722,

1,

-2, 1, 0.32995,

-0.89195,

1,

-2, 1, 0.81513,

-0.90043

};

//2 stages

uint8_t numStages_f_199_fp = 4;

float32_t pState_f_199_fp[16];

Filter 250 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_251_fp[15] = { 1.4414e-06, 2.8828e-

06, 1.4414e-06, 1.9679, -0.97749,

1,

0, -1, 1.9758,

-0.98757,

1,

-2, 1, 1.9819,

-0.9898

};

//2 stages

uint8_t numStages_f_251_fp = 3;

float32_t pState_f_251_fp[12];

Page 148: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

148 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter 316 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_316_fp[15] = { 2.8593e-06, 5.7186e-

06, 2.8593e-06, 1.9566, -0.97175,

1,

0, -1, 1.9657,

-0.98438,

1,

-2, 1, 1.9746,

-0.98717

};

//2 stages

uint8_t numStages_f_316_fp = 3;

float32_t pState_f_316_fp[12];

Filter 400 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_398_fp[15] = { 5.6635e-06, 1.1327e-

05, 5.6635e-06, 1.9406, -0.96456,

1,

0, -1, 1.9509,

-0.98038,

1,

-2, 1, 1.9641,

-0.98388

};

//2 stages

uint8_t numStages_f_398_fp = 3;

float32_t pState_f_398_fp[12];

Filter 500 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_501_fp[15] = { 1.1197e-05, 2.2394e-

05, 1.1197e-05, 1.9178, -0.95558,

1,

0, -1, 1.9288,

-0.97537,

Page 149: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

149 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1,

-2, 1, 1.9484,

-0.97974

};

//2 stages

uint8_t numStages_f_501_fp = 3;

float32_t pState_f_501_fp[12];

Filter 630 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_630_fp[15] = { 2.2087e-05, 4.4174e-

05, 2.2087e-05, 1.885, -0.9444,

1,

0, -1, 1.8958,

-0.96912,

1,

-2, 1, 1.9251,

-0.97454

};

//2 stages

uint8_t numStages_f_630_fp = 3;

float32_t pState_f_630_fp[12];

Filter 800 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_794_fp[15] = { 4.3442e-05, 8.6884e-

05, 4.3442e-05, 1.8373, -0.93049,

1,

0, -1, 1.8459,

-0.96132,

1,

-2, 1, 1.8901,

-0.96801

};

//2 stages

uint8_t numStages_f_794_fp = 3;

float32_t pState_f_794_fp[12];

Page 150: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

150 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Filter 1000 Hz; Fs = 1000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_1000_fp[15] = { 8.514e-05,

0.00017028, 8.514e-05, 1.7675, -0.91325,

1,

0, -1, 1.7707,

-0.95165,

1,

-2, 1, 1.8374,

-0.95983

};

//2 stages

uint8_t numStages_f_1000_fp = 3;

float32_t pState_f_1000_fp[12];

Filter 1260 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_1258_fp[15] = { 0.00016613,

0.00033226, 0.00016613, 1.6652, -0.89196,

1,

0, -1, 1.6573,

-0.9397,

1,

-2, 1, 1.7576,

-0.94954

};

//2 stages

uint8_t numStages_f_1258_fp = 3;

float32_t pState_f_1258_fp[12];

Filter 1580 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_1584_fp[15] = { 0.00032242,

0.00064485, 0.00032242, 1.5153, -0.86578,

1,

0, -1, 1.4872,

-0.92507,

1,

-2, 1, 1.6374,

-0.93661

Page 151: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

151 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

};

//2 stages

uint8_t numStages_f_1584_fp = 3;

float32_t pState_f_1584_fp[12];

Filter 2000 Hz; Fs = 16000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_1995_fp[15] = { 0.00062164, 0.0012433,

0.00062164, 1.2976, -0.83376,

1,

0, -1, 1.2354,

-0.90735,

1,

-2, 1, 1.4572,

-0.92027

};

//2 stages

uint8_t numStages_f_1995_fp = 3;

float32_t pState_f_1995_fp[12];

Filter 2500 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_2511_fp[15] = { 5.0689e-05,

0.00010138, 5.0689e-05, 1.8236, -0.92686,

1,

0, -1, 1.8313,

-0.95929,

1,

-2, 1, 1.8799,

-0.9663

};

//2 stages

uint8_t numStages_f_2511_fp = 3;

float32_t pState_f_2511_fp[12];

Filter 3160 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_3162_fp[15] = { 9.9252e-05, 0.0001985,

9.9252e-05, 1.7474, -0.90876,

Page 152: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

152 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

1,

0, -1, 1.7487,

-0.94913,

1,

-2, 1, 1.8219,

-0.95768

};

//2 stages

uint8_t numStages_f_3162_fp = 3;

float32_t pState_f_3162_fp[12];

Filter 4000 Hz; Fs = 48000 Hz

float32_t pCoeffs_f_3981_fp[15] = { 0.00019345,

0.00038689, 0.00019345, 1.6357, -0.88643,

1,

0, -1, 1.6241,

-0.93661,

1,

-2, 1, 1.7343,

-0.94684

};

//2 stages

uint8_t numStages_f_3981_fp = 3;

float32_t pState_f_3981_fp[12];

Filter 5000 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_5011_fp[15] = { 0.00037491,

0.00074982, 0.00037491, 1.4724, -0.85901,

1,

0, -1, 1.4378,

-0.9213,

1,

-2, 1, 1.6023,

-0.9332

};

//2 stages

uint8_t numStages_f_5011_fp = 3;

float32_t pState_f_5011_fp[12];

Filter 6300 Hz; Fs = 48000 Hz

# include <arm_math.h>

Page 153: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

153 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

float32_t pCoeffs_f_6309_fp[15] = { 0.00072161, 0.0014432,

0.00072161, 1.2357, -0.8255,

1,

0, -1, 1.1631,

-0.90283,

1,

-2, 1, 1.405,

-0.91595

};

//2 stages

uint8_t numStages_f_6309_fp = 3;

float32_t pState_f_6309_fp[12];

Filter 8000 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_7943_fp[20] = { 0.00015423,

0.00030845, 0.00015423, 0.83084, -0.79509,

1,

2, 1, 0.98029,

-0.80486,

1,

-2, 1, 0.76671,

-0.90747,

1,

-2, 1, 1.1391,

-0.91824

};

//2 stages

uint8_t numStages_f_7943_fp = 4;

float32_t pState_f_7943_fp[16];

Filter 10000 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_10000_fp[20] = { 0.00036094,

0.00072188, 0.00036094, 0.34243, -0.75088,

1,

2, 1, 0.54357,

-0.75752,

1,

-2, 1, 0.21403,

-0.88823,

1,

-2, 1, 0.72681,

-0.89569

};

Page 154: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

154 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

//2 stages

uint8_t numStages_f_10000_fp = 4;

float32_t pState_f_10000_fp[16];

Filter 12500 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_12589_fp[20] = { 0.00083198, -0.001664,

0.00083198, -0.024999, -0.69777,

1,

2, 1, -0.278,

-0.7012,

1,

-2, 1, 0.16416,

-0.86478,

1,

2, 1, -0.48894,

-0.86871

};

//2 stages

uint8_t numStages_f_12589_fp = 4;

float32_t pState_f_12589_fp[16];

Filter 16000 Hz; Fs = 48000 Hz

# include <arm_math.h>

float32_t pCoeffs_f_15848_fp[20] = { 0.0018845, -0.003769,

0.0018845, -0.68213, -0.618,

1,

-2, 1, -0.97066, -0.65196,

1,

2, 1, -0.53163, -0.81759,

1,

2, 1, -1.2556, -0.85649

};

//2 stages

uint8_t numStages_f_15848_fp = 4;

float32_t pState_f_15848_fp[16];

Filter 20000 Hz; Fs = 48000 Hz

# include <arm_math.h>

Page 155: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

155 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

float32_t pCoeffs_f_19952_fp[20] = { 0.0041858, -0.0083717,

0.0041858, -1.1999, -0.45753,

1,

-2, 1, -1.6123, -0.68316,

1,

2, 1, -1.2027, -0.71249,

1,

2, 1, -1.8583, -0.90314

};

//2 stages

uint8_t numStages_f_19952_fp = 4;

float32_t pState_f_19952_fp[16];

7.3.2 INC Folder

Indicator_11_2_1_extended.h

/*

* indicator_11_2_1.h

*

* Created on: 16/3/2016

* Author: Centro Tecnológico Naval

*/

/*

* @brief Obtain values for Indicator 11.2.1 extended

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* "Indicator 11.2.1 extended" returns the SPLrms values of the input

signal for bandwidth within 20 Hz to 20 kHz.

* It also returns the value of the SPLrms percentiles.

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#ifndef INDICATOR_11_2_1_EXTENDED_H_

#define INDICATOR_11_2_1_EXTENDED_H_

#include <arm_math.h>

Page 156: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

156 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

void indicator_11_2_1_extended(float32_t * Input, uint16_t k, float32_t

*rmsValueVector, float32_t *splValueVector, float32_t * Output);

#endif /* INDICATOR_11_2_1_H_ */

looUpTable_UD_SPL_rms.h

/*

* lookUpTable_UD_SPLrms.h

*

* Created on: 16/3/2016

* Author: Centro Tecnológico Naval

*/

/*

* @brief Identifies digital values with SPLrms re 1uPa values

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* lookUpTable_UD_SPLrms link digital values of the processing with SPLrms

values re 1uPa, taking into account:

* - Sensitivity of hydrophone

* - Gain of the channel

* - Conversion Factor of ADC

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#ifndef LOOKUPTABLE_UD_SPLRMS_H_

#define LOOKUPTABLE_UD_SPLRMS_H_

#include <arm_math.h> // Include CMSIS header

/**************************************************************************

***

* Private types/enumerations/variables

***************************************************************************

*/

#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))

Page 157: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

157 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/**************************************************************************

***

* Private functions

***************************************************************************

*/

float32_t lookUpTable_UD_SPLrms( float32_t Input, uint8_t Gain);

#endif

Percentile_level.h

/*

* percentile_level.h

*

* Created on: 15/1/2015

* Author: Centro Tecnológico Naval

*/

/*

* @brief Calculates a certain percentile level on a vector.

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* percentile_level calculates a certain percentile leven on a vector.

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#ifndef PERCENTILE_LEVEL_H_

#define PERCENTILE_LEVEL_H_

/**************************************************************************

***

* Private functions

***************************************************************************

*/

float32_t percentile_level (float32_t input_vector[], int vector_size, int

percentile_level);

#endif

Page 158: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

158 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

7.3.3 SRC Folder

Indicator_11_2_1_extended.c

/*

* indicator_11_2_1.c

*

* Created on: 16/3/2016

* Author: Centro Tecnológico Naval

*/

/*

* @brief Obtain values for Indicator 11.2.1 extended

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* "Indicator 11.2.1 extended" returns the SPLrms values of the input

signal for bandwidth within 20 Hz to 20 kHz.

* It also returns the value of the SPLrms percentiles.

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#include <indicator_11_2_1_extended.h>

#include <inputMatlab.h>

#include <lookUpTable_UD_SPLrms.h>

#include <math.h>

#include <stdlib.h>

#include <stdio.h>

#include "percentile_level.h"

#include "filter_158_fs_1000_fp.h"

#include "filter_251_fs_16000_fp.h"

#include "filter_398_fs_16000_fp.h"

#include "filter_630_fs_16000_fp.h"

#include "filter_1000_fs_16000_fp.h"

#include "filter_1584_fs_16000_fp.h"

#include "filter_2511_fs_48000_fp.h"

#include "filter_3981_fs_48000_fp.h"

#include "filter_6309_fs_48000_fp.h"

#include "filter_10000_fs_48000_fp.h"

#include "filter_15848_fs_48000_fp.h"

/**************************************************************************

***

Page 159: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

159 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* Private types/enumerations/variables

***************************************************************************

*/

float32_t rmsValue = 0;

float32_t splValue = 0;

float32_t percentile90RMS;

float32_t percentile10RMS;

float32_t percentile90SPL;

float32_t percentile10SPL;

float32_t *pCoeffs_f;

uint8_t numStages_f;

float32_t *pState_f;

uint16_t i;

uint16_t j;

float32_t rmsValueVector_temp[NBLOCKS];

float32_t splValueVector_temp[NBLOCKS];

arm_status status;

arm_fir_decimate_instance_f32 S_decimate;

#define numTaps 100

const uint8_t M1 = 48;

const uint8_t M2 = 3;

const uint16_t num_filters = 30;

float32_t signalToProcess[BLOCK_SIZE];

float32_t pCoeffs_M1[numTaps] = {-5.8755e-05,-2.0249e-05,2.1384e-

05,6.9045e-

05,0.00012581,0.00019488,0.00027957,0.0003832,0.00050912,0.00066062,0.00084

084,0.0010528,0.0012994,0.001583,0.001906,0.0022702,0.0026772,0.003128,0.00

36232,0.004163,0.004747,0.0053744,0.0060437,0.006753,0.0074997,0.008281,0.0

090934,0.0099327,0.010795,0.011675,0.012567,0.013467,0.014368,0.015265,0.01

6151,0.01702,0.017866,0.018683,0.019464,0.020204,0.020897,0.021537,0.02212,

0.022641,0.023096,0.02348,0.023792,0.024028,0.024186,0.024266,0.024266,0.02

4186,0.024028,0.023792,0.02348,0.023096,0.022641,0.02212,0.021537,0.020897,

0.020204,0.019464,0.018683,0.017866,0.01702,0.016151,0.015265,0.014368,0.01

3467,0.012567,0.011675,0.010795,0.0099327,0.0090934,0.008281,0.0074997,0.00

6753,0.0060437,0.0053744,0.004747,0.004163,0.0036232,0.003128,0.0026772,0.0

022702,0.001906,0.001583,0.0012994,0.0010528,0.00084084,0.00066062,0.000509

12,0.0003832,0.00027957,0.00019488,0.00012581,6.9045e-05,2.1384e-05,-

2.0249e-05,-5.8755e-05};

float32_t pCoeffs_M2[numTaps] = {0.00051419,0.00026543,-0.00028031,-

0.00060424,-0.00033124,0.00036808,0.0008261,0.00046658,-0.00052909,-

0.0012021,-0.00068292,0.00077522,0.0017569,0.00099318,-0.00112,-0.0025192,-

0.0014126,0.0015798,0.003524,0.0019602,-0.0021754,-0.0048175,-

0.0026616,0.0029355,0.0064643,0.0035536,-0.0039021,-0.0085613,-

0.0046925,0.0051415,0.011265,0.0061715,-0.0067655,-0.014847,-

0.0081571,0.0089805,0.019825,0.010979,-0.012212,-0.027318,-

0.015387,0.017492,0.040251,0.023529,-0.028121,-0.069383,-

0.044937,0.063263,0.21166,0.31808,0.31808,0.21166,0.063263,-0.044937,-

0.069383,-0.028121,0.023529,0.040251,0.017492,-0.015387,-0.027318,-

0.012212,0.010979,0.019825,0.0089805,-0.0081571,-0.014847,-

0.0067655,0.0061715,0.011265,0.0051415,-0.0046925,-0.0085613,-

Page 160: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

160 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.0039021,0.0035536,0.0064643,0.0029355,-0.0026616,-0.0048175,-

0.0021754,0.0019602,0.003524,0.0015798,-0.0014126,-0.0025192,-

0.00112,0.00099318,0.0017569,0.00077522,-0.00068292,-0.0012021,-

0.00052909,0.00046658,0.0008261,0.00036808,-0.00033124,-0.00060424,-

0.00028031,0.00026543,0.00051419};

/**************************************************************************

***

* Public types/enumerations/variables

***************************************************************************

*/

/**************************************************************************

***

* Private functions

***************************************************************************

*/

/**************************************************************************

***

* Public functions

***************************************************************************

*/

/**

* @brief Get the SPL of each filter and its percentiles 90

and 10.

* @param[in] *Input points to the input vector.

* @param[in] k. Counter of maximum value: NBLOCKS

* @param[in] *rmsValueVector points to the RMS value vector.

* @param[in] *splValueVector points to the SPL value vector.

* @param[in] *Output points to the output vector in which SPLrms and

its percentiles values are stored.

* @return none

*

* <b>Functionality of the function:</b>

* \par

* This function gets the SPLrms value of an input signal, as well

as its percentiles.

* First of all the Input signal must be filtered.

* There are eleven filters, distributed in 20 Hz - 20 kHz range.

* Every time the signal is filtered, the RMS value on a vector is

stored. The same is done with the SPL value.

* So a vector with the RMS and SPL values for each center

frequency is obtained.

*

* All RMS values relating to the process of a block is stored in

a vector, which is subsequently used to compute the total RMS.

* The same is done with the SPL.

*

* Then the percentiles l_90 and l_10 of the SPL is obtained.

*

* Finally the output will be a vector containing the final SPL,

SPL percentile l_90 and SPL percentile l_10.

Page 161: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

161 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

*

*/

void indicator_11_2_1_extended( float32_t * Input, uint16_t k, float32_t

*rmsValueVector, float32_t *splValueVector, float32_t * Output )

{

// This is the loop for each filter. Depending on the value of i, the

filter will have a fs = 1 KHz, 16 KHz or 48 KHz.

for (i=0;i<11;i++){

// Filter for fs = 1 KHz.

if (i<1){

// Size of samples to decimate for a factor of M1 (48)

uint16_t sizeOutputDecimated_M1 = floorf(BLOCK_SIZE/M1);

uint16_t sizeInputDecimated_M1 =

M1*sizeOutputDecimated_M1;

// Choose filter

switch (i) {

case 0: //Filter for fc = 25,11886432

pCoeffs_f = pCoeffs_f_158_fp;

numStages_f = numStages_f_158_fp;

pState_f = pState_f_158_fp;

break;

}

// Decimation of the signal.

float32_t pState [numTaps + sizeInputDecimated_M1 - 1];

if (arm_fir_decimate_init_f32 (&S_decimate, numTaps, M1,

pCoeffs_M1, pState, sizeInputDecimated_M1) == ARM_MATH_SUCCESS ) {

arm_fir_decimate_f32 (&S_decimate, Input,

signalToProcess, sizeInputDecimated_M1);

//splValueVector[k+NBLOCKS*i] =

signalDecimated[42];

}else {

//it should get error

}

// Filtered block.

arm_biquad_casd_df1_inst_f32 *S =

(arm_biquad_casd_df1_inst_f32

*)malloc(sizeof(arm_biquad_casd_df1_inst_f32));

arm_biquad_cascade_df1_init_f32 ( S , numStages_f ,

pCoeffs_f, pState_f );

arm_biquad_cascade_df1_f32( S ,signalToProcess,

signalToProcess, sizeOutputDecimated_M1 );

Page 162: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

162 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

free(S);

// RMS computation X Hz and store it in the vector.

arm_rms_f32( signalToProcess, sizeOutputDecimated_M1,

&rmsValue);

rmsValueVector[k+NBLOCKS*i] = rmsValue;

// SPL computation X Hz and store it in the vector.

splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN);

splValueVector[k+NBLOCKS*i] = splValue;

}

// Filter for fs = 16 KHz.

if (i>0 && i<5){

// Size of samples to decimate for a factor of M2

uint16_t sizeOutputDecimated_M2 =

floorf(BLOCK_SIZE/M2);

uint16_t sizeInputDecimated_M2 =

M2*sizeOutputDecimated_M2;

// Choose filter

switch (i) {

case 1: //Filter for fc = 251,18864315

pCoeffs_f = pCoeffs_f_251_fp;

numStages_f = numStages_f_251_fp;

pState_f = pState_f_251_fp;

break;

case 2: //Filter for fc = 316,22776602

pCoeffs_f = pCoeffs_f_398_fp;

numStages_f = numStages_f_398_fp;

pState_f = pState_f_398_fp;

break;

case 3: //Filter for fc = 398,10717055

pCoeffs_f = pCoeffs_f_630_fp;

numStages_f = numStages_f_630_fp;

pState_f = pState_f_630_fp;

break;

case 4: //Filter for fc = 501,18723363

pCoeffs_f = pCoeffs_f_1000_fp;

numStages_f = numStages_f_1000_fp;

pState_f = pState_f_1000_fp;

break;

case 5: //Filter for fc = 630,95734448

pCoeffs_f = pCoeffs_f_1584_fp;

numStages_f = numStages_f_1584_fp;

pState_f = pState_f_1584_fp;

break;

Page 163: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

163 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

}

// Decimation block

float32_t pState [numTaps + sizeInputDecimated_M2

- 1];

if (arm_fir_decimate_init_f32 (&S_decimate,

numTaps, M2, pCoeffs_M2, pState, sizeInputDecimated_M2) == ARM_MATH_SUCCESS

) {

arm_fir_decimate_f32 (&S_decimate, Input,

signalToProcess, sizeInputDecimated_M2);

}else {

break;

//it should get error

}

// Filter block

arm_biquad_casd_df1_inst_f32 *S =

(arm_biquad_casd_df1_inst_f32

*)malloc(sizeof(arm_biquad_casd_df1_inst_f32));

arm_biquad_cascade_df1_init_f32 ( S ,

numStages_f , pCoeffs_f, pState_f );

arm_biquad_cascade_df1_f32( S ,signalToProcess,

signalToProcess, sizeOutputDecimated_M2 );

free(S);

// RMS computation X Hz and store it in the vector.

arm_rms_f32( signalToProcess,

sizeOutputDecimated_M2, &rmsValue);

rmsValueVector[k+NBLOCKS*i] = rmsValue;

// SPL computation X Hz and store it in the vector.

splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN);

splValueVector[k+NBLOCKS*i] = splValue;

}

// Filter for fs = 48 KHz.

if (i>5){

// No decimation factor here.

// Choose filter

switch (i) {

case 6: //Filter for fc = 2511,88643151

pCoeffs_f = pCoeffs_f_2511_fp;

numStages_f = numStages_f_2511_fp;

pState_f = pState_f_2511_fp;

break;

Page 164: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

164 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

case 7: //Filter for fc = 3162,27766017

pCoeffs_f = pCoeffs_f_3981_fp;

numStages_f = numStages_f_3981_fp;

pState_f = pState_f_3981_fp;

break;

case 8: // Filter for fc = 3981,07170553

pCoeffs_f = pCoeffs_f_6309_fp;

numStages_f = numStages_f_6309_fp;

pState_f = pState_f_6309_fp;

break;

case 9: // Filter for fc = 5011,87233627

pCoeffs_f = pCoeffs_f_10000_fp;

numStages_f = numStages_f_10000_fp;

pState_f = pState_f_10000_fp;

break;

case 10: // Filter for fc = 6309,57344480

pCoeffs_f = pCoeffs_f_15848_fp;

numStages_f = numStages_f_15848_fp;

pState_f = pState_f_15848_fp;

break;

}

// Filter block

arm_biquad_casd_df1_inst_f32 *S =

(arm_biquad_casd_df1_inst_f32

*)malloc(sizeof(arm_biquad_casd_df1_inst_f32));

arm_biquad_cascade_df1_init_f32 ( S ,

numStages_f , pCoeffs_f, pState_f );

arm_biquad_cascade_df1_f32( S ,Input,

signalToProcess, BLOCK_SIZE );

free(S);

// RMS computation X Hz and store it in the vector.

arm_rms_f32( signalToProcess, BLOCK_SIZE,

&rmsValue);

rmsValueVector[k+NBLOCKS*i] = rmsValue;

// SPL computation X Hz and store it in the vector.

splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN);

splValueVector[k+NBLOCKS*i] = splValue;

}

// Once every block has been processed, get the RMS and

SPL of each filter and get the percentiles of each one of them.

if(k==(NBLOCKS-1)){

//rmsValueVector_temp will contain the RMS of each

RMS obtained with a filter of 25 Hz, the RMS obtained with a filter of 31,

..., and so on.

Page 165: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

165 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

for (j=0;j<NBLOCKS;j++){

rmsValueVector_temp[j] =

rmsValueVector[j+NBLOCKS*i];

}

//splValueVector_temp will contain the SPL of each

SPL obtained with a filter of 25 Hz, the SPL obtained with a filter of 31

Hz, ..., and so on.

for (j=0;j<NBLOCKS;j++){

splValueVector_temp[j] =

splValueVector[j+NBLOCKS*i];

}

// SPL total

arm_rms_f32( rmsValueVector_temp, NBLOCKS,

&rmsValue);

splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN);

// Percentiles

percentile90RMS = percentile_level

(rmsValueVector_temp, NBLOCKS, 90);

percentile10RMS = percentile_level

(rmsValueVector_temp, NBLOCKS, 10);

percentile90SPL = percentile_level

(splValueVector_temp, NBLOCKS, 90);

percentile10SPL = percentile_level

(splValueVector_temp, NBLOCKS, 10);

Output[3*i] = splValue;

Output[3*i+1] = percentile90SPL;

Output[3*i+2] = percentile10SPL;

}

}

}

looUpTable_UD_SPLrms.c

/*

* lookUpTable_UD_SPLrms.c

*

* Created on: 16/3/2016

* Author: Centro Tecnológico Naval

*/

/*

* @brief Identifies digital values with SPLrms re 1uPa values

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

Page 166: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

166 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* lookUpTable_UD_SPLrms link digital values of the processing with SPLrms

values re 1uPa, taking into account:

* - Sensitivity of hydrophone

* - Gain of the channel

* - Conversion Factor of ADC

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#include <lookUpTable_UD_SPLrms.h>

/**************************************************************************

***

* Private types/enumerations/variables

***************************************************************************

*/

const float32_t SPLrms_Table_Gain20[1024]=

{

81.6704 , 81.7645 , 81.8585 , 81.9526 , 82.0467 , 82.1408 ,

82.2348 , 82.3289 , 82.423 , 82.517 ,

82.6111 , 82.7052 , 82.7993 , 82.8933 , 82.9874 , 83.0815 ,

83.1756 , 83.2696 , 83.3637 , 83.4578 ,

83.5518 , 83.6459 , 83.74 , 83.8341 , 83.9281 , 84.0222 ,

84.1163 , 84.2103 , 84.3044 , 84.3985 ,

84.4926 , 84.5866 , 84.6807 , 84.7748 , 84.8688 , 84.9629 ,

85.057 , 85.1511 , 85.2451 , 85.3392 ,

85.4333 , 85.5273 , 85.6214 , 85.7155 , 85.8096 , 85.9036 ,

85.9977 , 86.0918 , 86.1859 , 86.2799 ,

86.374 , 86.4681 , 86.5621 , 86.6562 , 86.7503 , 86.8444 ,

86.9384 , 87.0325 , 87.1266 , 87.2206 ,

87.3147 , 87.4088 , 87.5029 , 87.5969 , 87.691 , 87.7851 ,

87.8791 , 87.9732 , 88.0673 , 88.1614 ,

88.2554 , 88.3495 , 88.4436 , 88.5376 , 88.6317 , 88.7258 ,

88.8199 , 88.9139 , 89.008 , 89.1021 ,

89.1962 , 89.2902 , 89.3843 , 89.4784 , 89.5724 , 89.6665 ,

89.7606 , 89.8547 , 89.9487 , 90.0428 ,

90.1369 , 90.2309 , 90.325 , 90.4191 , 90.5132 , 90.6072 ,

90.7013 , 90.7954 , 90.8894 , 90.9835 ,

91.0776 , 91.1717 , 91.2657 , 91.3598 , 91.4539 , 91.5479 ,

91.642 , 91.7361 , 91.8302 , 91.9242 ,

92.0183 , 92.1124 , 92.2065 , 92.3005 , 92.3946 , 92.4887 ,

92.5827 , 92.6768 , 92.7709 , 92.865 ,

92.959 , 93.0531 , 93.1472 , 93.2412 , 93.3353 , 93.4294 ,

93.5235 , 93.6175 , 93.7116 , 93.8057 ,

93.8997 , 93.9938 , 94.0879 , 94.182 , 94.276 , 94.3701 ,

94.4642 , 94.5582 , 94.6523 , 94.7464 ,

Page 167: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

167 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

94.8405 , 94.9345 , 95.0286 , 95.1227 , 95.2168 , 95.3108 ,

95.4049 , 95.499 , 95.593 , 95.6871 ,

95.7812 , 95.8753 , 95.9693 , 96.0634 , 96.1575 , 96.2515 ,

96.3456 , 96.4397 , 96.5338 , 96.6278 ,

96.7219 , 96.816 , 96.91 , 97.0041 , 97.0982 , 97.1923 ,

97.2863 , 97.3804 , 97.4745 , 97.5685 ,

97.6626 , 97.7567 , 97.8508 , 97.9448 , 98.0389 , 98.133 ,

98.2271 , 98.3211 , 98.4152 , 98.5093 ,

98.6033 , 98.6974 , 98.7915 , 98.8856 , 98.9796 , 99.0737 ,

99.1678 , 99.2618 , 99.3559 , 99.45 ,

99.5441 , 99.6381 , 99.7322 , 99.8263 , 99.9203 , 100.0144 ,

100.1085 , 100.2026 , 100.2966 , 100.3907 ,

100.4848 , 100.5788 , 100.6729 , 100.767 , 100.8611 , 100.9551

, 101.0492 , 101.1433 , 101.2374 , 101.3314 ,

101.4255 , 101.5196 , 101.6136 , 101.7077 , 101.8018 , 101.8959

, 101.9899 , 102.084 , 102.1781 , 102.2721 ,

102.3662 , 102.4603 , 102.5544 , 102.6484 , 102.7425 , 102.8366

, 102.9306 , 103.0247 , 103.1188 , 103.2129 ,

103.3069 , 103.401 , 103.4951 , 103.5891 , 103.6832 , 103.7773

, 103.8714 , 103.9654 , 104.0595 , 104.1536 ,

104.2477 , 104.3417 , 104.4358 , 104.5299 , 104.6239 , 104.718

, 104.8121 , 104.9062 , 105.0002 , 105.0943 ,

105.1884 , 105.2824 , 105.3765 , 105.4706 , 105.5647 , 105.6587

, 105.7528 , 105.8469 , 105.9409 , 106.035 ,

106.1291 , 106.2232 , 106.3172 , 106.4113 , 106.5054 , 106.5994

, 106.6935 , 106.7876 , 106.8817 , 106.9757 ,

107.0698 , 107.1639 , 107.258 , 107.352 , 107.4461 , 107.5402 ,

107.6342 , 107.7283 , 107.8224 , 107.9165 ,

108.0105 , 108.1046 , 108.1987 , 108.2927 , 108.3868 , 108.4809

, 108.575 , 108.669 , 108.7631 , 108.8572 ,

108.9512 , 109.0453 , 109.1394 , 109.2335 , 109.3275 , 109.4216

, 109.5157 , 109.6097 , 109.7038 , 109.7979 ,

109.892 , 109.986 , 110.0801 , 110.1742 , 110.2683 , 110.3623 ,

110.4564 , 110.5505 , 110.6445 , 110.7386 ,

110.8327 , 110.9268 , 111.0208 , 111.1149 , 111.209 , 111.303 ,

111.3971 , 111.4912 , 111.5853 , 111.6793 ,

111.7734 , 111.8675 , 111.9615 , 112.0556 , 112.1497 , 112.2438

, 112.3378 , 112.4319 , 112.526 , 112.62 ,

112.7141 , 112.8082 , 112.9023 , 112.9963 , 113.0904 , 113.1845

, 113.2786 , 113.3726 , 113.4667 , 113.5608 ,

113.6548 , 113.7489 , 113.843 , 113.9371 , 114.0311 , 114.1252

, 114.2193 , 114.3133 , 114.4074 , 114.5015 ,

114.5956 , 114.6896 , 114.7837 , 114.8778 , 114.9718 , 115.0659

, 115.16 , 115.2541 , 115.3481 , 115.4422 ,

115.5363 , 115.6303 , 115.7244 , 115.8185 , 115.9126 , 116.0066

, 116.1007 , 116.1948 , 116.2889 , 116.3829 ,

116.477 , 116.5711 , 116.6651 , 116.7592 , 116.8533 , 116.9474

, 117.0414 , 117.1355 , 117.2296 , 117.3236 ,

117.4177 , 117.5118 , 117.6059 , 117.6999 , 117.794 , 117.8881

, 117.9821 , 118.0762 , 118.1703 , 118.2644 ,

118.3584 , 118.4525 , 118.5466 , 118.6406 , 118.7347 , 118.8288

, 118.9229 , 119.0169 , 119.111 , 119.2051 ,

119.2992 , 119.3932 , 119.4873 , 119.5814 , 119.6754 , 119.7695

, 119.8636 , 119.9577 , 120.0517 , 120.1458 ,

120.2399 , 120.3339 , 120.428 , 120.5221 , 120.6162 , 120.7102

, 120.8043 , 120.8984 , 120.9924 , 121.0865 ,

121.1806 , 121.2747 , 121.3687 , 121.4628 , 121.5569 , 121.6509

, 121.745 , 121.8391 , 121.9332 , 122.0272 ,

Page 168: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

168 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

122.1213 , 122.2154 , 122.3095 , 122.4035 , 122.4976 , 122.5917

, 122.6857 , 122.7798 , 122.8739 , 122.968 ,

123.062 , 123.1561 , 123.2502 , 123.3442 , 123.4383 , 123.5324

, 123.6265 , 123.7205 , 123.8146 , 123.9087 ,

124.0027 , 124.0968 , 124.1909 , 124.285 , 124.379 , 124.4731 ,

124.5672 , 124.6612 , 124.7553 , 124.8494 ,

124.9435 , 125.0375 , 125.1316 , 125.2257 , 125.3198 , 125.4138

, 125.5079 , 125.602 , 125.696 , 125.7901 ,

125.8842 , 125.9783 , 126.0723 , 126.1664 , 126.2605 , 126.3545

, 126.4486 , 126.5427 , 126.6368 , 126.7308 ,

126.8249 , 126.919 , 127.013 , 127.1071 , 127.2012 , 127.2953 ,

127.3893 , 127.4834 , 127.5775 , 127.6715 ,

127.7656 , 127.8597 , 127.9538 , 128.0478 , 128.1419 , 128.236

, 128.3301 , 128.4241 , 128.5182 , 128.6123 ,

128.7063 , 128.8004 , 128.8945 , 128.9886 , 129.0826 , 129.1767

, 129.2708 , 129.3648 , 129.4589 , 129.553 ,

129.6471 , 129.7411 , 129.8352 , 129.9293 , 130.0233 , 130.1174

, 130.2115 , 130.3056 , 130.3996 , 130.4937 ,

130.5878 , 130.6818 , 130.7759 , 130.87 , 130.9641 , 131.0581 ,

131.1522 , 131.2463 , 131.3404 , 131.4344 ,

131.5285 , 131.6226 , 131.7166 , 131.8107 , 131.9048 , 131.9989

, 132.0929 , 132.187 , 132.2811 , 132.3751 ,

132.4692 , 132.5633 , 132.6574 , 132.7514 , 132.8455 , 132.9396

, 133.0336 , 133.1277 , 133.2218 , 133.3159 ,

133.4099 , 133.504 , 133.5981 , 133.6921 , 133.7862 , 133.8803

, 133.9744 , 134.0684 , 134.1625 , 134.2566 ,

134.3507 , 134.4447 , 134.5388 , 134.6329 , 134.7269 , 134.821

, 134.9151 , 135.0092 , 135.1032 , 135.1973 ,

135.2914 , 135.3854 , 135.4795 , 135.5736 , 135.6677 , 135.7617

, 135.8558 , 135.9499 , 136.0439 , 136.138 ,

136.2321 , 136.3262 , 136.4202 , 136.5143 , 136.6084 , 136.7024

, 136.7965 , 136.8906 , 136.9847 , 137.0787 ,

137.1728 , 137.2669 , 137.361 , 137.455 , 137.5491 , 137.6432 ,

137.7372 , 137.8313 , 137.9254 , 138.0195 ,

138.1135 , 138.2076 , 138.3017 , 138.3957 , 138.4898 , 138.5839

, 138.678 , 138.772 , 138.8661 , 138.9602 ,

139.0542 , 139.1483 , 139.2424 , 139.3365 , 139.4305 , 139.5246

, 139.6187 , 139.7127 , 139.8068 , 139.9009 ,

139.995 , 140.089 , 140.1831 , 140.2772 , 140.3713 , 140.4653 ,

140.5594 , 140.6535 , 140.7475 , 140.8416 ,

140.9357 , 141.0298 , 141.1238 , 141.2179 , 141.312 , 141.406 ,

141.5001 , 141.5942 , 141.6883 , 141.7823 ,

141.8764 , 141.9705 , 142.0645 , 142.1586 , 142.2527 , 142.3468

, 142.4408 , 142.5349 , 142.629 , 142.723 ,

142.8171 , 142.9112 , 143.0053 , 143.0993 , 143.1934 , 143.2875

, 143.3816 , 143.4756 , 143.5697 , 143.6638 ,

143.7578 , 143.8519 , 143.946 , 144.0401 , 144.1341 , 144.2282

, 144.3223 , 144.4163 , 144.5104 , 144.6045 ,

144.6986 , 144.7926 , 144.8867 , 144.9808 , 145.0748 , 145.1689

, 145.263 , 145.3571 , 145.4511 , 145.5452 ,

145.6393 , 145.7333 , 145.8274 , 145.9215 , 146.0156 , 146.1096

, 146.2037 , 146.2978 , 146.3919 , 146.4859 ,

146.58 , 146.6741 , 146.7681 , 146.8622 , 146.9563 , 147.0504 ,

147.1444 , 147.2385 , 147.3326 , 147.4266 ,

147.5207 , 147.6148 , 147.7089 , 147.8029 , 147.897 , 147.9911

, 148.0851 , 148.1792 , 148.2733 , 148.3674 ,

148.4614 , 148.5555 , 148.6496 , 148.7436 , 148.8377 , 148.9318

, 149.0259 , 149.1199 , 149.214 , 149.3081 ,

Page 169: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

169 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

149.4022 , 149.4962 , 149.5903 , 149.6844 , 149.7784 , 149.8725

, 149.9666 , 150.0607 , 150.1547 , 150.2488 ,

150.3429 , 150.4369 , 150.531 , 150.6251 , 150.7192 , 150.8132

, 150.9073 , 151.0014 , 151.0954 , 151.1895 ,

151.2836 , 151.3777 , 151.4717 , 151.5658 , 151.6599 , 151.7539

, 151.848 , 151.9421 , 152.0362 , 152.1302 ,

152.2243 , 152.3184 , 152.4125 , 152.5065 , 152.6006 , 152.6947

, 152.7887 , 152.8828 , 152.9769 , 153.071 ,

153.165 , 153.2591 , 153.3532 , 153.4472 , 153.5413 , 153.6354

, 153.7295 , 153.8235 , 153.9176 , 154.0117 ,

154.1057 , 154.1998 , 154.2939 , 154.388 , 154.482 , 154.5761 ,

154.6702 , 154.7642 , 154.8583 , 154.9524 ,

155.0465 , 155.1405 , 155.2346 , 155.3287 , 155.4228 , 155.5168

, 155.6109 , 155.705 , 155.799 , 155.8931 ,

155.9872 , 156.0813 , 156.1753 , 156.2694 , 156.3635 , 156.4575

, 156.5516 , 156.6457 , 156.7398 , 156.8338 ,

156.9279 , 157.022 , 157.116 , 157.2101 , 157.3042 , 157.3983 ,

157.4923 , 157.5864 , 157.6805 , 157.7745 ,

157.8686 , 157.9627 , 158.0568 , 158.1508 , 158.2449 , 158.339

, 158.4331 , 158.5271 , 158.6212 , 158.7153 ,

158.8093 , 158.9034 , 158.9975 , 159.0916 , 159.1856 , 159.2797

, 159.3738 , 159.4678 , 159.5619 , 159.656 ,

159.7501 , 159.8441 , 159.9382 , 160.0323 , 160.1263 , 160.2204

, 160.3145 , 160.4086 , 160.5026 , 160.5967 ,

160.6908 , 160.7848 , 160.8789 , 160.973 , 161.0671 , 161.1611

, 161.2552 , 161.3493 , 161.4434 , 161.5374 ,

161.6315 , 161.7256 , 161.8196 , 161.9137 , 162.0078 , 162.1019

, 162.1959 , 162.29 , 162.3841 , 162.4781 ,

162.5722 , 162.6663 , 162.7604 , 162.8544 , 162.9485 , 163.0426

, 163.1366 , 163.2307 , 163.3248 , 163.4189 ,

163.5129 , 163.607 , 163.7011 , 163.7951 , 163.8892 , 163.9833

, 164.0774 , 164.1714 , 164.2655 , 164.3596 ,

164.4537 , 164.5477 , 164.6418 , 164.7359 , 164.8299 , 164.924

, 165.0181 , 165.1122 , 165.2062 , 165.3003 ,

165.3944 , 165.4884 , 165.5825 , 165.6766 , 165.7707 , 165.8647

, 165.9588 , 166.0529 , 166.1469 , 166.241 ,

166.3351 , 166.4292 , 166.5232 , 166.6173 , 166.7114 , 166.8054

, 166.8995 , 166.9936 , 167.0877 , 167.1817 ,

167.2758 , 167.3699 , 167.464 , 167.558 , 167.6521 , 167.7462 ,

167.8402 , 167.9343 , 168.0284 , 168.1225 ,

168.2165 , 168.3106 , 168.4047 , 168.4987 , 168.5928 , 168.6869

, 168.781 , 168.875 , 168.9691 , 169.0632 ,

169.1572 , 169.2513 , 169.3454 , 169.4395 , 169.5335 , 169.6276

, 169.7217 , 169.8157 , 169.9098 , 170.0039 ,

170.098 , 170.192 , 170.2861 , 170.3802 , 170.4743 , 170.5683 ,

170.6624 , 170.7565 , 170.8505 , 170.9446 ,

171.0387 , 171.1328 , 171.2268 , 171.3209 , 171.415 , 171.509 ,

171.6031 , 171.6972 , 171.7913 , 171.8853 ,

171.9794 , 172.0735 , 172.1675 , 172.2616 , 172.3557 , 172.4498

, 172.5438 , 172.6379 , 172.732 , 172.826 ,

172.9201 , 173.0142 , 173.1083 , 173.2023 , 173.2964 , 173.3905

, 173.4846 , 173.5786 , 173.6727 , 173.7668 ,

173.8608 , 173.9549 , 174.049 , 174.1431 , 174.2371 , 174.3312

, 174.4253 , 174.5193 , 174.6134 , 174.7075 ,

174.8016 , 174.8956 , 174.9897 , 175.0838 , 175.1778 , 175.2719

, 175.366 , 175.4601 , 175.5541 , 175.6482 ,

175.7423 , 175.8363 , 175.9304 , 176.0245 , 176.1186 , 176.2126

, 176.3067 , 176.4008 , 176.4949 , 176.5889 ,

Page 170: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

170 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

176.683 , 176.7771 , 176.8711 , 176.9652 , 177.0593 , 177.1534

, 177.2474 , 177.3415 , 177.4356 , 177.5296 ,

177.6237, 177.7178, 177.8119, 177.9059

};

const float32_t RMSspl_Table_Gain50[1024]=

{

51.6704 , 51.7645 , 51.8585 , 51.9526 , 52.0467 , 52.1408 ,

52.2348 , 52.3289 , 52.423 , 52.517 ,

52.6111 , 52.7052 , 52.7993 , 52.8933 , 52.9874 , 53.0815 ,

53.1756 , 53.2696 , 53.3637 , 53.4578 ,

53.5518 , 53.6459 , 53.74 , 53.8341 , 53.9281 , 54.0222 ,

54.1163 , 54.2103 , 54.3044 , 54.3985 ,

54.4926 , 54.5866 , 54.6807 , 54.7748 , 54.8688 , 54.9629 ,

55.057 , 55.1511 , 55.2451 , 55.3392 ,

55.4333 , 55.5273 , 55.6214 , 55.7155 , 55.8096 , 55.9036 ,

55.9977 , 56.0918 , 56.1859 , 56.2799 ,

56.374 , 56.4681 , 56.5621 , 56.6562 , 56.7503 , 56.8444 ,

56.9384 , 57.0325 , 57.1266 , 57.2206 ,

57.3147 , 57.4088 , 57.5029 , 57.5969 , 57.691 , 57.7851 ,

57.8791 , 57.9732 , 58.0673 , 58.1614 ,

58.2554 , 58.3495 , 58.4436 , 58.5376 , 58.6317 , 58.7258 ,

58.8199 , 58.9139 , 59.008 , 59.1021 ,

59.1962 , 59.2902 , 59.3843 , 59.4784 , 59.5724 , 59.6665 ,

59.7606 , 59.8547 , 59.9487 , 60.0428 ,

60.1369 , 60.2309 , 60.325 , 60.4191 , 60.5132 , 60.6072 ,

60.7013 , 60.7954 , 60.8894 , 60.9835 ,

61.0776 , 61.1717 , 61.2657 , 61.3598 , 61.4539 , 61.5479 ,

61.642 , 61.7361 , 61.8302 , 61.9242 ,

62.0183 , 62.1124 , 62.2065 , 62.3005 , 62.3946 , 62.4887 ,

62.5827 , 62.6768 , 62.7709 , 62.865 ,

62.959 , 63.0531 , 63.1472 , 63.2412 , 63.3353 , 63.4294 ,

63.5235 , 63.6175 , 63.7116 , 63.8057 ,

63.8997 , 63.9938 , 64.0879 , 64.182 , 64.276 , 64.3701 ,

64.4642 , 64.5582 , 64.6523 , 64.7464 ,

64.8405 , 64.9345 , 65.0286 , 65.1227 , 65.2168 , 65.3108 ,

65.4049 , 65.499 , 65.593 , 65.6871 ,

65.7812 , 65.8753 , 65.9693 , 66.0634 , 66.1575 , 66.2515 ,

66.3456 , 66.4397 , 66.5338 , 66.6278 ,

66.7219 , 66.816 , 66.91 , 67.0041 , 67.0982 , 67.1923 ,

67.2863 , 67.3804 , 67.4745 , 67.5685 ,

67.6626 , 67.7567 , 67.8508 , 67.9448 , 68.0389 , 68.133 ,

68.2271 , 68.3211 , 68.4152 , 68.5093 ,

68.6033 , 68.6974 , 68.7915 , 68.8856 , 68.9796 , 69.0737 ,

69.1678 , 69.2618 , 69.3559 , 69.45 ,

69.5441 , 69.6381 , 69.7322 , 69.8263 , 69.9203 , 70.0144 ,

70.1085 , 70.2026 , 70.2966 , 70.3907 ,

70.4848 , 70.5788 , 70.6729 , 70.767 , 70.8611 , 70.9551 ,

71.0492 , 71.1433 , 71.2374 , 71.3314 ,

71.4255 , 71.5196 , 71.6136 , 71.7077 , 71.8018 , 71.8959 ,

71.9899 , 72.084 , 72.1781 , 72.2721 ,

72.3662 , 72.4603 , 72.5544 , 72.6484 , 72.7425 , 72.8366 ,

72.9306 , 73.0247 , 73.1188 , 73.2129 ,

73.3069 , 73.401 , 73.4951 , 73.5891 , 73.6832 , 73.7773 ,

73.8714 , 73.9654 , 74.0595 , 74.1536 ,

74.2477 , 74.3417 , 74.4358 , 74.5299 , 74.6239 , 74.718 ,

74.8121 , 74.9062 , 75.0002 , 75.0943 ,

Page 171: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

171 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

75.1884 , 75.2824 , 75.3765 , 75.4706 , 75.5647 , 75.6587 ,

75.7528 , 75.8469 , 75.9409 , 76.035 ,

76.1291 , 76.2232 , 76.3172 , 76.4113 , 76.5054 , 76.5994 ,

76.6935 , 76.7876 , 76.8817 , 76.9757 ,

77.0698 , 77.1639 , 77.258 , 77.352 , 77.4461 , 77.5402 ,

77.6342 , 77.7283 , 77.8224 , 77.9165 ,

78.0105 , 78.1046 , 78.1987 , 78.2927 , 78.3868 , 78.4809 ,

78.575 , 78.669 , 78.7631 , 78.8572 ,

78.9512 , 79.0453 , 79.1394 , 79.2335 , 79.3275 , 79.4216 ,

79.5157 , 79.6097 , 79.7038 , 79.7979 ,

79.892 , 79.986 , 80.0801 , 80.1742 , 80.2683 , 80.3623 ,

80.4564 , 80.5505 , 80.6445 , 80.7386 ,

80.8327 , 80.9268 , 81.0208 , 81.1149 , 81.209 , 81.303 ,

81.3971 , 81.4912 , 81.5853 , 81.6793 ,

81.7734 , 81.8675 , 81.9615 , 82.0556 , 82.1497 , 82.2438 ,

82.3378 , 82.4319 , 82.526 , 82.62 ,

82.7141 , 82.8082 , 82.9023 , 82.9963 , 83.0904 , 83.1845 ,

83.2786 , 83.3726 , 83.4667 , 83.5608 ,

83.6548 , 83.7489 , 83.843 , 83.9371 , 84.0311 , 84.1252 ,

84.2193 , 84.3133 , 84.4074 , 84.5015 ,

84.5956 , 84.6896 , 84.7837 , 84.8778 , 84.9718 , 85.0659 ,

85.16 , 85.2541 , 85.3481 , 85.4422 ,

85.5363 , 85.6303 , 85.7244 , 85.8185 , 85.9126 , 86.0066 ,

86.1007 , 86.1948 , 86.2889 , 86.3829 ,

86.477 , 86.5711 , 86.6651 , 86.7592 , 86.8533 , 86.9474 ,

87.0414 , 87.1355 , 87.2296 , 87.3236 ,

87.4177 , 87.5118 , 87.6059 , 87.6999 , 87.794 , 87.8881 ,

87.9821 , 88.0762 , 88.1703 , 88.2644 ,

88.3584 , 88.4525 , 88.5466 , 88.6406 , 88.7347 , 88.8288 ,

88.9229 , 89.0169 , 89.111 , 89.2051 ,

89.2992 , 89.3932 , 89.4873 , 89.5814 , 89.6754 , 89.7695 ,

89.8636 , 89.9577 , 90.0517 , 90.1458 ,

90.2399 , 90.3339 , 90.428 , 90.5221 , 90.6162 , 90.7102 ,

90.8043 , 90.8984 , 90.9924 , 91.0865 ,

91.1806 , 91.2747 , 91.3687 , 91.4628 , 91.5569 , 91.6509 ,

91.745 , 91.8391 , 91.9332 , 92.0272 ,

92.1213 , 92.2154 , 92.3095 , 92.4035 , 92.4976 , 92.5917 ,

92.6857 , 92.7798 , 92.8739 , 92.968 ,

93.062 , 93.1561 , 93.2502 , 93.3442 , 93.4383 , 93.5324 ,

93.6265 , 93.7205 , 93.8146 , 93.9087 ,

94.0027 , 94.0968 , 94.1909 , 94.285 , 94.379 , 94.4731 ,

94.5672 , 94.6612 , 94.7553 , 94.8494 ,

94.9435 , 95.0375 , 95.1316 , 95.2257 , 95.3198 , 95.4138 ,

95.5079 , 95.602 , 95.696 , 95.7901 ,

95.8842 , 95.9783 , 96.0723 , 96.1664 , 96.2605 , 96.3545 ,

96.4486 , 96.5427 , 96.6368 , 96.7308 ,

96.8249 , 96.919 , 97.013 , 97.1071 , 97.2012 , 97.2953 ,

97.3893 , 97.4834 , 97.5775 , 97.6715 ,

97.7656 , 97.8597 , 97.9538 , 98.0478 , 98.1419 , 98.236 ,

98.3301 , 98.4241 , 98.5182 , 98.6123 ,

98.7063 , 98.8004 , 98.8945 , 98.9886 , 99.0826 , 99.1767 ,

99.2708 , 99.3648 , 99.4589 , 99.553 ,

99.6471 , 99.7411 , 99.8352 , 99.9293 , 100.0233 , 100.1174 ,

100.2115 , 100.3056 , 100.3996 , 100.4937 ,

100.5878 , 100.6818 , 100.7759 , 100.87 , 100.9641 , 101.0581 ,

101.1522 , 101.2463 , 101.3404 , 101.4344 ,

101.5285 , 101.6226 , 101.7166 , 101.8107 , 101.9048 , 101.9989

, 102.0929 , 102.187 , 102.2811 , 102.3751 ,

Page 172: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

172 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

102.4692 , 102.5633 , 102.6574 , 102.7514 , 102.8455 , 102.9396

, 103.0336 , 103.1277 , 103.2218 , 103.3159 ,

103.4099 , 103.504 , 103.5981 , 103.6921 , 103.7862 , 103.8803

, 103.9744 , 104.0684 , 104.1625 , 104.2566 ,

104.3507 , 104.4447 , 104.5388 , 104.6329 , 104.7269 , 104.821

, 104.9151 , 105.0092 , 105.1032 , 105.1973 ,

105.2914 , 105.3854 , 105.4795 , 105.5736 , 105.6677 , 105.7617

, 105.8558 , 105.9499 , 106.0439 , 106.138 ,

106.2321 , 106.3262 , 106.4202 , 106.5143 , 106.6084 , 106.7024

, 106.7965 , 106.8906 , 106.9847 , 107.0787 ,

107.1728 , 107.2669 , 107.361 , 107.455 , 107.5491 , 107.6432 ,

107.7372 , 107.8313 , 107.9254 , 108.0195 ,

108.1135 , 108.2076 , 108.3017 , 108.3957 , 108.4898 , 108.5839

, 108.678 , 108.772 , 108.8661 , 108.9602 ,

109.0542 , 109.1483 , 109.2424 , 109.3365 , 109.4305 , 109.5246

, 109.6187 , 109.7127 , 109.8068 , 109.9009 ,

109.995 , 110.089 , 110.1831 , 110.2772 , 110.3713 , 110.4653 ,

110.5594 , 110.6535 , 110.7475 , 110.8416 ,

110.9357 , 111.0298 , 111.1238 , 111.2179 , 111.312 , 111.406 ,

111.5001 , 111.5942 , 111.6883 , 111.7823 ,

111.8764 , 111.9705 , 112.0645 , 112.1586 , 112.2527 , 112.3468

, 112.4408 , 112.5349 , 112.629 , 112.723 ,

112.8171 , 112.9112 , 113.0053 , 113.0993 , 113.1934 , 113.2875

, 113.3816 , 113.4756 , 113.5697 , 113.6638 ,

113.7578 , 113.8519 , 113.946 , 114.0401 , 114.1341 , 114.2282

, 114.3223 , 114.4163 , 114.5104 , 114.6045 ,

114.6986 , 114.7926 , 114.8867 , 114.9808 , 115.0748 , 115.1689

, 115.263 , 115.3571 , 115.4511 , 115.5452 ,

115.6393 , 115.7333 , 115.8274 , 115.9215 , 116.0156 , 116.1096

, 116.2037 , 116.2978 , 116.3919 , 116.4859 ,

116.58 , 116.6741 , 116.7681 , 116.8622 , 116.9563 , 117.0504 ,

117.1444 , 117.2385 , 117.3326 , 117.4266 ,

117.5207 , 117.6148 , 117.7089 , 117.8029 , 117.897 , 117.9911

, 118.0851 , 118.1792 , 118.2733 , 118.3674 ,

118.4614 , 118.5555 , 118.6496 , 118.7436 , 118.8377 , 118.9318

, 119.0259 , 119.1199 , 119.214 , 119.3081 ,

119.4022 , 119.4962 , 119.5903 , 119.6844 , 119.7784 , 119.8725

, 119.9666 , 120.0607 , 120.1547 , 120.2488 ,

120.3429 , 120.4369 , 120.531 , 120.6251 , 120.7192 , 120.8132

, 120.9073 , 121.0014 , 121.0954 , 121.1895 ,

121.2836 , 121.3777 , 121.4717 , 121.5658 , 121.6599 , 121.7539

, 121.848 , 121.9421 , 122.0362 , 122.1302 ,

122.2243 , 122.3184 , 122.4125 , 122.5065 , 122.6006 , 122.6947

, 122.7887 , 122.8828 , 122.9769 , 123.071 ,

123.165 , 123.2591 , 123.3532 , 123.4472 , 123.5413 , 123.6354

, 123.7295 , 123.8235 , 123.9176 , 124.0117 ,

124.1057 , 124.1998 , 124.2939 , 124.388 , 124.482 , 124.5761 ,

124.6702 , 124.7642 , 124.8583 , 124.9524 ,

125.0465 , 125.1405 , 125.2346 , 125.3287 , 125.4228 , 125.5168

, 125.6109 , 125.705 , 125.799 , 125.8931 ,

125.9872 , 126.0813 , 126.1753 , 126.2694 , 126.3635 , 126.4575

, 126.5516 , 126.6457 , 126.7398 , 126.8338 ,

126.9279 , 127.022 , 127.116 , 127.2101 , 127.3042 , 127.3983 ,

127.4923 , 127.5864 , 127.6805 , 127.7745 ,

127.8686 , 127.9627 , 128.0568 , 128.1508 , 128.2449 , 128.339

, 128.4331 , 128.5271 , 128.6212 , 128.7153 ,

128.8093 , 128.9034 , 128.9975 , 129.0916 , 129.1856 , 129.2797

, 129.3738 , 129.4678 , 129.5619 , 129.656 ,

Page 173: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

173 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

129.7501 , 129.8441 , 129.9382 , 130.0323 , 130.1263 , 130.2204

, 130.3145 , 130.4086 , 130.5026 , 130.5967 ,

130.6908 , 130.7848 , 130.8789 , 130.973 , 131.0671 , 131.1611

, 131.2552 , 131.3493 , 131.4434 , 131.5374 ,

131.6315 , 131.7256 , 131.8196 , 131.9137 , 132.0078 , 132.1019

, 132.1959 , 132.29 , 132.3841 , 132.4781 ,

132.5722 , 132.6663 , 132.7604 , 132.8544 , 132.9485 , 133.0426

, 133.1366 , 133.2307 , 133.3248 , 133.4189 ,

133.5129 , 133.607 , 133.7011 , 133.7951 , 133.8892 , 133.9833

, 134.0774 , 134.1714 , 134.2655 , 134.3596 ,

134.4537 , 134.5477 , 134.6418 , 134.7359 , 134.8299 , 134.924

, 135.0181 , 135.1122 , 135.2062 , 135.3003 ,

135.3944 , 135.4884 , 135.5825 , 135.6766 , 135.7707 , 135.8647

, 135.9588 , 136.0529 , 136.1469 , 136.241 ,

136.3351 , 136.4292 , 136.5232 , 136.6173 , 136.7114 , 136.8054

, 136.8995 , 136.9936 , 137.0877 , 137.1817 ,

137.2758 , 137.3699 , 137.464 , 137.558 , 137.6521 , 137.7462 ,

137.8402 , 137.9343 , 138.0284 , 138.1225 ,

138.2165 , 138.3106 , 138.4047 , 138.4987 , 138.5928 , 138.6869

, 138.781 , 138.875 , 138.9691 , 139.0632 ,

139.1572 , 139.2513 , 139.3454 , 139.4395 , 139.5335 , 139.6276

, 139.7217 , 139.8157 , 139.9098 , 140.0039 ,

140.098 , 140.192 , 140.2861 , 140.3802 , 140.4743 , 140.5683 ,

140.6624 , 140.7565 , 140.8505 , 140.9446 ,

141.0387 , 141.1328 , 141.2268 , 141.3209 , 141.415 , 141.509 ,

141.6031 , 141.6972 , 141.7913 , 141.8853 ,

141.9794 , 142.0735 , 142.1675 , 142.2616 , 142.3557 , 142.4498

, 142.5438 , 142.6379 , 142.732 , 142.826 ,

142.9201 , 143.0142 , 143.1083 , 143.2023 , 143.2964 , 143.3905

, 143.4846 , 143.5786 , 143.6727 , 143.7668 ,

143.8608 , 143.9549 , 144.049 , 144.1431 , 144.2371 , 144.3312

, 144.4253 , 144.5193 , 144.6134 , 144.7075 ,

144.8016 , 144.8956 , 144.9897 , 145.0838 , 145.1778 , 145.2719

, 145.366 , 145.4601 , 145.5541 , 145.6482 ,

145.7423 , 145.8363 , 145.9304 , 146.0245 , 146.1186 , 146.2126

, 146.3067 , 146.4008 , 146.4949 , 146.5889 ,

146.683 , 146.7771 , 146.8711 , 146.9652 , 147.0593 , 147.1534

, 147.2474 , 147.3415 , 147.4356 , 147.5296 ,

147.6237, 147.7178, 147.8119, 147.9059

};

const float32_t UD_Table[1024]=

{

1.079e-05 , 1.0907e-05 , 1.1026e-05 , 1.1146e-05 , 1.1267e-05 ,

1.139e-05 , 1.1514e-05 , 1.1639e-05 , 1.1766e-05 , 1.1894e-05 ,

1.2024e-05 , 1.2155e-05 , 1.2287e-05 , 1.2421e-05 , 1.2556e-05

, 1.2693e-05 , 1.2831e-05 , 1.2971e-05 , 1.3112e-05 , 1.3255e-05 ,

1.3399e-05 , 1.3545e-05 , 1.3693e-05 , 1.3842e-05 , 1.3992e-05

, 1.4145e-05 , 1.4299e-05 , 1.4454e-05 , 1.4612e-05 , 1.4771e-05 ,

1.4932e-05 , 1.5094e-05 , 1.5259e-05 , 1.5425e-05 , 1.5593e-05

, 1.5763e-05 , 1.5934e-05 , 1.6108e-05 , 1.6283e-05 , 1.6461e-05 ,

1.664e-05 , 1.6821e-05 , 1.7004e-05 , 1.7189e-05 , 1.7377e-05 ,

1.7566e-05 , 1.7757e-05 , 1.795e-05 , 1.8146e-05 , 1.8343e-05 ,

1.8543e-05 , 1.8745e-05 , 1.8949e-05 , 1.9156e-05 , 1.9364e-05

, 1.9575e-05 , 1.9788e-05 , 2.0004e-05 , 2.0222e-05 , 2.0442e-05 ,

2.0664e-05 , 2.0889e-05 , 2.1117e-05 , 2.1347e-05 , 2.1579e-05

, 2.1814e-05 , 2.2052e-05 , 2.2292e-05 , 2.2535e-05 , 2.278e-05 ,

Page 174: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

174 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

2.3028e-05 , 2.3279e-05 , 2.3532e-05 , 2.3789e-05 , 2.4048e-05

, 2.4309e-05 , 2.4574e-05 , 2.4842e-05 , 2.5112e-05 , 2.5386e-05 ,

2.5662e-05 , 2.5942e-05 , 2.6224e-05 , 2.651e-05 , 2.6798e-05 ,

2.709e-05 , 2.7385e-05 , 2.7683e-05 , 2.7985e-05 , 2.8289e-05 ,

2.8598e-05 , 2.8909e-05 , 2.9224e-05 , 2.9542e-05 , 2.9864e-05

, 3.0189e-05 , 3.0518e-05 , 3.085e-05 , 3.1186e-05 , 3.1525e-05 ,

3.1869e-05 , 3.2216e-05 , 3.2567e-05 , 3.2921e-05 , 3.328e-05 ,

3.3642e-05 , 3.4008e-05 , 3.4379e-05 , 3.4753e-05 , 3.5132e-05 ,

3.5514e-05 , 3.5901e-05 , 3.6292e-05 , 3.6687e-05 , 3.7086e-05

, 3.749e-05 , 3.7898e-05 , 3.8311e-05 , 3.8728e-05 , 3.915e-05 ,

3.9576e-05 , 4.0007e-05 , 4.0443e-05 , 4.0883e-05 , 4.1329e-05

, 4.1779e-05 , 4.2234e-05 , 4.2693e-05 , 4.3158e-05 , 4.3628e-05 ,

4.4103e-05 , 4.4584e-05 , 4.5069e-05 , 4.556e-05 , 4.6056e-05 ,

4.6558e-05 , 4.7065e-05 , 4.7577e-05 , 4.8095e-05 , 4.8619e-05 ,

4.9148e-05 , 4.9683e-05 , 5.0224e-05 , 5.0771e-05 , 5.1324e-05

, 5.1883e-05 , 5.2448e-05 , 5.3019e-05 , 5.3597e-05 , 5.418e-05 ,

5.477e-05 , 5.5367e-05 , 5.5969e-05 , 5.6579e-05 , 5.7195e-05 ,

5.7818e-05 , 5.8447e-05 , 5.9084e-05 , 5.9727e-05 , 6.0378e-05 ,

6.1035e-05 , 6.17e-05 , 6.2372e-05 , 6.3051e-05 , 6.3737e-05 ,

6.4431e-05 , 6.5133e-05 , 6.5842e-05 , 6.6559e-05 , 6.7284e-05 ,

6.8017e-05 , 6.8757e-05 , 6.9506e-05 , 7.0263e-05 , 7.1028e-05

, 7.1802e-05 , 7.2583e-05 , 7.3374e-05 , 7.4173e-05 , 7.4981e-05 ,

7.5797e-05 , 7.6622e-05 , 7.7457e-05 , 7.83e-05 , 7.9153e-05 ,

8.0015e-05 , 8.0886e-05 , 8.1767e-05 , 8.2657e-05 , 8.3557e-05 ,

8.4467e-05 , 8.5387e-05 , 8.6317e-05 , 8.7257e-05 , 8.8207e-05

, 8.9167e-05 , 9.0138e-05 , 9.112e-05 , 9.2112e-05 , 9.3115e-05 ,

9.4129e-05 , 9.5154e-05 , 9.619e-05 , 9.7238e-05 , 9.8297e-05 ,

9.9367e-05 , 0.00010045 , 0.00010154 , 0.00010265 , 0.00010377 ,

0.0001049 , 0.00010604 , 0.00010719 , 0.00010836 , 0.00010954 ,

0.00011073 , 0.00011194 , 0.00011316 , 0.00011439 , 0.00011564 ,

0.00011689 , 0.00011817 , 0.00011945 , 0.00012076 , 0.00012207

, 0.0001234 , 0.00012474 , 0.0001261 , 0.00012747 , 0.00012886 ,

0.00013027 , 0.00013168 , 0.00013312 , 0.00013457 , 0.00013603

, 0.00013751 , 0.00013901 , 0.00014053 , 0.00014206 , 0.0001436 ,

0.00014517 , 0.00014675 , 0.00014835 , 0.00014996 , 0.00015159

, 0.00015324 , 0.00015491 , 0.0001566 , 0.00015831 , 0.00016003 ,

0.00016177 , 0.00016353 , 0.00016531 , 0.00016711 , 0.00016893

, 0.00017077 , 0.00017263 , 0.00017451 , 0.00017641 , 0.00017833 ,

0.00018028 , 0.00018224 , 0.00018422 , 0.00018623 , 0.00018826

, 0.00019031 , 0.00019238 , 0.00019448 , 0.00019659 , 0.00019873 ,

0.0002009 , 0.00020309 , 0.0002053 , 0.00020753 , 0.00020979 ,

0.00021208 , 0.00021439 , 0.00021672 , 0.00021908 , 0.00022147 ,

0.00022388 , 0.00022632 , 0.00022878 , 0.00023127 , 0.00023379

, 0.00023634 , 0.00023891 , 0.00024151 , 0.00024414 , 0.0002468 ,

0.00024949 , 0.0002522 , 0.00025495 , 0.00025773 , 0.00026053 ,

0.00026337 , 0.00026624 , 0.00026914 , 0.00027207 , 0.00027503 ,

0.00027802 , 0.00028105 , 0.00028411 , 0.00028721 , 0.00029033

, 0.0002935 , 0.00029669 , 0.00029992 , 0.00030319 , 0.00030649 ,

0.00030983 , 0.0003132 , 0.00031661 , 0.00032006 , 0.00032354 ,

0.00032707 , 0.00033063 , 0.00033423 , 0.00033787 , 0.00034155 ,

0.00034527 , 0.00034903 , 0.00035283 , 0.00035667 , 0.00036055

, 0.00036448 , 0.00036845 , 0.00037246 , 0.00037652 , 0.00038062 ,

0.00038476 , 0.00038895 , 0.00039319 , 0.00039747 , 0.0004018 ,

0.00040617 , 0.00041059 , 0.00041507 , 0.00041958 , 0.00042415 ,

0.00042877 , 0.00043344 , 0.00043816 , 0.00044293 , 0.00044776

, 0.00045263 , 0.00045756 , 0.00046254 , 0.00046758 , 0.00047267 ,

0.00047782 , 0.00048302 , 0.00048828 , 0.0004936 , 0.00049897 ,

0.00050441 , 0.0005099 , 0.00051545 , 0.00052106 , 0.00052674 ,

Page 175: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

175 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.00053247 , 0.00053827 , 0.00054413 , 0.00055006 , 0.00055605

, 0.0005621 , 0.00056823 , 0.00057441 , 0.00058067 , 0.00058699 ,

0.00059338 , 0.00059984 , 0.00060638 , 0.00061298 , 0.00061965

, 0.0006264 , 0.00063322 , 0.00064012 , 0.00064709 , 0.00065413 ,

0.00066126 , 0.00066846 , 0.00067574 , 0.0006831 , 0.00069053 ,

0.00069805 , 0.00070565 , 0.00071334 , 0.00072111 , 0.00072896 ,

0.0007369 , 0.00074492 , 0.00075303 , 0.00076123 , 0.00076952 ,

0.0007779 , 0.00078637 , 0.00079494 , 0.00080359 , 0.00081234 ,

0.00082119 , 0.00083013 , 0.00083917 , 0.00084831 , 0.00085755

, 0.00086688 , 0.00087632 , 0.00088587 , 0.00089551 , 0.00090526 ,

0.00091512 , 0.00092509 , 0.00093516 , 0.00094534 , 0.00095564

, 0.00096604 , 0.00097656 , 0.0009872 , 0.00099795 , 0.0010088 ,

0.0010198 , 0.0010309 , 0.0010421 , 0.0010535 , 0.0010649 ,

0.0010765 , 0.0010883 , 0.0011001 , 0.0011121 , 0.0011242 ,

0.0011365 , 0.0011488 , 0.0011613 , 0.001174 , 0.0011868 ,

0.0011997 , 0.0012128 , 0.001226 , 0.0012393 , 0.0012528 ,

0.0012664 , 0.0012802 , 0.0012942 , 0.0013083 , 0.0013225 ,

0.0013369 , 0.0013515 , 0.0013662 , 0.0013811 , 0.0013961 ,

0.0014113 , 0.0014267 , 0.0014422 , 0.0014579 , 0.0014738 ,

0.0014898 , 0.0015061 , 0.0015225 , 0.001539 , 0.0015558 ,

0.0015727 , 0.0015899 , 0.0016072 , 0.0016247 , 0.0016424 ,

0.0016603 , 0.0016783 , 0.0016966 , 0.0017151 , 0.0017338 ,

0.0017526 , 0.0017717 , 0.001791 , 0.0018105 , 0.0018302 ,

0.0018502 , 0.0018703 , 0.0018907 , 0.0019113 , 0.0019321 ,

0.0019531 , 0.0019744 , 0.0019959 , 0.0020176 , 0.0020396 ,

0.0020618 , 0.0020843 , 0.002107 , 0.0021299 , 0.0021531 ,

0.0021765 , 0.0022002 , 0.0022242 , 0.0022484 , 0.0022729 ,

0.0022977 , 0.0023227 , 0.002348 , 0.0023735 , 0.0023994 ,

0.0024255 , 0.0024519 , 0.0024786 , 0.0025056 , 0.0025329 ,

0.0025605 , 0.0025884 , 0.0026165 , 0.002645 , 0.0026738 ,

0.0027029 , 0.0027324 , 0.0027621 , 0.0027922 , 0.0028226 ,

0.0028534 , 0.0028844 , 0.0029158 , 0.0029476 , 0.0029797 ,

0.0030121 , 0.0030449 , 0.0030781 , 0.0031116 , 0.0031455 ,

0.0031797 , 0.0032144 , 0.0032494 , 0.0032848 , 0.0033205 ,

0.0033567 , 0.0033932 , 0.0034302 , 0.0034675 , 0.0035053 ,

0.0035435 , 0.003582 , 0.0036211 , 0.0036605 , 0.0037003 ,

0.0037406 , 0.0037814 , 0.0038225 , 0.0038642 , 0.0039063 ,

0.0039488 , 0.0039918 , 0.0040353 , 0.0040792 , 0.0041236 ,

0.0041685 , 0.0042139 , 0.0042598 , 0.0043062 , 0.0043531 ,

0.0044005 , 0.0044484 , 0.0044968 , 0.0045458 , 0.0045953 ,

0.0046453 , 0.0046959 , 0.0047471 , 0.0047988 , 0.004851 ,

0.0049038 , 0.0049572 , 0.0050112 , 0.0050658 , 0.0051209 ,

0.0051767 , 0.0052331 , 0.0052901 , 0.0053477 , 0.0054059 ,

0.0054648 , 0.0055243 , 0.0055844 , 0.0056452 , 0.0057067 ,

0.0057689 , 0.0058317 , 0.0058952 , 0.0059594 , 0.0060243 ,

0.0060899 , 0.0061562 , 0.0062232 , 0.006291 , 0.0063595 ,

0.0064287 , 0.0064987 , 0.0065695 , 0.006641 , 0.0067134 ,

0.0067865 , 0.0068604 , 0.0069351 , 0.0070106 , 0.0070869 ,

0.0071641 , 0.0072421 , 0.007321 , 0.0074007 , 0.0074813 ,

0.0075627 , 0.0076451 , 0.0077283 , 0.0078125 , 0.0078976 ,

0.0079836 , 0.0080705 , 0.0081584 , 0.0082472 , 0.008337 ,

0.0084278 , 0.0085196 , 0.0086124 , 0.0087061 , 0.008801 ,

0.0088968 , 0.0089937 , 0.0090916 , 0.0091906 , 0.0092907 ,

0.0093918 , 0.0094941 , 0.0095975 , 0.009702 , 0.0098077 ,

0.0099145 , 0.010022 , 0.010132 , 0.010242 , 0.010353 ,

0.010466 , 0.01058 , 0.010695 , 0.010812 , 0.01093 ,

0.011049 , 0.011169 , 0.01129 , 0.011413 , 0.011538 , 0.011663

, 0.01179 , 0.011919 , 0.012049 , 0.01218 ,

Page 176: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

176 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.012312 , 0.012446 , 0.012582 , 0.012719 , 0.012857 , 0.012997

, 0.013139 , 0.013282 , 0.013427 , 0.013573 ,

0.013721 , 0.01387 , 0.014021 , 0.014174 , 0.014328 , 0.014484

, 0.014642 , 0.014801 , 0.014963 , 0.015125 ,

0.01529 , 0.015457 , 0.015625 , 0.015795 , 0.015967 , 0.016141

, 0.016317 , 0.016494 , 0.016674 , 0.016856 ,

0.017039 , 0.017225 , 0.017412 , 0.017602 , 0.017794 , 0.017987

, 0.018183 , 0.018381 , 0.018581 , 0.018784 ,

0.018988 , 0.019195 , 0.019404 , 0.019615 , 0.019829 , 0.020045

, 0.020263 , 0.020484 , 0.020707 , 0.020932 ,

0.02116 , 0.021391 , 0.021624 , 0.021859 , 0.022097 , 0.022338

, 0.022581 , 0.022827 , 0.023075 , 0.023327 ,

0.023581 , 0.023837 , 0.024097 , 0.024359 , 0.024625 , 0.024893

, 0.025164 , 0.025438 , 0.025715 , 0.025995 ,

0.026278 , 0.026564 , 0.026853 , 0.027146 , 0.027441 , 0.02774

, 0.028042 , 0.028348 , 0.028656 , 0.028968 ,

0.029284 , 0.029603 , 0.029925 , 0.030251 , 0.03058 , 0.030913

, 0.03125 , 0.03159 , 0.031934 , 0.032282 ,

0.032634 , 0.032989 , 0.033348 , 0.033711 , 0.034078 , 0.034449

, 0.034825 , 0.035204 , 0.035587 , 0.035975 ,

0.036366 , 0.036762 , 0.037163 , 0.037567 , 0.037976 , 0.03839

, 0.038808 , 0.039231 , 0.039658 , 0.04009 ,

0.040526 , 0.040968 , 0.041414 , 0.041865 , 0.04232 , 0.042781

, 0.043247 , 0.043718 , 0.044194 , 0.044675 ,

0.045162 , 0.045654 , 0.046151 , 0.046653 , 0.047161 , 0.047675

, 0.048194 , 0.048719 , 0.049249 , 0.049786 ,

0.050328 , 0.050876 , 0.05143 , 0.05199 , 0.052556 , 0.053128 ,

0.053707 , 0.054292 , 0.054883 , 0.055481 ,

0.056085 , 0.056695 , 0.057313 , 0.057937 , 0.058568 , 0.059205

, 0.05985 , 0.060502 , 0.061161 , 0.061827 ,

0.0625 , 0.063181 , 0.063869 , 0.064564 , 0.065267 , 0.065978 ,

0.066696 , 0.067423 , 0.068157 , 0.068899 ,

0.069649 , 0.070408 , 0.071174 , 0.071949 , 0.072733 , 0.073525

, 0.074325 , 0.075135 , 0.075953 , 0.07678 ,

0.077616 , 0.078461 , 0.079316 , 0.080179 , 0.081052 , 0.081935

, 0.082827 , 0.083729 , 0.084641 , 0.085563 ,

0.086494 , 0.087436 , 0.088388 , 0.089351 , 0.090324 , 0.091307

, 0.092302 , 0.093307 , 0.094323 , 0.09535 ,

0.096388 , 0.097438 , 0.098499 , 0.099571 , 0.10066 , 0.10175 ,

0.10286 , 0.10398 , 0.10511 , 0.10626 ,

0.10741 , 0.10858 , 0.10977 , 0.11096 , 0.11217 , 0.11339 ,

0.11463 , 0.11587 , 0.11714 , 0.11841 ,

0.1197 , 0.121 , 0.12232 , 0.12365 , 0.125 , 0.12636 , 0.12774

, 0.12913 , 0.13053 , 0.13196 ,

0.13339 , 0.13485 , 0.13631 , 0.1378 , 0.1393 , 0.14082 ,

0.14235 , 0.1439 , 0.14547 , 0.14705 ,

0.14865 , 0.15027 , 0.15191 , 0.15356 , 0.15523 , 0.15692 ,

0.15863 , 0.16036 , 0.1621 , 0.16387 ,

0.16565 , 0.16746 , 0.16928 , 0.17113 , 0.17299 , 0.17487 ,

0.17678 , 0.1787 , 0.18065 , 0.18261 ,

0.1846 , 0.18661 , 0.18865 , 0.1907 , 0.19278 , 0.19488 , 0.197

, 0.19914 , 0.20131 , 0.2035 ,

0.20572 , 0.20796 , 0.21022 , 0.21251 , 0.21483 , 0.21717 ,

0.21953 , 0.22192 , 0.22434 , 0.22678 ,

0.22925 , 0.23175 , 0.23427 , 0.23682 , 0.2394 , 0.24201 ,

0.24464 , 0.24731 , 0.25 , 0.25272 ,

0.25547 , 0.25826 , 0.26107 , 0.26391 , 0.26679 , 0.26969 ,

0.27263 , 0.2756 , 0.2786 , 0.28163 ,

Page 177: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

177 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.2847 , 0.2878 , 0.29093 , 0.2941 , 0.2973 , 0.30054 , 0.30381

, 0.30712 , 0.31046 , 0.31385 ,

0.31726 , 0.32072 , 0.32421 , 0.32774 , 0.33131 , 0.33492 ,

0.33856 , 0.34225 , 0.34598 , 0.34974 ,

0.35355 , 0.3574 , 0.3613 , 0.36523 , 0.36921 , 0.37323 ,

0.37729 , 0.3814 , 0.38555 , 0.38975 ,

0.394 , 0.39829 , 0.40262 , 0.40701 , 0.41144 , 0.41592 ,

0.42045 , 0.42503 , 0.42965 , 0.43433 ,

0.43906 , 0.44384 , 0.44868 , 0.45356 , 0.4585 , 0.46349 ,

0.46854 , 0.47364 , 0.4788 , 0.48402 ,

0.48929 , 0.49461 , 0.5 , 0.50544 , 0.51095 , 0.51651 , 0.52214

, 0.52782 , 0.53357 , 0.53938 ,

0.54525 , 0.55119 , 0.55719 , 0.56326 , 0.56939 , 0.57559 ,

0.58186 , 0.5882 , 0.5946 , 0.60108 ,

0.60762 , 0.61424 , 0.62093 , 0.62769 , 0.63453 , 0.64144 ,

0.64842 , 0.65548 , 0.66262 , 0.66983 ,

0.67713, 0.6845, 0.69195, 0.69949

};

/**************************************************************************

***

* Private functions

***************************************************************************

*/

/**

* @brief Get the SPLrms realtive to UD value.

* @param[in] *Input points to the input vector.

* @param[in] Gain is the gain of the channel (20 dB or 50 dB).

* @return SPLrms value

*

* <b>Functionality of the function:</b>

* \par

* This function gets the SPLrms realtive to digital units

processed.

* This function has two possible results, when gain channel is 20

dB either is 50 dB.

* The table provides 1024 values, which provide sufficient

resolution, without resulting in excessive memory consumption.

* The equally spaced values is logarithmic, in order to get

resolution in low values.

*

*/

float32_t lookUpTable_UD_SPLrms(float32_t Input, uint8_t Gain)

{

float32_t maxInput, minInput, dif_dB, dif_lineal, dif_total, SPLrms;

uint16_t n, y;

const float32_t * SPLrms_Table;

n = NELEMS(SPLrms_Table);

minInput = 1.078959e-05;

maxInput = 7.071068e-01;

y=0;

if (Gain == 20) {

SPLrms_Table = SPLrms_Table_Gain20;

}

Page 178: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

178 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

else if (Gain == 50)

{

SPLrms_Table = RMSspl_Table_Gain50;

}

if (Input >= maxInput)

{

SPLrms = (float32_t) SPLrms_Table[n-1];}

else if (Input <= minInput)

{

SPLrms = (float32_t) SPLrms_Table[0];}

else if (Input > minInput)

{

while(Input > UD_Table[y])

{

y++;

}

dif_lineal = UD_Table[y]-UD_Table[y-1];

dif_dB = SPLrms_Table[y]-SPLrms_Table[y-1];

dif_total = Input-UD_Table[y-1];

SPLrms =(float32_t) ((dif_total*dif_dB/dif_lineal) +

SPLrms_Table[y-1]);

}

return SPLrms;

}

Percentile_level.c

/*

* percentile_level.c

*

* Created on: 15/1/2015

* Author: Centro Tecnológico Naval

*/

/*

* @brief Calculates a certain percentile level on a vector.

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* percentile_level calculates a certain percentile leven on a vector.

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

Page 179: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

179 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

#include <arm_math.h>

#include <stdio.h>

#include <stdlib.h>

/**************************************************************************

***

* Private functions

***************************************************************************

*/

int cmpfunc (const void * a, const void * b)

{

return ( *(int*)b - *(int*)a );

}

/**

* @brief Get the SPL of each filter and its percentiles 90

and 10.

* @param[in] input_vector[] points to the input vector.

* @param[in] vector_size is the size of the input_vector.

* @param[in] percentile_level is the target level of percentile.

* @return level of percentile.

*

* <b>Functionality of the function:</b>

* \par

* This function gets the value of percentile indicated in

percentile_level input argument.

*/

float32_t percentile_level (float32_t input_vector[], int vector_size, int

percentile_level){

int position;

if ( percentile_level >= 100 ){

percentile_level = 99;

}

if (percentile_level <= 0 ){

percentile_level = 1;

}

position = floor( ( percentile_level * vector_size ) / 100 );

qsort (input_vector, vector_size, sizeof(float32_t), cmpfunc);

if ( position == vector_size-1){

return input_vector[position-1];

}

else

{

return input_vector[position];

}

}

Page 180: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

180 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

8 ANNEX III – NOISE BAND MONITORING

8.1 STRUCTURE The code is structured as usual in C, in two different folders. One folder called src folder,

contains the source files and the other called inc contains the header files needed in order

for the algorithm to work properly

8.2 CODE

8.2.1 Noise Band Monitoring /* * indicator_11_2_1.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Obtain values for Indicator 11.2.1 extended * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * "Indicator 11.2.1 extended" returns the SPLrms values of the input signal for bandwidth within 20 Hz to 20 kHz. * It also returns the value of the SPLrms percentiles. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef NOISE_BAND_MONITORING_H_ #define NOISE_BAND_MONITORING_H_ #include <arm_math.h> void noise_band_monitoring(float32_t * Input, uint16_t k, float32_t *rmsValueVector, float32_t *splValueVector, float32_t * Output); #endif /* NOISE_BAND_MONITORING_H_ */ /* * indicator_11_2_1.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval

Page 181: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

181 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

*/ /* * @brief Obtain values for Indicator 11.2.1 * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * Noise band monitoring returns the SPLrms value of the input signal for a frequency range defined by the user. * It also returns the value of the SPLrms percentiles. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <math.h> #include <stdlib.h> #include <stdio.h> #include "inputMatlab.h" #include "noise_band_monitoring.h" #include "lookUpTable_UD_SPLrms.h" #include "percentile_level.h" #include "Filter.h" /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ float32_t rmsValue = 0; float32_t splValue = 0; float32_t percentile90SPL; float32_t percentile10SPL; uint16_t i; uint16_t j; float32_t rmsValueVector_temp[NBLOCKS]; float32_t splValueVector_temp[NBLOCKS]; arm_status status; /***************************************************************************** * Public types/enumerations/variables ****************************************************************************/ /***************************************************************************** * Private functions ****************************************************************************/ /***************************************************************************** * Public functions ****************************************************************************/ /** * @brief Get the SPL of filter defined by the user and its percentiles 90 and 10.

Page 182: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

182 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* @param[in] *Input points to the input vector. * @param[in] k. Counter of maximum value: NBLOCKS * @param[in] *rmsValueVector points to the RMS value vector. * @param[in] *splValueVector points to the SPL value vector. * @param[in] *Output points to the output vector in which SPLrms and its percentiles values are stored. * @return none * * <b>Functionality of the function:</b> * \par * This function gets the SPLrms value of an input signal, as well as its percentiles. * First of all the Input signal must be filtered with a filter with characteristics defined by the user. * Every time the signal is filtered, the RMS value is stored on a vector The same is done with the SPL value. * So a vector with the RMS and SPL values for each center frequency is obtained. * * All RMS values relating to the process of a block is stored in a vector, which is subsequently used to compute the total RMS. * The same is done with the SPL. * * Then the percentiles l_90 and l_10 of the SPL is obtained. * * Finally the output will be a vector containing the final SPL, SPL percentile l_90 and SPL percentile l_10. * */ void noise_band_monitoring( float32_t * Input, uint16_t k, float32_t *rmsValueVector, float32_t *splValueVector, float32_t * Output ) { float32_t signalToProcess[BLOCK_SIZE]; //Filtering block arm_biquad_casd_df1_inst_f32 *S = (arm_biquad_casd_df1_inst_f32 *)malloc(sizeof(arm_biquad_casd_df1_inst_f32)); arm_biquad_cascade_df1_init_f32 ( S , numstages , pcoeffs, p_State ); arm_biquad_cascade_df1_f32( S ,Input, Input, BLOCK_SIZE ); free(S); // RMS computation X Hz and store it in the vector. arm_rms_f32( Input, BLOCK_SIZE, &rmsValue); rmsValueVector[k] = rmsValue; // SPL computation X Hz and store it in the vector. splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN); splValueVector[k] = splValue; // Once every block has been processed, get the RMS and SPL of each filter and get the percentiles of each one of them. if(k==(NBLOCKS-1)){ //rmsValueVector_temp will contain the RMS of each RMS obtained with the filters. for (j=0;j<NBLOCKS;j++){ rmsValueVector_temp[j] = rmsValueVector[j]; } //splValueVector_temp will contain the SPL of each SPL obtained with the filters . for (j=0;j<NBLOCKS;j++){ splValueVector_temp[j] = splValueVector[j]; } // SPL total arm_rms_f32( rmsValueVector_temp, NBLOCKS, &rmsValue); splValue = lookUpTable_UD_SPLrms(rmsValue, GAIN); // Percentiles

Page 183: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

183 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

percentile90SPL = percentile_level (splValueVector_temp, NBLOCKS, 90); percentile10SPL = percentile_level (splValueVector_temp, NBLOCKS, 10); Output[0] = splValue; Output[1] = percentile90SPL; Output[2] = percentile10SPL; } }

8.2.2 LookUpTable_UD_SPLrms

/* * lookUpTable_UD_SPLrms.h * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Identifies digital values with SPLrms re 1uPa values * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * lookUpTable_UD_SPLrms link digital values of the processing with SPLrms values re 1uPa, taking into account: * - Sensitivity of hydrophone * - Gain of the channel * - Conversion Factor of ADC * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef LOOKUPTABLE_UD_SPLRMS_H_ #define LOOKUPTABLE_UD_SPLRMS_H_ #include <arm_math.h> // Include CMSIS header /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ #define NELEMS(x) (sizeof(x) / sizeof((x)[0])) /***************************************************************************** * Private functions ****************************************************************************/ float32_t lookUpTable_UD_SPLrms( float32_t Input, uint8_t Gain); #endif

Page 184: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

184 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/* * lookUpTable_UD_SPLrms.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief Identifies digital values with SPLrms re 1uPa values * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * lookUpTable_UD_SPLrms link digital values of the processing with SPLrms values re 1uPa, taking into account: * - Sensitivity of hydrophone * - Gain of the channel * - Conversion Factor of ADC * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <lookUpTable_UD_SPLrms.h> /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ const float32_t SPLrms_Table_Gain20[1024]= { 81.6704 , 81.7645 , 81.8585 , 81.9526 , 82.0467 , 82.1408 , 82.2348 , 82.3289 , 82.423 , 82.517 , 82.6111 , 82.7052 , 82.7993 , 82.8933 , 82.9874 , 83.0815 , 83.1756 , 83.2696 , 83.3637 , 83.4578 , 83.5518 , 83.6459 , 83.74 , 83.8341 , 83.9281 , 84.0222 , 84.1163 , 84.2103 , 84.3044 , 84.3985 , 84.4926 , 84.5866 , 84.6807 , 84.7748 , 84.8688 , 84.9629 , 85.057 , 85.1511 , 85.2451 , 85.3392 , 85.4333 , 85.5273 , 85.6214 , 85.7155 , 85.8096 , 85.9036 , 85.9977 , 86.0918 , 86.1859 , 86.2799 , 86.374 , 86.4681 , 86.5621 , 86.6562 , 86.7503 , 86.8444 , 86.9384 , 87.0325 , 87.1266 , 87.2206 , 87.3147 , 87.4088 , 87.5029 , 87.5969 , 87.691 , 87.7851 , 87.8791 , 87.9732 , 88.0673 , 88.1614 , 88.2554 , 88.3495 , 88.4436 , 88.5376 , 88.6317 , 88.7258 , 88.8199 , 88.9139 , 89.008 , 89.1021 , 89.1962 , 89.2902 , 89.3843 , 89.4784 , 89.5724 , 89.6665 , 89.7606 , 89.8547 , 89.9487 , 90.0428 , 90.1369 , 90.2309 , 90.325 , 90.4191 , 90.5132 , 90.6072 , 90.7013 , 90.7954 , 90.8894 , 90.9835 , 91.0776 , 91.1717 , 91.2657 , 91.3598 , 91.4539 , 91.5479 , 91.642 , 91.7361 , 91.8302 , 91.9242 , 92.0183 , 92.1124 , 92.2065 , 92.3005 , 92.3946 , 92.4887 , 92.5827 , 92.6768 , 92.7709 , 92.865 , 92.959 , 93.0531 , 93.1472 , 93.2412 , 93.3353 , 93.4294 , 93.5235 , 93.6175 , 93.7116 , 93.8057 , 93.8997 , 93.9938 , 94.0879 , 94.182 , 94.276 , 94.3701 , 94.4642 , 94.5582 , 94.6523 , 94.7464 ,

Page 185: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

185 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

94.8405 , 94.9345 , 95.0286 , 95.1227 , 95.2168 , 95.3108 , 95.4049 , 95.499 , 95.593 , 95.6871 , 95.7812 , 95.8753 , 95.9693 , 96.0634 , 96.1575 , 96.2515 , 96.3456 , 96.4397 , 96.5338 , 96.6278 , 96.7219 , 96.816 , 96.91 , 97.0041 , 97.0982 , 97.1923 , 97.2863 , 97.3804 , 97.4745 , 97.5685 , 97.6626 , 97.7567 , 97.8508 , 97.9448 , 98.0389 , 98.133 , 98.2271 , 98.3211 , 98.4152 , 98.5093 , 98.6033 , 98.6974 , 98.7915 , 98.8856 , 98.9796 , 99.0737 , 99.1678 , 99.2618 , 99.3559 , 99.45 , 99.5441 , 99.6381 , 99.7322 , 99.8263 , 99.9203 , 100.0144 , 100.1085 , 100.2026 , 100.2966 , 100.3907 , 100.4848 , 100.5788 , 100.6729 , 100.767 , 100.8611 , 100.9551 , 101.0492 , 101.1433 , 101.2374 , 101.3314 , 101.4255 , 101.5196 , 101.6136 , 101.7077 , 101.8018 , 101.8959 , 101.9899 , 102.084 , 102.1781 , 102.2721 , 102.3662 , 102.4603 , 102.5544 , 102.6484 , 102.7425 , 102.8366 , 102.9306 , 103.0247 , 103.1188 , 103.2129 , 103.3069 , 103.401 , 103.4951 , 103.5891 , 103.6832 , 103.7773 , 103.8714 , 103.9654 , 104.0595 , 104.1536 , 104.2477 , 104.3417 , 104.4358 , 104.5299 , 104.6239 , 104.718 , 104.8121 , 104.9062 , 105.0002 , 105.0943 , 105.1884 , 105.2824 , 105.3765 , 105.4706 , 105.5647 , 105.6587 , 105.7528 , 105.8469 , 105.9409 , 106.035 , 106.1291 , 106.2232 , 106.3172 , 106.4113 , 106.5054 , 106.5994 , 106.6935 , 106.7876 , 106.8817 , 106.9757 , 107.0698 , 107.1639 , 107.258 , 107.352 , 107.4461 , 107.5402 , 107.6342 , 107.7283 , 107.8224 , 107.9165 , 108.0105 , 108.1046 , 108.1987 , 108.2927 , 108.3868 , 108.4809 , 108.575 , 108.669 , 108.7631 , 108.8572 , 108.9512 , 109.0453 , 109.1394 , 109.2335 , 109.3275 , 109.4216 , 109.5157 , 109.6097 , 109.7038 , 109.7979 , 109.892 , 109.986 , 110.0801 , 110.1742 , 110.2683 , 110.3623 , 110.4564 , 110.5505 , 110.6445 , 110.7386 , 110.8327 , 110.9268 , 111.0208 , 111.1149 , 111.209 , 111.303 , 111.3971 , 111.4912 , 111.5853 , 111.6793 , 111.7734 , 111.8675 , 111.9615 , 112.0556 , 112.1497 , 112.2438 , 112.3378 , 112.4319 , 112.526 , 112.62 , 112.7141 , 112.8082 , 112.9023 , 112.9963 , 113.0904 , 113.1845 , 113.2786 , 113.3726 , 113.4667 , 113.5608 , 113.6548 , 113.7489 , 113.843 , 113.9371 , 114.0311 , 114.1252 , 114.2193 , 114.3133 , 114.4074 , 114.5015 , 114.5956 , 114.6896 , 114.7837 , 114.8778 , 114.9718 , 115.0659 , 115.16 , 115.2541 , 115.3481 , 115.4422 , 115.5363 , 115.6303 , 115.7244 , 115.8185 , 115.9126 , 116.0066 , 116.1007 , 116.1948 , 116.2889 , 116.3829 , 116.477 , 116.5711 , 116.6651 , 116.7592 , 116.8533 , 116.9474 , 117.0414 , 117.1355 , 117.2296 , 117.3236 , 117.4177 , 117.5118 , 117.6059 , 117.6999 , 117.794 , 117.8881 , 117.9821 , 118.0762 , 118.1703 , 118.2644 , 118.3584 , 118.4525 , 118.5466 , 118.6406 , 118.7347 , 118.8288 , 118.9229 , 119.0169 , 119.111 , 119.2051 , 119.2992 , 119.3932 , 119.4873 , 119.5814 , 119.6754 , 119.7695 , 119.8636 , 119.9577 , 120.0517 , 120.1458 , 120.2399 , 120.3339 , 120.428 , 120.5221 , 120.6162 , 120.7102 , 120.8043 , 120.8984 , 120.9924 , 121.0865 , 121.1806 , 121.2747 , 121.3687 , 121.4628 , 121.5569 , 121.6509 , 121.745 , 121.8391 , 121.9332 , 122.0272 , 122.1213 , 122.2154 , 122.3095 , 122.4035 , 122.4976 , 122.5917 , 122.6857 , 122.7798 , 122.8739 , 122.968 , 123.062 , 123.1561 , 123.2502 , 123.3442 , 123.4383 , 123.5324 , 123.6265 , 123.7205 , 123.8146 , 123.9087 , 124.0027 , 124.0968 , 124.1909 , 124.285 , 124.379 , 124.4731 , 124.5672 , 124.6612 , 124.7553 , 124.8494 , 124.9435 , 125.0375 , 125.1316 , 125.2257 , 125.3198 , 125.4138 , 125.5079 , 125.602 , 125.696 , 125.7901 , 125.8842 , 125.9783 , 126.0723 , 126.1664 , 126.2605 , 126.3545 , 126.4486 , 126.5427 , 126.6368 , 126.7308 , 126.8249 , 126.919 , 127.013 , 127.1071 , 127.2012 , 127.2953 , 127.3893 , 127.4834 , 127.5775 , 127.6715 ,

Page 186: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

186 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

127.7656 , 127.8597 , 127.9538 , 128.0478 , 128.1419 , 128.236 , 128.3301 , 128.4241 , 128.5182 , 128.6123 , 128.7063 , 128.8004 , 128.8945 , 128.9886 , 129.0826 , 129.1767 , 129.2708 , 129.3648 , 129.4589 , 129.553 , 129.6471 , 129.7411 , 129.8352 , 129.9293 , 130.0233 , 130.1174 , 130.2115 , 130.3056 , 130.3996 , 130.4937 , 130.5878 , 130.6818 , 130.7759 , 130.87 , 130.9641 , 131.0581 , 131.1522 , 131.2463 , 131.3404 , 131.4344 , 131.5285 , 131.6226 , 131.7166 , 131.8107 , 131.9048 , 131.9989 , 132.0929 , 132.187 , 132.2811 , 132.3751 , 132.4692 , 132.5633 , 132.6574 , 132.7514 , 132.8455 , 132.9396 , 133.0336 , 133.1277 , 133.2218 , 133.3159 , 133.4099 , 133.504 , 133.5981 , 133.6921 , 133.7862 , 133.8803 , 133.9744 , 134.0684 , 134.1625 , 134.2566 , 134.3507 , 134.4447 , 134.5388 , 134.6329 , 134.7269 , 134.821 , 134.9151 , 135.0092 , 135.1032 , 135.1973 , 135.2914 , 135.3854 , 135.4795 , 135.5736 , 135.6677 , 135.7617 , 135.8558 , 135.9499 , 136.0439 , 136.138 , 136.2321 , 136.3262 , 136.4202 , 136.5143 , 136.6084 , 136.7024 , 136.7965 , 136.8906 , 136.9847 , 137.0787 , 137.1728 , 137.2669 , 137.361 , 137.455 , 137.5491 , 137.6432 , 137.7372 , 137.8313 , 137.9254 , 138.0195 , 138.1135 , 138.2076 , 138.3017 , 138.3957 , 138.4898 , 138.5839 , 138.678 , 138.772 , 138.8661 , 138.9602 , 139.0542 , 139.1483 , 139.2424 , 139.3365 , 139.4305 , 139.5246 , 139.6187 , 139.7127 , 139.8068 , 139.9009 , 139.995 , 140.089 , 140.1831 , 140.2772 , 140.3713 , 140.4653 , 140.5594 , 140.6535 , 140.7475 , 140.8416 , 140.9357 , 141.0298 , 141.1238 , 141.2179 , 141.312 , 141.406 , 141.5001 , 141.5942 , 141.6883 , 141.7823 , 141.8764 , 141.9705 , 142.0645 , 142.1586 , 142.2527 , 142.3468 , 142.4408 , 142.5349 , 142.629 , 142.723 , 142.8171 , 142.9112 , 143.0053 , 143.0993 , 143.1934 , 143.2875 , 143.3816 , 143.4756 , 143.5697 , 143.6638 , 143.7578 , 143.8519 , 143.946 , 144.0401 , 144.1341 , 144.2282 , 144.3223 , 144.4163 , 144.5104 , 144.6045 , 144.6986 , 144.7926 , 144.8867 , 144.9808 , 145.0748 , 145.1689 , 145.263 , 145.3571 , 145.4511 , 145.5452 , 145.6393 , 145.7333 , 145.8274 , 145.9215 , 146.0156 , 146.1096 , 146.2037 , 146.2978 , 146.3919 , 146.4859 , 146.58 , 146.6741 , 146.7681 , 146.8622 , 146.9563 , 147.0504 , 147.1444 , 147.2385 , 147.3326 , 147.4266 , 147.5207 , 147.6148 , 147.7089 , 147.8029 , 147.897 , 147.9911 , 148.0851 , 148.1792 , 148.2733 , 148.3674 , 148.4614 , 148.5555 , 148.6496 , 148.7436 , 148.8377 , 148.9318 , 149.0259 , 149.1199 , 149.214 , 149.3081 , 149.4022 , 149.4962 , 149.5903 , 149.6844 , 149.7784 , 149.8725 , 149.9666 , 150.0607 , 150.1547 , 150.2488 , 150.3429 , 150.4369 , 150.531 , 150.6251 , 150.7192 , 150.8132 , 150.9073 , 151.0014 , 151.0954 , 151.1895 , 151.2836 , 151.3777 , 151.4717 , 151.5658 , 151.6599 , 151.7539 , 151.848 , 151.9421 , 152.0362 , 152.1302 , 152.2243 , 152.3184 , 152.4125 , 152.5065 , 152.6006 , 152.6947 , 152.7887 , 152.8828 , 152.9769 , 153.071 , 153.165 , 153.2591 , 153.3532 , 153.4472 , 153.5413 , 153.6354 , 153.7295 , 153.8235 , 153.9176 , 154.0117 , 154.1057 , 154.1998 , 154.2939 , 154.388 , 154.482 , 154.5761 , 154.6702 , 154.7642 , 154.8583 , 154.9524 , 155.0465 , 155.1405 , 155.2346 , 155.3287 , 155.4228 , 155.5168 , 155.6109 , 155.705 , 155.799 , 155.8931 , 155.9872 , 156.0813 , 156.1753 , 156.2694 , 156.3635 , 156.4575 , 156.5516 , 156.6457 , 156.7398 , 156.8338 , 156.9279 , 157.022 , 157.116 , 157.2101 , 157.3042 , 157.3983 , 157.4923 , 157.5864 , 157.6805 , 157.7745 , 157.8686 , 157.9627 , 158.0568 , 158.1508 , 158.2449 , 158.339 , 158.4331 , 158.5271 , 158.6212 , 158.7153 , 158.8093 , 158.9034 , 158.9975 , 159.0916 , 159.1856 , 159.2797 , 159.3738 , 159.4678 , 159.5619 , 159.656 , 159.7501 , 159.8441 , 159.9382 , 160.0323 , 160.1263 , 160.2204 , 160.3145 , 160.4086 , 160.5026 , 160.5967 ,

Page 187: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

187 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

160.6908 , 160.7848 , 160.8789 , 160.973 , 161.0671 , 161.1611 , 161.2552 , 161.3493 , 161.4434 , 161.5374 , 161.6315 , 161.7256 , 161.8196 , 161.9137 , 162.0078 , 162.1019 , 162.1959 , 162.29 , 162.3841 , 162.4781 , 162.5722 , 162.6663 , 162.7604 , 162.8544 , 162.9485 , 163.0426 , 163.1366 , 163.2307 , 163.3248 , 163.4189 , 163.5129 , 163.607 , 163.7011 , 163.7951 , 163.8892 , 163.9833 , 164.0774 , 164.1714 , 164.2655 , 164.3596 , 164.4537 , 164.5477 , 164.6418 , 164.7359 , 164.8299 , 164.924 , 165.0181 , 165.1122 , 165.2062 , 165.3003 , 165.3944 , 165.4884 , 165.5825 , 165.6766 , 165.7707 , 165.8647 , 165.9588 , 166.0529 , 166.1469 , 166.241 , 166.3351 , 166.4292 , 166.5232 , 166.6173 , 166.7114 , 166.8054 , 166.8995 , 166.9936 , 167.0877 , 167.1817 , 167.2758 , 167.3699 , 167.464 , 167.558 , 167.6521 , 167.7462 , 167.8402 , 167.9343 , 168.0284 , 168.1225 , 168.2165 , 168.3106 , 168.4047 , 168.4987 , 168.5928 , 168.6869 , 168.781 , 168.875 , 168.9691 , 169.0632 , 169.1572 , 169.2513 , 169.3454 , 169.4395 , 169.5335 , 169.6276 , 169.7217 , 169.8157 , 169.9098 , 170.0039 , 170.098 , 170.192 , 170.2861 , 170.3802 , 170.4743 , 170.5683 , 170.6624 , 170.7565 , 170.8505 , 170.9446 , 171.0387 , 171.1328 , 171.2268 , 171.3209 , 171.415 , 171.509 , 171.6031 , 171.6972 , 171.7913 , 171.8853 , 171.9794 , 172.0735 , 172.1675 , 172.2616 , 172.3557 , 172.4498 , 172.5438 , 172.6379 , 172.732 , 172.826 , 172.9201 , 173.0142 , 173.1083 , 173.2023 , 173.2964 , 173.3905 , 173.4846 , 173.5786 , 173.6727 , 173.7668 , 173.8608 , 173.9549 , 174.049 , 174.1431 , 174.2371 , 174.3312 , 174.4253 , 174.5193 , 174.6134 , 174.7075 , 174.8016 , 174.8956 , 174.9897 , 175.0838 , 175.1778 , 175.2719 , 175.366 , 175.4601 , 175.5541 , 175.6482 , 175.7423 , 175.8363 , 175.9304 , 176.0245 , 176.1186 , 176.2126 , 176.3067 , 176.4008 , 176.4949 , 176.5889 , 176.683 , 176.7771 , 176.8711 , 176.9652 , 177.0593 , 177.1534 , 177.2474 , 177.3415 , 177.4356 , 177.5296 , 177.6237, 177.7178, 177.8119, 177.9059 }; const float32_t RMSspl_Table_Gain50[1024]= { 51.6704 , 51.7645 , 51.8585 , 51.9526 , 52.0467 , 52.1408 , 52.2348 , 52.3289 , 52.423 , 52.517 , 52.6111 , 52.7052 , 52.7993 , 52.8933 , 52.9874 , 53.0815 , 53.1756 , 53.2696 , 53.3637 , 53.4578 , 53.5518 , 53.6459 , 53.74 , 53.8341 , 53.9281 , 54.0222 , 54.1163 , 54.2103 , 54.3044 , 54.3985 , 54.4926 , 54.5866 , 54.6807 , 54.7748 , 54.8688 , 54.9629 , 55.057 , 55.1511 , 55.2451 , 55.3392 , 55.4333 , 55.5273 , 55.6214 , 55.7155 , 55.8096 , 55.9036 , 55.9977 , 56.0918 , 56.1859 , 56.2799 , 56.374 , 56.4681 , 56.5621 , 56.6562 , 56.7503 , 56.8444 , 56.9384 , 57.0325 , 57.1266 , 57.2206 , 57.3147 , 57.4088 , 57.5029 , 57.5969 , 57.691 , 57.7851 , 57.8791 , 57.9732 , 58.0673 , 58.1614 , 58.2554 , 58.3495 , 58.4436 , 58.5376 , 58.6317 , 58.7258 , 58.8199 , 58.9139 , 59.008 , 59.1021 , 59.1962 , 59.2902 , 59.3843 , 59.4784 , 59.5724 , 59.6665 , 59.7606 , 59.8547 , 59.9487 , 60.0428 , 60.1369 , 60.2309 , 60.325 , 60.4191 , 60.5132 , 60.6072 , 60.7013 , 60.7954 , 60.8894 , 60.9835 , 61.0776 , 61.1717 , 61.2657 , 61.3598 , 61.4539 , 61.5479 , 61.642 , 61.7361 , 61.8302 , 61.9242 , 62.0183 , 62.1124 , 62.2065 , 62.3005 , 62.3946 , 62.4887 , 62.5827 , 62.6768 , 62.7709 , 62.865 , 62.959 , 63.0531 , 63.1472 , 63.2412 , 63.3353 , 63.4294 , 63.5235 , 63.6175 , 63.7116 , 63.8057 , 63.8997 , 63.9938 , 64.0879 , 64.182 , 64.276 , 64.3701 , 64.4642 , 64.5582 , 64.6523 , 64.7464 ,

Page 188: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

188 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

64.8405 , 64.9345 , 65.0286 , 65.1227 , 65.2168 , 65.3108 , 65.4049 , 65.499 , 65.593 , 65.6871 , 65.7812 , 65.8753 , 65.9693 , 66.0634 , 66.1575 , 66.2515 , 66.3456 , 66.4397 , 66.5338 , 66.6278 , 66.7219 , 66.816 , 66.91 , 67.0041 , 67.0982 , 67.1923 , 67.2863 , 67.3804 , 67.4745 , 67.5685 , 67.6626 , 67.7567 , 67.8508 , 67.9448 , 68.0389 , 68.133 , 68.2271 , 68.3211 , 68.4152 , 68.5093 , 68.6033 , 68.6974 , 68.7915 , 68.8856 , 68.9796 , 69.0737 , 69.1678 , 69.2618 , 69.3559 , 69.45 , 69.5441 , 69.6381 , 69.7322 , 69.8263 , 69.9203 , 70.0144 , 70.1085 , 70.2026 , 70.2966 , 70.3907 , 70.4848 , 70.5788 , 70.6729 , 70.767 , 70.8611 , 70.9551 , 71.0492 , 71.1433 , 71.2374 , 71.3314 , 71.4255 , 71.5196 , 71.6136 , 71.7077 , 71.8018 , 71.8959 , 71.9899 , 72.084 , 72.1781 , 72.2721 , 72.3662 , 72.4603 , 72.5544 , 72.6484 , 72.7425 , 72.8366 , 72.9306 , 73.0247 , 73.1188 , 73.2129 , 73.3069 , 73.401 , 73.4951 , 73.5891 , 73.6832 , 73.7773 , 73.8714 , 73.9654 , 74.0595 , 74.1536 , 74.2477 , 74.3417 , 74.4358 , 74.5299 , 74.6239 , 74.718 , 74.8121 , 74.9062 , 75.0002 , 75.0943 , 75.1884 , 75.2824 , 75.3765 , 75.4706 , 75.5647 , 75.6587 , 75.7528 , 75.8469 , 75.9409 , 76.035 , 76.1291 , 76.2232 , 76.3172 , 76.4113 , 76.5054 , 76.5994 , 76.6935 , 76.7876 , 76.8817 , 76.9757 , 77.0698 , 77.1639 , 77.258 , 77.352 , 77.4461 , 77.5402 , 77.6342 , 77.7283 , 77.8224 , 77.9165 , 78.0105 , 78.1046 , 78.1987 , 78.2927 , 78.3868 , 78.4809 , 78.575 , 78.669 , 78.7631 , 78.8572 , 78.9512 , 79.0453 , 79.1394 , 79.2335 , 79.3275 , 79.4216 , 79.5157 , 79.6097 , 79.7038 , 79.7979 , 79.892 , 79.986 , 80.0801 , 80.1742 , 80.2683 , 80.3623 , 80.4564 , 80.5505 , 80.6445 , 80.7386 , 80.8327 , 80.9268 , 81.0208 , 81.1149 , 81.209 , 81.303 , 81.3971 , 81.4912 , 81.5853 , 81.6793 , 81.7734 , 81.8675 , 81.9615 , 82.0556 , 82.1497 , 82.2438 , 82.3378 , 82.4319 , 82.526 , 82.62 , 82.7141 , 82.8082 , 82.9023 , 82.9963 , 83.0904 , 83.1845 , 83.2786 , 83.3726 , 83.4667 , 83.5608 , 83.6548 , 83.7489 , 83.843 , 83.9371 , 84.0311 , 84.1252 , 84.2193 , 84.3133 , 84.4074 , 84.5015 , 84.5956 , 84.6896 , 84.7837 , 84.8778 , 84.9718 , 85.0659 , 85.16 , 85.2541 , 85.3481 , 85.4422 , 85.5363 , 85.6303 , 85.7244 , 85.8185 , 85.9126 , 86.0066 , 86.1007 , 86.1948 , 86.2889 , 86.3829 , 86.477 , 86.5711 , 86.6651 , 86.7592 , 86.8533 , 86.9474 , 87.0414 , 87.1355 , 87.2296 , 87.3236 , 87.4177 , 87.5118 , 87.6059 , 87.6999 , 87.794 , 87.8881 , 87.9821 , 88.0762 , 88.1703 , 88.2644 , 88.3584 , 88.4525 , 88.5466 , 88.6406 , 88.7347 , 88.8288 , 88.9229 , 89.0169 , 89.111 , 89.2051 , 89.2992 , 89.3932 , 89.4873 , 89.5814 , 89.6754 , 89.7695 , 89.8636 , 89.9577 , 90.0517 , 90.1458 , 90.2399 , 90.3339 , 90.428 , 90.5221 , 90.6162 , 90.7102 , 90.8043 , 90.8984 , 90.9924 , 91.0865 , 91.1806 , 91.2747 , 91.3687 , 91.4628 , 91.5569 , 91.6509 , 91.745 , 91.8391 , 91.9332 , 92.0272 , 92.1213 , 92.2154 , 92.3095 , 92.4035 , 92.4976 , 92.5917 , 92.6857 , 92.7798 , 92.8739 , 92.968 , 93.062 , 93.1561 , 93.2502 , 93.3442 , 93.4383 , 93.5324 , 93.6265 , 93.7205 , 93.8146 , 93.9087 , 94.0027 , 94.0968 , 94.1909 , 94.285 , 94.379 , 94.4731 , 94.5672 , 94.6612 , 94.7553 , 94.8494 , 94.9435 , 95.0375 , 95.1316 , 95.2257 , 95.3198 , 95.4138 , 95.5079 , 95.602 , 95.696 , 95.7901 , 95.8842 , 95.9783 , 96.0723 , 96.1664 , 96.2605 , 96.3545 , 96.4486 , 96.5427 , 96.6368 , 96.7308 , 96.8249 , 96.919 , 97.013 , 97.1071 , 97.2012 , 97.2953 , 97.3893 , 97.4834 , 97.5775 , 97.6715 ,

Page 189: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

189 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

97.7656 , 97.8597 , 97.9538 , 98.0478 , 98.1419 , 98.236 , 98.3301 , 98.4241 , 98.5182 , 98.6123 , 98.7063 , 98.8004 , 98.8945 , 98.9886 , 99.0826 , 99.1767 , 99.2708 , 99.3648 , 99.4589 , 99.553 , 99.6471 , 99.7411 , 99.8352 , 99.9293 , 100.0233 , 100.1174 , 100.2115 , 100.3056 , 100.3996 , 100.4937 , 100.5878 , 100.6818 , 100.7759 , 100.87 , 100.9641 , 101.0581 , 101.1522 , 101.2463 , 101.3404 , 101.4344 , 101.5285 , 101.6226 , 101.7166 , 101.8107 , 101.9048 , 101.9989 , 102.0929 , 102.187 , 102.2811 , 102.3751 , 102.4692 , 102.5633 , 102.6574 , 102.7514 , 102.8455 , 102.9396 , 103.0336 , 103.1277 , 103.2218 , 103.3159 , 103.4099 , 103.504 , 103.5981 , 103.6921 , 103.7862 , 103.8803 , 103.9744 , 104.0684 , 104.1625 , 104.2566 , 104.3507 , 104.4447 , 104.5388 , 104.6329 , 104.7269 , 104.821 , 104.9151 , 105.0092 , 105.1032 , 105.1973 , 105.2914 , 105.3854 , 105.4795 , 105.5736 , 105.6677 , 105.7617 , 105.8558 , 105.9499 , 106.0439 , 106.138 , 106.2321 , 106.3262 , 106.4202 , 106.5143 , 106.6084 , 106.7024 , 106.7965 , 106.8906 , 106.9847 , 107.0787 , 107.1728 , 107.2669 , 107.361 , 107.455 , 107.5491 , 107.6432 , 107.7372 , 107.8313 , 107.9254 , 108.0195 , 108.1135 , 108.2076 , 108.3017 , 108.3957 , 108.4898 , 108.5839 , 108.678 , 108.772 , 108.8661 , 108.9602 , 109.0542 , 109.1483 , 109.2424 , 109.3365 , 109.4305 , 109.5246 , 109.6187 , 109.7127 , 109.8068 , 109.9009 , 109.995 , 110.089 , 110.1831 , 110.2772 , 110.3713 , 110.4653 , 110.5594 , 110.6535 , 110.7475 , 110.8416 , 110.9357 , 111.0298 , 111.1238 , 111.2179 , 111.312 , 111.406 , 111.5001 , 111.5942 , 111.6883 , 111.7823 , 111.8764 , 111.9705 , 112.0645 , 112.1586 , 112.2527 , 112.3468 , 112.4408 , 112.5349 , 112.629 , 112.723 , 112.8171 , 112.9112 , 113.0053 , 113.0993 , 113.1934 , 113.2875 , 113.3816 , 113.4756 , 113.5697 , 113.6638 , 113.7578 , 113.8519 , 113.946 , 114.0401 , 114.1341 , 114.2282 , 114.3223 , 114.4163 , 114.5104 , 114.6045 , 114.6986 , 114.7926 , 114.8867 , 114.9808 , 115.0748 , 115.1689 , 115.263 , 115.3571 , 115.4511 , 115.5452 , 115.6393 , 115.7333 , 115.8274 , 115.9215 , 116.0156 , 116.1096 , 116.2037 , 116.2978 , 116.3919 , 116.4859 , 116.58 , 116.6741 , 116.7681 , 116.8622 , 116.9563 , 117.0504 , 117.1444 , 117.2385 , 117.3326 , 117.4266 , 117.5207 , 117.6148 , 117.7089 , 117.8029 , 117.897 , 117.9911 , 118.0851 , 118.1792 , 118.2733 , 118.3674 , 118.4614 , 118.5555 , 118.6496 , 118.7436 , 118.8377 , 118.9318 , 119.0259 , 119.1199 , 119.214 , 119.3081 , 119.4022 , 119.4962 , 119.5903 , 119.6844 , 119.7784 , 119.8725 , 119.9666 , 120.0607 , 120.1547 , 120.2488 , 120.3429 , 120.4369 , 120.531 , 120.6251 , 120.7192 , 120.8132 , 120.9073 , 121.0014 , 121.0954 , 121.1895 , 121.2836 , 121.3777 , 121.4717 , 121.5658 , 121.6599 , 121.7539 , 121.848 , 121.9421 , 122.0362 , 122.1302 , 122.2243 , 122.3184 , 122.4125 , 122.5065 , 122.6006 , 122.6947 , 122.7887 , 122.8828 , 122.9769 , 123.071 , 123.165 , 123.2591 , 123.3532 , 123.4472 , 123.5413 , 123.6354 , 123.7295 , 123.8235 , 123.9176 , 124.0117 , 124.1057 , 124.1998 , 124.2939 , 124.388 , 124.482 , 124.5761 , 124.6702 , 124.7642 , 124.8583 , 124.9524 , 125.0465 , 125.1405 , 125.2346 , 125.3287 , 125.4228 , 125.5168 , 125.6109 , 125.705 , 125.799 , 125.8931 , 125.9872 , 126.0813 , 126.1753 , 126.2694 , 126.3635 , 126.4575 , 126.5516 , 126.6457 , 126.7398 , 126.8338 , 126.9279 , 127.022 , 127.116 , 127.2101 , 127.3042 , 127.3983 , 127.4923 , 127.5864 , 127.6805 , 127.7745 , 127.8686 , 127.9627 , 128.0568 , 128.1508 , 128.2449 , 128.339 , 128.4331 , 128.5271 , 128.6212 , 128.7153 , 128.8093 , 128.9034 , 128.9975 , 129.0916 , 129.1856 , 129.2797 , 129.3738 , 129.4678 , 129.5619 , 129.656 , 129.7501 , 129.8441 , 129.9382 , 130.0323 , 130.1263 , 130.2204 , 130.3145 , 130.4086 , 130.5026 , 130.5967 ,

Page 190: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

190 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

130.6908 , 130.7848 , 130.8789 , 130.973 , 131.0671 , 131.1611 , 131.2552 , 131.3493 , 131.4434 , 131.5374 , 131.6315 , 131.7256 , 131.8196 , 131.9137 , 132.0078 , 132.1019 , 132.1959 , 132.29 , 132.3841 , 132.4781 , 132.5722 , 132.6663 , 132.7604 , 132.8544 , 132.9485 , 133.0426 , 133.1366 , 133.2307 , 133.3248 , 133.4189 , 133.5129 , 133.607 , 133.7011 , 133.7951 , 133.8892 , 133.9833 , 134.0774 , 134.1714 , 134.2655 , 134.3596 , 134.4537 , 134.5477 , 134.6418 , 134.7359 , 134.8299 , 134.924 , 135.0181 , 135.1122 , 135.2062 , 135.3003 , 135.3944 , 135.4884 , 135.5825 , 135.6766 , 135.7707 , 135.8647 , 135.9588 , 136.0529 , 136.1469 , 136.241 , 136.3351 , 136.4292 , 136.5232 , 136.6173 , 136.7114 , 136.8054 , 136.8995 , 136.9936 , 137.0877 , 137.1817 , 137.2758 , 137.3699 , 137.464 , 137.558 , 137.6521 , 137.7462 , 137.8402 , 137.9343 , 138.0284 , 138.1225 , 138.2165 , 138.3106 , 138.4047 , 138.4987 , 138.5928 , 138.6869 , 138.781 , 138.875 , 138.9691 , 139.0632 , 139.1572 , 139.2513 , 139.3454 , 139.4395 , 139.5335 , 139.6276 , 139.7217 , 139.8157 , 139.9098 , 140.0039 , 140.098 , 140.192 , 140.2861 , 140.3802 , 140.4743 , 140.5683 , 140.6624 , 140.7565 , 140.8505 , 140.9446 , 141.0387 , 141.1328 , 141.2268 , 141.3209 , 141.415 , 141.509 , 141.6031 , 141.6972 , 141.7913 , 141.8853 , 141.9794 , 142.0735 , 142.1675 , 142.2616 , 142.3557 , 142.4498 , 142.5438 , 142.6379 , 142.732 , 142.826 , 142.9201 , 143.0142 , 143.1083 , 143.2023 , 143.2964 , 143.3905 , 143.4846 , 143.5786 , 143.6727 , 143.7668 , 143.8608 , 143.9549 , 144.049 , 144.1431 , 144.2371 , 144.3312 , 144.4253 , 144.5193 , 144.6134 , 144.7075 , 144.8016 , 144.8956 , 144.9897 , 145.0838 , 145.1778 , 145.2719 , 145.366 , 145.4601 , 145.5541 , 145.6482 , 145.7423 , 145.8363 , 145.9304 , 146.0245 , 146.1186 , 146.2126 , 146.3067 , 146.4008 , 146.4949 , 146.5889 , 146.683 , 146.7771 , 146.8711 , 146.9652 , 147.0593 , 147.1534 , 147.2474 , 147.3415 , 147.4356 , 147.5296 , 147.6237, 147.7178, 147.8119, 147.9059 }; const float32_t UD_Table[1024]= { 1.079e-05 , 1.0907e-05 , 1.1026e-05 , 1.1146e-05 , 1.1267e-05 , 1.139e-05 , 1.1514e-05 , 1.1639e-05 , 1.1766e-05 , 1.1894e-05 , 1.2024e-05 , 1.2155e-05 , 1.2287e-05 , 1.2421e-05 , 1.2556e-05 , 1.2693e-05 , 1.2831e-05 , 1.2971e-05 , 1.3112e-05 , 1.3255e-05 , 1.3399e-05 , 1.3545e-05 , 1.3693e-05 , 1.3842e-05 , 1.3992e-05 , 1.4145e-05 , 1.4299e-05 , 1.4454e-05 , 1.4612e-05 , 1.4771e-05 , 1.4932e-05 , 1.5094e-05 , 1.5259e-05 , 1.5425e-05 , 1.5593e-05 , 1.5763e-05 , 1.5934e-05 , 1.6108e-05 , 1.6283e-05 , 1.6461e-05 , 1.664e-05 , 1.6821e-05 , 1.7004e-05 , 1.7189e-05 , 1.7377e-05 , 1.7566e-05 , 1.7757e-05 , 1.795e-05 , 1.8146e-05 , 1.8343e-05 , 1.8543e-05 , 1.8745e-05 , 1.8949e-05 , 1.9156e-05 , 1.9364e-05 , 1.9575e-05 , 1.9788e-05 , 2.0004e-05 , 2.0222e-05 , 2.0442e-05 , 2.0664e-05 , 2.0889e-05 , 2.1117e-05 , 2.1347e-05 , 2.1579e-05 , 2.1814e-05 , 2.2052e-05 , 2.2292e-05 , 2.2535e-05 , 2.278e-05 , 2.3028e-05 , 2.3279e-05 , 2.3532e-05 , 2.3789e-05 , 2.4048e-05 , 2.4309e-05 , 2.4574e-05 , 2.4842e-05 , 2.5112e-05 , 2.5386e-05 , 2.5662e-05 , 2.5942e-05 , 2.6224e-05 , 2.651e-05 , 2.6798e-05 , 2.709e-05 , 2.7385e-05 , 2.7683e-05 , 2.7985e-05 , 2.8289e-05 , 2.8598e-05 , 2.8909e-05 , 2.9224e-05 , 2.9542e-05 , 2.9864e-05 , 3.0189e-05 , 3.0518e-05 , 3.085e-05 , 3.1186e-05 , 3.1525e-05 , 3.1869e-05 , 3.2216e-05 , 3.2567e-05 , 3.2921e-05 , 3.328e-05 , 3.3642e-05 , 3.4008e-05 , 3.4379e-05 , 3.4753e-05 , 3.5132e-05 , 3.5514e-05 , 3.5901e-05 , 3.6292e-05 , 3.6687e-05 , 3.7086e-05 , 3.749e-05 , 3.7898e-05 , 3.8311e-05 , 3.8728e-05 , 3.915e-05 , 3.9576e-05 , 4.0007e-05 , 4.0443e-05 , 4.0883e-05 , 4.1329e-05 , 4.1779e-05 , 4.2234e-05 , 4.2693e-05 , 4.3158e-05 , 4.3628e-05 , 4.4103e-05 , 4.4584e-05 , 4.5069e-05 , 4.556e-05 , 4.6056e-05 , 4.6558e-05 , 4.7065e-05 , 4.7577e-05 , 4.8095e-05 , 4.8619e-05 ,

Page 191: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

191 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

4.9148e-05 , 4.9683e-05 , 5.0224e-05 , 5.0771e-05 , 5.1324e-05 , 5.1883e-05 , 5.2448e-05 , 5.3019e-05 , 5.3597e-05 , 5.418e-05 , 5.477e-05 , 5.5367e-05 , 5.5969e-05 , 5.6579e-05 , 5.7195e-05 , 5.7818e-05 , 5.8447e-05 , 5.9084e-05 , 5.9727e-05 , 6.0378e-05 , 6.1035e-05 , 6.17e-05 , 6.2372e-05 , 6.3051e-05 , 6.3737e-05 , 6.4431e-05 , 6.5133e-05 , 6.5842e-05 , 6.6559e-05 , 6.7284e-05 , 6.8017e-05 , 6.8757e-05 , 6.9506e-05 , 7.0263e-05 , 7.1028e-05 , 7.1802e-05 , 7.2583e-05 , 7.3374e-05 , 7.4173e-05 , 7.4981e-05 , 7.5797e-05 , 7.6622e-05 , 7.7457e-05 , 7.83e-05 , 7.9153e-05 , 8.0015e-05 , 8.0886e-05 , 8.1767e-05 , 8.2657e-05 , 8.3557e-05 , 8.4467e-05 , 8.5387e-05 , 8.6317e-05 , 8.7257e-05 , 8.8207e-05 , 8.9167e-05 , 9.0138e-05 , 9.112e-05 , 9.2112e-05 , 9.3115e-05 , 9.4129e-05 , 9.5154e-05 , 9.619e-05 , 9.7238e-05 , 9.8297e-05 , 9.9367e-05 , 0.00010045 , 0.00010154 , 0.00010265 , 0.00010377 , 0.0001049 , 0.00010604 , 0.00010719 , 0.00010836 , 0.00010954 , 0.00011073 , 0.00011194 , 0.00011316 , 0.00011439 , 0.00011564 , 0.00011689 , 0.00011817 , 0.00011945 , 0.00012076 , 0.00012207 , 0.0001234 , 0.00012474 , 0.0001261 , 0.00012747 , 0.00012886 , 0.00013027 , 0.00013168 , 0.00013312 , 0.00013457 , 0.00013603 , 0.00013751 , 0.00013901 , 0.00014053 , 0.00014206 , 0.0001436 , 0.00014517 , 0.00014675 , 0.00014835 , 0.00014996 , 0.00015159 , 0.00015324 , 0.00015491 , 0.0001566 , 0.00015831 , 0.00016003 , 0.00016177 , 0.00016353 , 0.00016531 , 0.00016711 , 0.00016893 , 0.00017077 , 0.00017263 , 0.00017451 , 0.00017641 , 0.00017833 , 0.00018028 , 0.00018224 , 0.00018422 , 0.00018623 , 0.00018826 , 0.00019031 , 0.00019238 , 0.00019448 , 0.00019659 , 0.00019873 , 0.0002009 , 0.00020309 , 0.0002053 , 0.00020753 , 0.00020979 , 0.00021208 , 0.00021439 , 0.00021672 , 0.00021908 , 0.00022147 , 0.00022388 , 0.00022632 , 0.00022878 , 0.00023127 , 0.00023379 , 0.00023634 , 0.00023891 , 0.00024151 , 0.00024414 , 0.0002468 , 0.00024949 , 0.0002522 , 0.00025495 , 0.00025773 , 0.00026053 , 0.00026337 , 0.00026624 , 0.00026914 , 0.00027207 , 0.00027503 , 0.00027802 , 0.00028105 , 0.00028411 , 0.00028721 , 0.00029033 , 0.0002935 , 0.00029669 , 0.00029992 , 0.00030319 , 0.00030649 , 0.00030983 , 0.0003132 , 0.00031661 , 0.00032006 , 0.00032354 , 0.00032707 , 0.00033063 , 0.00033423 , 0.00033787 , 0.00034155 , 0.00034527 , 0.00034903 , 0.00035283 , 0.00035667 , 0.00036055 , 0.00036448 , 0.00036845 , 0.00037246 , 0.00037652 , 0.00038062 , 0.00038476 , 0.00038895 , 0.00039319 , 0.00039747 , 0.0004018 , 0.00040617 , 0.00041059 , 0.00041507 , 0.00041958 , 0.00042415 , 0.00042877 , 0.00043344 , 0.00043816 , 0.00044293 , 0.00044776 , 0.00045263 , 0.00045756 , 0.00046254 , 0.00046758 , 0.00047267 , 0.00047782 , 0.00048302 , 0.00048828 , 0.0004936 , 0.00049897 , 0.00050441 , 0.0005099 , 0.00051545 , 0.00052106 , 0.00052674 , 0.00053247 , 0.00053827 , 0.00054413 , 0.00055006 , 0.00055605 , 0.0005621 , 0.00056823 , 0.00057441 , 0.00058067 , 0.00058699 , 0.00059338 , 0.00059984 , 0.00060638 , 0.00061298 , 0.00061965 , 0.0006264 , 0.00063322 , 0.00064012 , 0.00064709 , 0.00065413 , 0.00066126 , 0.00066846 , 0.00067574 , 0.0006831 , 0.00069053 , 0.00069805 , 0.00070565 , 0.00071334 , 0.00072111 , 0.00072896 , 0.0007369 , 0.00074492 , 0.00075303 , 0.00076123 , 0.00076952 , 0.0007779 , 0.00078637 , 0.00079494 , 0.00080359 , 0.00081234 , 0.00082119 , 0.00083013 , 0.00083917 , 0.00084831 , 0.00085755 , 0.00086688 , 0.00087632 , 0.00088587 , 0.00089551 , 0.00090526 , 0.00091512 , 0.00092509 , 0.00093516 , 0.00094534 , 0.00095564 , 0.00096604 , 0.00097656 , 0.0009872 , 0.00099795 , 0.0010088 , 0.0010198 , 0.0010309 , 0.0010421 , 0.0010535 , 0.0010649 , 0.0010765 , 0.0010883 , 0.0011001 , 0.0011121 , 0.0011242 , 0.0011365 , 0.0011488 , 0.0011613 , 0.001174 , 0.0011868 , 0.0011997 , 0.0012128 , 0.001226 , 0.0012393 , 0.0012528 , 0.0012664 , 0.0012802 , 0.0012942 , 0.0013083 , 0.0013225 , 0.0013369 , 0.0013515 , 0.0013662 , 0.0013811 , 0.0013961 , 0.0014113 , 0.0014267 , 0.0014422 , 0.0014579 , 0.0014738 , 0.0014898 , 0.0015061 , 0.0015225 , 0.001539 , 0.0015558 , 0.0015727 , 0.0015899 , 0.0016072 , 0.0016247 , 0.0016424 , 0.0016603 , 0.0016783 , 0.0016966 , 0.0017151 , 0.0017338 , 0.0017526 , 0.0017717 , 0.001791 , 0.0018105 , 0.0018302 , 0.0018502 , 0.0018703 , 0.0018907 , 0.0019113 , 0.0019321 , 0.0019531 , 0.0019744 , 0.0019959 , 0.0020176 , 0.0020396 , 0.0020618 , 0.0020843 , 0.002107 , 0.0021299 , 0.0021531 ,

Page 192: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

192 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.0021765 , 0.0022002 , 0.0022242 , 0.0022484 , 0.0022729 , 0.0022977 , 0.0023227 , 0.002348 , 0.0023735 , 0.0023994 , 0.0024255 , 0.0024519 , 0.0024786 , 0.0025056 , 0.0025329 , 0.0025605 , 0.0025884 , 0.0026165 , 0.002645 , 0.0026738 , 0.0027029 , 0.0027324 , 0.0027621 , 0.0027922 , 0.0028226 , 0.0028534 , 0.0028844 , 0.0029158 , 0.0029476 , 0.0029797 , 0.0030121 , 0.0030449 , 0.0030781 , 0.0031116 , 0.0031455 , 0.0031797 , 0.0032144 , 0.0032494 , 0.0032848 , 0.0033205 , 0.0033567 , 0.0033932 , 0.0034302 , 0.0034675 , 0.0035053 , 0.0035435 , 0.003582 , 0.0036211 , 0.0036605 , 0.0037003 , 0.0037406 , 0.0037814 , 0.0038225 , 0.0038642 , 0.0039063 , 0.0039488 , 0.0039918 , 0.0040353 , 0.0040792 , 0.0041236 , 0.0041685 , 0.0042139 , 0.0042598 , 0.0043062 , 0.0043531 , 0.0044005 , 0.0044484 , 0.0044968 , 0.0045458 , 0.0045953 , 0.0046453 , 0.0046959 , 0.0047471 , 0.0047988 , 0.004851 , 0.0049038 , 0.0049572 , 0.0050112 , 0.0050658 , 0.0051209 , 0.0051767 , 0.0052331 , 0.0052901 , 0.0053477 , 0.0054059 , 0.0054648 , 0.0055243 , 0.0055844 , 0.0056452 , 0.0057067 , 0.0057689 , 0.0058317 , 0.0058952 , 0.0059594 , 0.0060243 , 0.0060899 , 0.0061562 , 0.0062232 , 0.006291 , 0.0063595 , 0.0064287 , 0.0064987 , 0.0065695 , 0.006641 , 0.0067134 , 0.0067865 , 0.0068604 , 0.0069351 , 0.0070106 , 0.0070869 , 0.0071641 , 0.0072421 , 0.007321 , 0.0074007 , 0.0074813 , 0.0075627 , 0.0076451 , 0.0077283 , 0.0078125 , 0.0078976 , 0.0079836 , 0.0080705 , 0.0081584 , 0.0082472 , 0.008337 , 0.0084278 , 0.0085196 , 0.0086124 , 0.0087061 , 0.008801 , 0.0088968 , 0.0089937 , 0.0090916 , 0.0091906 , 0.0092907 , 0.0093918 , 0.0094941 , 0.0095975 , 0.009702 , 0.0098077 , 0.0099145 , 0.010022 , 0.010132 , 0.010242 , 0.010353 , 0.010466 , 0.01058 , 0.010695 , 0.010812 , 0.01093 , 0.011049 , 0.011169 , 0.01129 , 0.011413 , 0.011538 , 0.011663 , 0.01179 , 0.011919 , 0.012049 , 0.01218 , 0.012312 , 0.012446 , 0.012582 , 0.012719 , 0.012857 , 0.012997 , 0.013139 , 0.013282 , 0.013427 , 0.013573 , 0.013721 , 0.01387 , 0.014021 , 0.014174 , 0.014328 , 0.014484 , 0.014642 , 0.014801 , 0.014963 , 0.015125 , 0.01529 , 0.015457 , 0.015625 , 0.015795 , 0.015967 , 0.016141 , 0.016317 , 0.016494 , 0.016674 , 0.016856 , 0.017039 , 0.017225 , 0.017412 , 0.017602 , 0.017794 , 0.017987 , 0.018183 , 0.018381 , 0.018581 , 0.018784 , 0.018988 , 0.019195 , 0.019404 , 0.019615 , 0.019829 , 0.020045 , 0.020263 , 0.020484 , 0.020707 , 0.020932 , 0.02116 , 0.021391 , 0.021624 , 0.021859 , 0.022097 , 0.022338 , 0.022581 , 0.022827 , 0.023075 , 0.023327 , 0.023581 , 0.023837 , 0.024097 , 0.024359 , 0.024625 , 0.024893 , 0.025164 , 0.025438 , 0.025715 , 0.025995 , 0.026278 , 0.026564 , 0.026853 , 0.027146 , 0.027441 , 0.02774 , 0.028042 , 0.028348 , 0.028656 , 0.028968 , 0.029284 , 0.029603 , 0.029925 , 0.030251 , 0.03058 , 0.030913 , 0.03125 , 0.03159 , 0.031934 , 0.032282 , 0.032634 , 0.032989 , 0.033348 , 0.033711 , 0.034078 , 0.034449 , 0.034825 , 0.035204 , 0.035587 , 0.035975 , 0.036366 , 0.036762 , 0.037163 , 0.037567 , 0.037976 , 0.03839 , 0.038808 , 0.039231 , 0.039658 , 0.04009 , 0.040526 , 0.040968 , 0.041414 , 0.041865 , 0.04232 , 0.042781 , 0.043247 , 0.043718 , 0.044194 , 0.044675 , 0.045162 , 0.045654 , 0.046151 , 0.046653 , 0.047161 , 0.047675 , 0.048194 , 0.048719 , 0.049249 , 0.049786 , 0.050328 , 0.050876 , 0.05143 , 0.05199 , 0.052556 , 0.053128 , 0.053707 , 0.054292 , 0.054883 , 0.055481 , 0.056085 , 0.056695 , 0.057313 , 0.057937 , 0.058568 , 0.059205 , 0.05985 , 0.060502 , 0.061161 , 0.061827 , 0.0625 , 0.063181 , 0.063869 , 0.064564 , 0.065267 , 0.065978 , 0.066696 , 0.067423 , 0.068157 , 0.068899 , 0.069649 , 0.070408 , 0.071174 , 0.071949 , 0.072733 , 0.073525 , 0.074325 , 0.075135 , 0.075953 , 0.07678 , 0.077616 , 0.078461 , 0.079316 , 0.080179 , 0.081052 , 0.081935 , 0.082827 , 0.083729 , 0.084641 , 0.085563 , 0.086494 , 0.087436 , 0.088388 , 0.089351 , 0.090324 , 0.091307 , 0.092302 , 0.093307 , 0.094323 , 0.09535 ,

Page 193: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

193 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

0.096388 , 0.097438 , 0.098499 , 0.099571 , 0.10066 , 0.10175 , 0.10286 , 0.10398 , 0.10511 , 0.10626 , 0.10741 , 0.10858 , 0.10977 , 0.11096 , 0.11217 , 0.11339 , 0.11463 , 0.11587 , 0.11714 , 0.11841 , 0.1197 , 0.121 , 0.12232 , 0.12365 , 0.125 , 0.12636 , 0.12774 , 0.12913 , 0.13053 , 0.13196 , 0.13339 , 0.13485 , 0.13631 , 0.1378 , 0.1393 , 0.14082 , 0.14235 , 0.1439 , 0.14547 , 0.14705 , 0.14865 , 0.15027 , 0.15191 , 0.15356 , 0.15523 , 0.15692 , 0.15863 , 0.16036 , 0.1621 , 0.16387 , 0.16565 , 0.16746 , 0.16928 , 0.17113 , 0.17299 , 0.17487 , 0.17678 , 0.1787 , 0.18065 , 0.18261 , 0.1846 , 0.18661 , 0.18865 , 0.1907 , 0.19278 , 0.19488 , 0.197 , 0.19914 , 0.20131 , 0.2035 , 0.20572 , 0.20796 , 0.21022 , 0.21251 , 0.21483 , 0.21717 , 0.21953 , 0.22192 , 0.22434 , 0.22678 , 0.22925 , 0.23175 , 0.23427 , 0.23682 , 0.2394 , 0.24201 , 0.24464 , 0.24731 , 0.25 , 0.25272 , 0.25547 , 0.25826 , 0.26107 , 0.26391 , 0.26679 , 0.26969 , 0.27263 , 0.2756 , 0.2786 , 0.28163 , 0.2847 , 0.2878 , 0.29093 , 0.2941 , 0.2973 , 0.30054 , 0.30381 , 0.30712 , 0.31046 , 0.31385 , 0.31726 , 0.32072 , 0.32421 , 0.32774 , 0.33131 , 0.33492 , 0.33856 , 0.34225 , 0.34598 , 0.34974 , 0.35355 , 0.3574 , 0.3613 , 0.36523 , 0.36921 , 0.37323 , 0.37729 , 0.3814 , 0.38555 , 0.38975 , 0.394 , 0.39829 , 0.40262 , 0.40701 , 0.41144 , 0.41592 , 0.42045 , 0.42503 , 0.42965 , 0.43433 , 0.43906 , 0.44384 , 0.44868 , 0.45356 , 0.4585 , 0.46349 , 0.46854 , 0.47364 , 0.4788 , 0.48402 , 0.48929 , 0.49461 , 0.5 , 0.50544 , 0.51095 , 0.51651 , 0.52214 , 0.52782 , 0.53357 , 0.53938 , 0.54525 , 0.55119 , 0.55719 , 0.56326 , 0.56939 , 0.57559 , 0.58186 , 0.5882 , 0.5946 , 0.60108 , 0.60762 , 0.61424 , 0.62093 , 0.62769 , 0.63453 , 0.64144 , 0.64842 , 0.65548 , 0.66262 , 0.66983 , 0.67713, 0.6845, 0.69195, 0.69949 }; /***************************************************************************** * Private functions ****************************************************************************/ /** * @brief Get the SPLrms realtive to UD value. * @param[in] *Input points to the input vector. * @param[in] Gain is the gain of the channel (20 dB or 50 dB). * @return SPLrms value * * <b>Functionality of the function:</b> * \par * This function gets the SPLrms realtive to digital units processed. * This function has two possible results, when gain channel is 20 dB either is 50 dB. * The table provides 1024 values, which provide sufficient resolution, without resulting in excessive memory consumption. * The equally spaced values is logarithmic, in order to get resolution in low values. * */ float32_t lookUpTable_UD_SPLrms(float32_t Input, uint8_t Gain) { float32_t maxInput, minInput, dif_dB, dif_lineal, dif_total, SPLrms; uint16_t n, y; const float32_t * SPLrms_Table; n = NELEMS(SPLrms_Table); minInput = 1.078959e-05; maxInput = 7.071068e-01; y=0; if (Gain == 20) {

Page 194: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

194 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

SPLrms_Table = SPLrms_Table_Gain20; } else if (Gain == 50) { SPLrms_Table = SPLrms_Table_Gain20; } if (Input >= maxInput) { SPLrms = (float32_t) SPLrms_Table[n-1];} else if (Input <= minInput) { SPLrms = (float32_t) SPLrms_Table[0];} else if (Input > minInput) { while(Input > UD_Table[y]) { y++; } dif_lineal = UD_Table[y]-UD_Table[y-1]; dif_dB = SPLrms_Table[y]-SPLrms_Table[y-1]; dif_total = Input-UD_Table[y-1]; SPLrms =(float32_t) ((dif_total*dif_dB/dif_lineal) + SPLrms_Table[y-1]); } return SPLrms; }

8.2.3 Percentile_level /* * percentile_level.h * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Calculates a certain percentile level on a vector. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * percentile_level calculates a certain percentile leven on a vector. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef PERCENTILE_LEVEL_H_ #define PERCENTILE_LEVEL_H_ /***************************************************************************** * Private functions ****************************************************************************/ float32_t percentile_level (float32_t input_vector[], int vector_size, int percentile_level); #endif

Page 195: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

195 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

/* * percentile_level.c * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Calculates a certain percentile level on a vector. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * percentile_level calculates a certain percentile leven on a vector. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <arm_math.h> #include <stdio.h> #include <stdlib.h> /***************************************************************************** * Private functions ****************************************************************************/ int cmpfunc (const void * a, const void * b) { return ( *(int*)b - *(int*)a ); } /** * @brief Get the SPL of each filter and its percentiles 90 and 10. * @param[in] input_vector[] points to the input vector. * @param[in] vector_size is the size of the input_vector. * @param[in] percentile_level is the target level of percentile. * @return level of percentile. * * <b>Functionality of the function:</b> * \par * This function gets the value of percentile indicated in percentile_level input argument. */ float32_t percentile_level (float32_t input_vector[], int vector_size, int percentile_level){ int position; if ( percentile_level >= 100 ){ percentile_level = 99; } if (percentile_level <= 0 ){ percentile_level = 1; } position = floor( ( percentile_level * vector_size ) / 100 ); qsort (input_vector, vector_size, sizeof(float32_t), cmpfunc);

Page 196: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

196 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

if ( position == vector_size-1){ return input_vector[position-1]; } else { return input_vector[position]; } }

8.2.4 Filters (63 and 125 Hz) /* * User defined filter * * Created on: 15/1/2015 * Author: Centro Tecnológico Naval */ /* * @brief Header file of user-defined filter. * * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * User-defined filter has the values needed by the ARM CMSIS DSP in order to carry out the filter defined by the user. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */

#ifndef FILTER_H_ #define FILTER_H_ float32_t pcoeffs[15]={0.000015,0.000030,0.000015,1.805356,-0.950957,1.000000,0.000000,-1.000000,1.809390,-0.973886,1.000000,-2.000000,1.000000,1.844453,-0.976487}; uint8_t numstages = 3; float32_t p_State[12]; #endif// FILTER_H_

8.2.5 Main (simulation of CTN) /* * main.c * * Created on: 16/3/2016 * Author: Centro Tecnológico Naval */ /* * @brief main of indicator 11.2.1

Page 197: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

197 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* * @note * Copyright(C) Centro Tecnológico Naval 2015 * All rights reserved. * * @par * main declares the needed variables and call indicator 11.2.1 function. * * * @par * NEEDS TO BE UPDATED * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under Centro Tecnológico Naval' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with Centro Tecnológico Naval. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #include <board.h> #include "noise_band_monitoring.h" #include "inputMatlab.h" /***************************************************************************** * Private types/enumerations/variables ****************************************************************************/ float32_t rmsValueVector[NBLOCKS]; float32_t splValueVector[NBLOCKS]; uint16_t k; /***************************************************************************** * Private functions ****************************************************************************/ /* Sets up system hardware */ static void prvSetupHardware(void) { SystemCoreClockUpdate(); Board_Init(); Board_LED_Set(0, false); } /***************************************************************************** * Public functions ****************************************************************************/ int main(void){ prvSetupHardware(); //Start measuring time in processing Board_LED_Set(0, true); //Green light on q15_t Input[BLOCK_SIZE]; float32_t Input_float[BLOCK_SIZE]; float32_t Output[3]; //Three values (SPLrms, L10 and L90) uint8_t i = 0; for (k=0; k<NBLOCKS; k++){ if (i == 0) { get_input_1(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; }

Page 198: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

198 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

else if (i == 1) { get_input_2(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; } else if (i == 2) { get_input_3(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i++; } else if (i == 3) { get_input_4(Input); arm_q15_to_float(Input, Input_float, BLOCK_SIZE); indicator_11_2_1(Input_float, k, rmsValueVector, splValueVector, Output); i = 0; } } //Stop measuring time in processing Board_LED_Set(0, false); //Green ligth off Board_LED_Set(1, true); //Green blue on // Never returns, for warning only return (0); }

Page 199: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

199 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9 ANNEX IV – CLICK DETECTOR CODE

9.1 STRUCTURE The code is structured as usual in C, in two different folders. One folder called src folder,

contains the source files and the other called inc contains the header files needed in order

for the algorithm to work properly

9.2 CODE

9.2.1 click_detector_f.h

/*

* click_detector_f.h

*

* Created on: 28/9/2015

* Author: pablocervantes

*/

#ifndef CLICK_DETECTOR_F_H_

#define CLICK_DETECTOR_F_H_

#include "get_click_f.h"

void initialize_shlng_filters_f(float32_t * input, float32_t *

initial_long_val , float32_t * initial_short_val, uint16_t block_size);

void click_detector_f (float32_t * input, Click * click, uint16_t

block_size, uint8_t num_of_clicks_expected, uint8_t Gain);

#endif /* CLICK_DETECTOR_F_H_ */

9.2.2 click_parameters_f.h

Page 200: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

200 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

//Header file containing user's defined parameters

#ifndef CLICK_PARAMETERS_F_H_

#define CLICK_PARAMETERS_F_H_

/*!\file click_parameters_f.h

\brief File containing user's defined parameters

This file contains all those parameters defined by the user in order to

customize the click detection algorithm.

*/

/*!\def num_of_clicks_expected

\brief Maximum number of clicks possible in an input signal

It represents the maximum number of clicks that a signal can contain.

This depends on the maximum click length

and the minimum separation between two consecutive click events.

*/

/*!\def BLOCK_SIZE

\brief Size of the input vector in samples.

*/

/*!\var const uint8_t prefilter_flag

\brief Prefilter Flag

Indicates if the signal should be filtered before the detection of clicks

process had started.

*/

/*!\var const uint8_t filter_flag

\brief Filter Flag

Indicates if the signal should be filtered after the prefilter process.

This parameter cannot be 1 if prefilter_flag is 0.

This filter is noramlly designed with a norrower pass-band frequency

region than that implemented in the Prefilter stage.Its use is

recommended when the frequency of the clicks, which are looked for, is

previously known

*/

/*!\var const float32_t long_filter_coeff

\brief Two elements 1-D array with Noise filter coefficients.

Indicates the coefficients for the Noise filter implemented in the

detection clicks.

Default values in float format are:

<CENTER>

[0.00001 , 0.000001]

</CENTER>

*/

/*!\var const float32_t long_filter_coeff_1

\brief Two elements 1-D array.

This parameter is not defined by the user directly. It is compued as

follows:

<CENTER>

long_filter_coeff_1 = 1 - long_filter_coeff

</CENTER>

This is done in order to decrease the number of computations on the click

detection process.

*/

/*!\var const float32_t short_filter_coeff_1

\brief Signal filter coefficient.

Page 201: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

201 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Indicates the coefficient used for the implementation of the short filter

in the click detection process.

Default value is 0.01.

*/

/*!\var const float32_t short_filter_coeff_1

This parameter is not defined by the user directly. It is compued as

follows:

<CENTER>

short_filter_coeff_1 = 1 - short_filter_coeff

</CENTER>

This is done in order to decrease the number of computations on the click

detection process.

*/

/*!\var const float32_t trigger_level

\brief Threshold level

This parameter indicates the amplitude level at which an input sample can

be considered as a possible click.

Its value is defined by the user in dB.

*/

/*!\var const uint16_t max_click_length

\brief Maximum size of a click.

Indicates the maximum length of a click expressed in samples.

If a click is larger than this size,then the click status is set to 0 and

the start of a new click is possible.

*/

/*!\var const uint16_t min_click_separation

\brief Minimum distance between 2 consecutive click events.

Indicates the minimum distance, expressed in samples, such that two

consecutive click detections can be considered as two different click

events.

If the start of a new click is detected before the minimum distance has

been exceeded, this click is discarded.

*/

//Includes

#include <arm_math.h>

#define num_of_clicks_expected 4

#define BLOCK_SIZE 2048

const uint8_t prefilter_flag = 0;

const uint8_t filter_flag = 1;

const float32_t long_filter_coeff[ 2 ] = { 0.000010, 0.000001 };

const float32_t long_filter_coeff_1 [ 2 ] = { 0.999990, 0.999999 };

const float32_t short_filter_coeff = 0.010000;

const float32_t short_filter_coeff_1 = 0.990000;

const float32_t trigger_level = 0.600000;

const uint16_t max_click_length = 1024;

const uint16_t min_click_separation = 100;

float32_t previous_sample_lng = 0;

float32_t previous_sample_sh = 0;

#endif// CLICK_PARAMETERS_F_H_

Page 202: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

202 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.3 click_parameters_f.h

Filter coefficients is justa n example. This can be modified using the Click Detector Gui

//Header file for user-defined filter

#ifndef FILTER_CLICKDETECTOR_H_

#define FILTER_CLICKDETECTOR_H_

float32_t

pcoeffs_click_detector[20]={0.000557,0.001115,0.000557,0.602247,-

0.719963,1.000000,2.000000,1.000000,0.817808,-0.734187,1.000000,-

2.000000,1.000000,0.484655,-0.871453,1.000000,-

2.000000,1.000000,1.030660,-0.887546};

uint8_t numstages_click_detector = 4;

float32_t p_State_click_detector[8];

#endif// FILTER_CLICKDETECTOR_H_

9.2.4 get_click_f.h

/*

* get_click_f.h

*

* Created on: 29/9/2015

* Author: pablocervantes

*/

#ifndef GET_CLICK_F_H_

#define GET_CLICK_F_H_

typedef struct{

float32_t Value;

uint16_t Position;

} Click;

void get_click_f (float32_t * abs_input, Click * click, uint16_t

*real_clicks, uint16_t num_of_clicks, uint16_t block_size, uint8_t

Gain);

#endif /* GET_CLICK_F_H_ */

Page 203: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

203 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.5 look_for_clicks.h

// Begin header file, look_for_clicks_f.h

#ifndef LOOK_FOR_CLICKS_F_H_

#define LOOK_FOR_CLICKS_F_H_

#include <arm_math.h> // Include CMSIS header

//#include <click_parameters.h>

void run_long_filter_f(q15_t sample, int64_t *previous_sample, const

q31_t *long_filter_coeff, const q31_t *long_filter_coeff_1, uint8_t

click_status);

void run_short_filter_f(q15_t sample, int64_t *previous_sample, const

q15_t short_filter_coeff, const q15_t short_filter_coeff_1);

void SetBit_f(uint8_t bitMap,uint8_t bitSet);

void look_for_clicks_f(q15_t * abs_input ,uint16_t * real_clicks,uint16_t

* num_of_clicks, int64_t * previous_sample_lng , int64_t *

previous_sample_sh, uint16_t block_size);

#endif // LOOK_FOR_CLICKS_F_H_

Page 204: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

204 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.6 lookUpTable_UD_SPL.h

/*

* lookUpTable_UD_SPL.h

*

* Created on: 16/3/2016

* Author: Centro Tecnológico Naval

*/

/*

* @brief Identifies digital values with SPLrms re 1uPa values

*

* @note

* Copyright(C) Centro Tecnológico Naval 2015

* All rights reserved.

*

* @par

* lookUpTable_UD_SPLrms link digital values of the processing with

SPLrms values re 1uPa, taking into account:

* - Sensitivity of hydrophone

* - Gain of the channel

* - Conversion Factor of ADC

*

*

* @par

* NEEDS TO BE UPDATED

* Permission to use, copy, modify, and distribute this software and its

* documentation is hereby granted, under Centro Tecnológico Naval' and

its

* licensor's relevant copyrights in the software, without fee, provided

that it

* is used in conjunction with Centro Tecnológico Naval. This

* copyright, permission, and disclaimer notice must appear in all copies

of

* this code.

*/

#ifndef LOOKUPTABLE_UD_SPLRMS_H_

#define LOOKUPTABLE_UD_SPLRMS_H_

#include <arm_math.h> // Include CMSIS header

/************************************************************************

*****

* Private types/enumerations/variables

*************************************************************************

***/

#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))

/************************************************************************

*****

* Private functions

Page 205: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

205 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

*************************************************************************

***/

float32_t lookUpTable_UD_SPL( float32_t Input, uint8_t Gain);

#endif

Page 206: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

206 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.7 click_detector.c /*!\file click_detector.c

\brief Click detector main function.

Click_detector performs click event detections within an input

signal.

*/

// Includes

#include "look_for_clicks_f.h"

#include "get_click_f.h"

#include <math.h>

#include <stdlib.h> //malloc/realloc

#include <stdio.h>

//#include "filter_clickdetector.h"

// Functions

/**

@brief Computes the initial values for the long and

short filters needed in look_for_clicks function.

@param[in] *input points to the input buffer.

@param[in] *initial_long_val points to the long filter value

@param[in] *initial_short_val points to the short filter value

@param[in] block_size Number of samples in the input vector

@return none

<b>Functionality of the function:</b>

\par

The function computes long and short values for their initialization.

They are used in look_for_clicks function.

*/

void initialize_shlng_filters_f(float32_t * input, float32_t *

initial_long_val , float32_t * initial_short_val, uint16_t block_size){

uint16_t i = 0;

extern const float32_t trigger_level;

for (i; i < block_size; i++) {

(*initial_short_val) += input [ i ] / block_size *

trigger_level ;

(*initial_long_val) += input [ i ] / block_size;

}

}

/**

* @brief Run click detector algorithm to Input

* @param[in] *input points to the input buffer to be processed.

* @param[in] *click points the buffer of Clicks in which clicks

information will be stored.

* @param[in] block_size number of samples of the input vector

* @return none

*

Page 207: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

207 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* <b>Functionality of the function:</b>

* \par

* The function filters the input signal according to user's instructions

and then it is processed for the detection of

* possible clicks. A Click of predefined size is created in which click

peaks and amplitude are shown.

*/

void click_detector_f (float32_t * input, Click * click, uint16_t

block_size,uint8_t num_of_clicks_expected, uint8_t Gain){

extern uint8_t prefilter_flag;

extern uint8_t filter_flag;

extern float32_t previous_sample_lng;// This can be deleted

extern float32_t previous_sample_sh;// this can be deleted

extern uint8_t numstages_click_detector;

extern float32_t pcoeffs_click_detector;

extern float32_t p_State_click_detector;

//uint16_t real_clicks[2];

uint16_t real_clicks[num_of_clicks_expected];

volatile uint16_t num_of_clicks = 0;

float32_t abs_input[block_size];

float32_t Output[block_size];

int i = 0;

if (prefilter_flag){

// Filter

}

if (filter_flag){

arm_biquad_casd_df1_inst_f32 *S = (arm_biquad_casd_df1_inst_f32

*)malloc(sizeof(arm_biquad_casd_df1_inst_f32));

arm_biquad_cascade_df1_init_f32 ( S , numstages_click_detector ,

&pcoeffs_click_detector, &p_State_click_detector );

arm_biquad_cascade_df1_f32( S ,input, Output, block_size );

}

for(i;i< block_size;i++){

input [i] = Output[ i ];

}

// Absolute Value

arm_abs_f32 (input, &abs_input, block_size);

// Look For Clicks

look_for_clicks_f (abs_input , &real_clicks, &num_of_clicks,

&previous_sample_lng , &previous_sample_sh, block_size);

// Get Click Event

Page 208: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

208 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

get_click_f ( abs_input, click , real_clicks , num_of_clicks ,

block_size, Gain );

}

Page 209: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

209 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.8 get_click.c /*!\file get_click_f.c

\brief Generation of click events.

Source file for generation of Click Event's information.

*/

// Includes

#include <arm_math.h>

#include <lookUpTable_UD_SPL.h>

// Functions and types

/*! \struct

* Click type consists of two different parameters regarding Amplitude

and localization of a click event.

*/

typedef struct{

float32_t Value; /**< Amplitude value in Q15 format */

uint16_t Position; /**< Sample at which maximum amplitude is

located (zero-based index) */

} Click; /**< Name of the struct type */

/**

@brief Look for amplitude and position of click events

detected by look_for_clicks

@param[in] *abs_input points to input buffer. The input is

the absolute value of the original signal.

@param[in] *click points to the Output buffer buffer of type

Click.

@param[in] *real_clicks points to the vector in which

position of the first detections are stored

@param[in] num_of_clicks Size of real_clicks vector

@param[in] block_size Size of the input buffer

@return none

<b>Functionality of the function:</b>

\par

The function looks for peak values of the click event and its

position. An array of type Click with click event's

information is created.

*/

void get_click_f (float32_t * abs_input, Click * click, uint16_t

*real_clicks, uint16_t num_of_clicks, uint16_t block_size, uint8_t Gain){

uint16_t i = 0;

uint16_t j;

float32_t largest_value, largest_value_SPL;

uint16_t position = 0;

uint16_t max_position = 0;

uint16_t inner_loop_bound;

Page 210: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

210 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

extern const uint16_t max_click_length;

for (i; i < num_of_clicks; i++){

position = real_clicks[ i ];

if ( ( real_clicks [ i ] + ( max_click_length / 2 ) ) >

block_size ){

inner_loop_bound = block_size - position;

}

else{

inner_loop_bound = max_click_length / 2 ;

}

largest_value = abs_input[ position ];

for (j; j < inner_loop_bound; j++){

if(abs_input [ position + j ] >= largest_value){

largest_value = abs_input [ position + j ];

max_position = position + j;

}

}

largest_value_SPL = lookUpTable_UD_SPL( largest_value, Gain);

click[ i ].Value = largest_value_SPL;

click[ i ].Position = max_position;

j = 0;

}

}

Page 211: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

211 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

9.2.9 look_for_clicks.c /*!\file look_for_clicks.c

\brief Detection of samples above threshold and click decision.

Looks for clicks within an input signal based on the user's

defined parameters

*/

//includes

#include <arm_math.h>

#include "board.h"

/**

* @brief Apply long filter coefficients to the input signal

(sample by sample)

* @param[in] sample from the input signal to be filtered.

* @param[in] previous_sample previous output from the filter

* @param[in] long_filter_coeff 1-D array of two elements with long

filter coefficients

* @param[in] long_filter_coeff_1 1-D array of two elements with

value (1f - long_filter_coeff)

* @param[in] click_status boolean initialized to 0 and changed in

look for clicks for each input sample.

* @return none

*

* <b>Functionality of the function:</b>

* \par

* The function filters the input signal in order to get an estimation of

the background noise. This value is

* used for the comparison with the threshold value of the click

detection algorithm.

*/

void run_long_filter_f(float32_t sample, float32_t *previous_sample,

const float32_t * long_filter_coeff,const float32_t *

long_filter_coeff_1, uint8_t click_status)

{

// Set variables needed for the multiplication of fixed point

numbers

float32_t noise_level;

if (click_status == 1)

{

noise_level = ( long_filter_coeff[ 1 ] * sample ) + (

long_filter_coeff_1[ 1 ] * (*previous_sample ) );

}

if (click_status == 0)

{

noise_level = ( long_filter_coeff[ 0 ] * sample ) + (

long_filter_coeff_1[ 0 ] * (*previous_sample) ) ;

Page 212: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

212 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

Page 213: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

213 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

}

if (click_status == 0)

{

noise_level = ( long_filter_coeff[ 0 ] * sample ) + (

long_filter_coeff_1[ 0 ] * (*previous_sample) ) ;

//noise_level = ( long_filter_coeff[ 1 ] * sample ) + (

long_filter_coeff_1[ 1 ] * (*previous_sample ) );

}

(*previous_sample) = noise_level;

}

/**

* @brief Apply long filter coefficients to the input signal

(sample by sample)

* @param[in] sample from the input signal to be filtered.

* @param[in] previous_sample previous output from the filter

* @param[in] short_filter_coeff filter coefficient

* @param[in] short_filter_coeff_1 1f - short_filter_coeff

* @return none

*

* <b>Functionality of the function:</b>

* \par

* The function look for starting samples of click events and resturns an

array with the position of the starting sample

* of the click within the function

*/

void run_short_filter_f(float32_t sample, float32_t *previous_sample,

const float32_t short_filter_coeff, const float32_t short_filter_coeff_1)

{

// Set variables needed for the multiplication of fixed point numbers

float32_t signal_level;

signal_level = ( short_filter_coeff * sample ) + (

short_filter_coeff_1 * (*previous_sample) );

//noise level is in q2.46 format. Take the 15 bits to take the q15

value and

(*previous_sample) = signal_level;

}

/**

* @brief Compare S/N ratio with threshold level and set

overthreshold to 0 or 1

* @param[in] bitMap points to the Output buffer

* @param[in] bitSet Condition

* @return none

*

* <b>Functionality of the function:</b>

* \par

Page 214: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

214 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* Set overthreshold to 0 or 1 depending on the condition S/N > threshold?

*/

void SetBit_f(uint8_t *bitMap,uint8_t bitSet){

if (bitSet)

{

((*bitMap) |= 1 << 1);

}

else

{

((*bitMap) &= ~(1 << 1));

}

}

/**

* @brief Apply long filter coefficients to the input signal

(sample by sample)

* @param[in] abs_input 1-D points to the input buffer. It's the

absolute value of the original signal.

* @param[in] real_clicks 1-D points to the output buffer in which

sample number of clicks are stored.

* @param[in] num_of_clicks Number of clicks found in the signal.

* @param[in] previous_sample_lng Noise filter initial value

* @param[in] previous_sample_sh Signal filter initial value

* @param[in] block_size size of input buffer

* @return none

*

* <b>Functionality of the function:</b>

* \par

* The function filters the input signal in order to get an estimation of

the noise signal. This value is

* used for the comparison with the threshold value of the click

detection algorithm.

*/

void look_for_clicks_f(float32_t * abs_input, uint16_t * real_clicks,

uint16_t * num_of_clicks, float32_t * previous_sample_lng , float32_t *

previous_sample_sh, uint16_t block_size)

{

// Set Variables

extern float32_t trigger_level;

extern float32_t long_filter_coeff [2];

extern float32_t long_filter_coeff_1 [2];

extern float32_t short_filter_coeff;

extern float32_t short_filter_coeff_1;

extern uint16_t max_click_length;

uint16_t i = 0 ; //0

uint8_t click_status = 0;

uint8_t possible_click = 0;

uint8_t overthreshold = 0;//

Page 215: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

215 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

uint8_t theresclick = 0;

for(i;i < block_size; i++){

if ( abs_input [ i ] >= trigger_level ){

click_status = 1;

}

else{

click_status = 0;

}

// Run the filters

run_long_filter_f ( abs_input [ i ], previous_sample_lng,

long_filter_coeff, long_filter_coeff_1, click_status);

run_short_filter_f ( abs_input [ i ], previous_sample_sh,

short_filter_coeff, short_filter_coeff_1);

// Compare values with thresholdprevious_sample_sh

overthreshold = ( (*previous_sample_sh) > (

(*previous_sample_lng) * trigger_level ) );

if ( click_status == 1 ){

// The signal is overthreshold. Let's check the signal

to noise ratio

if ( overthreshold == 1 )

{

theresclick = 1;

Board_LED_Set(1, true); // A click has been

detected

if ( (*num_of_clicks) == 0)

{

real_clicks[ (*num_of_clicks) ] = i;

(*num_of_clicks) += 1;

}

if ( (*num_of_clicks) != 0)

{

possible_click = ( i - real_clicks[

(*num_of_clicks) - 1 ]) > max_click_length;

if ( possible_click )

{

real_clicks[ (*num_of_clicks) ] = i;

(*num_of_clicks) += 1;

}

}

}

}

Board_LED_Set(1,false);

}

}

Page 216: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

216 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

10 ANNEX V – WHISTLE DETECTOR CODE

10.1 STRUCTURE In Matlab we have defined a function per module, two auxiliar functions, two handle

functions, the function Whistle Detector and a script simulating how a main method works.

In the platform, the code is structured as usual in C, in two different folders. One folder

called src folder, contains the source files and the other called inc contains the header files

needed in order for the algorithm to work properly. There is a source and header file per

function in Matlab, and one for the global variables.

10.2 MATLAB CODE

10.2.1 Generate_wave %% PERIODIC WAVEFORM GENERATION WITH NOISE FUNCTION

%

% [t,s_n] = generate_wave(fs,N,f,A,P_n,t_s)

%

% This function generates different signals with period T for the

% elements of time vector t, which is obtained from the frequency 'f'. The

% function returns the vector with the signal generated and time vector,

% and plots it against temporal axis.

%

% Entry parameters:

% fs: Sampling Frequency in Hertzs

% N : Number of Samples

% f: Signal Frequency

% A: Signal Amplitude

% p_n: Percentage of Noise

% t_s: Type of Signal

%

% NOTE: This function can be extended with many more different signals as

% MATLAB provides more specific ones, and user can define its own ones, not

% being necessarily periodic.

function [t,s_n] = generate_wave(fs,N,f,A,P_n,t_s)

%% 1. DEFINITION OF VECTORS AND NOISE

%

%% 1.1. Creation of the time vector

% Period is the inverse of the frequency in Hertzs.

% Time vector has T resolution, N size, and fs.

Ts = 1/fs;

t = 0:Ts:N/fs-Ts;

%% 1.2. Noise Generation

% Percentage of Noise, p_n, multiplies Amplitude A to obtain the Noise

% Amplitude N_A for the random noise. The random number generation is used

% in order to obtain a N-size vector with random content beetween -1 and 1.

p_n = P_n/100;

N_A = p_n*A;

noise = N_A*(-1+2*rand(1,N));

Page 217: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

217 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

%

%% 2. SIGNAL SELECTION-CREATION

%

% A switch-case loop is used to select what signal is going to be returned

% by the algorithm in the out parameter s and the corresponding signal is

% created using the entry parameters properly.

switch t_s

case 1

%% 2.1. Creation of a sine wave

% Creates a sine wave of f Frenquency and A Amplitude.

s = A * sin(2*pi*f*t);

s_n = s + noise;

% figure(), hold on, title ('Sine Signal');

case 2

%% 2.2. Creation of a square wave

% Creates a square wave of f Frenquency and A Amplitude.

s = A * square(2*pi*f*t);

s_n = s + noise;

% figure(), hold on, title ('Square Signal');

case 3

%% 2.3. Creation of a triangular wave

% Creates a square wave of f Frenquency and A Amplitude.

%

% NOTE: 0.5 is the sawtooth parameter for triangular waveform, as it refers

% the scalar parameter between 0 and 1 that indicates the fraction between

% 0 and T where the maximum occurs.

s = A * sawtooth(2*pi*f*t,0.5);

s_n = s + noise;

% figure(), hold on, title ('Triangular Signal');

case 4

%% 2.4. Creation of an impulse

% Creates an impulse with A Amplitude. As impulse is only one

% value, the other N-1 samples are zero.

%

% NOTE: Frequency is not used here since it is irrelevant. Noise is not

% added because this signal is useful itself.

s = A * 1;

s_n = [s zeros(1,N-1)];

% figure(), hold on, title ('Unitary Impulse');

case 5

%% 2.5. Creation of a random signal

% Creates a random signal with A Amplitude.

s = A*(-1+2*rand(1,N));

s_n = s + noise;

% figure(), hold on, title ('Random Signal');

otherwise

%% 2.6. Display error

% Displays error in selection when Type of Signal t_s is not 1 to 4, since

% they are the codes for signals actually avaliable

s_n = 0;

disp('Error in Type of Signal Selection. Please try again')

end

Page 218: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

218 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

%% 3. SIGNAL PLOTTING

% The generated signal is plotted Amplitude against Time.

% xlabel ('Time (s)'), ylabel ('Amplitude (V)');

% plot (t,s_n), axis([0 100*Ts min(s_n) max(s_n)]), hold off;

end

10.2.2 Spectrogram_block.m %% SPECTROGRAM

%

% This function generates the spectrogram, that consists of a

% representation of the spectrum of frequencies as they vary with time. To

% do that, data is broken up into chunks which overlap between them as

% decided; then the FFT of each chunk is calculated, and the frequency

% spectrum of each chunk is represented as a vertical line in the image

% generated against time. This math tool is called STFT (Short Time Fourier

% Transform. The successive FFTs are called slices.

%

% Global parameters needed:

% OldInput: Entry Signal n-1

% fft_hop: Hop from a chunk to the next one. It coincides with the part not

overlapped.

% fft_length: Number os Samples of the FFT desired.

% next_index_to_process: Index of the first sample to process from the

% second on.

%

% Entry parameters:

% Input: Entry Signal

%

% Output parameters:

% S: Matrix with n_chunks slices with the successive FFTs of the Input.

%

% NOTE: The logic of programming has been thougth in order to be implemented

% in a microcontroller or similar hardware using C, so it considers

% always variable declaration, preallocation, and simple functions and

% loops, so it is probable that some of the proccessing could be simpler or

% more optimal in MATLAB.

function [S] = spectrogram_block(Input)

%% 1.1. GLOBAL VARIABLE DEFINITION

global BLOCK_SIZE; % Size of the input that is processable.

global OldInput; % Preceeding chunk of the entry signal.

global fft_length; % Samples of the FFT to perform.

global fft_hop; % Hop from a FFT to the next one.

global next_index_to_process; % Index to begin to process the next chunk.

%% 1.2. CONCATENATION OF THE ACTUAL INPUT AND THE OLD ONE

TempInput = zeros(1,2*BLOCK_SIZE);

TempInput = [OldInput, Input];

%% 2. STFT CALCULATION

% FFT slices calculation taking 'fft_hop' as the overlap step and

% iterating until next-to-last n_part (otherwise the loop will overflow

% as it needed more information in the signal that it has not). To limit

% this, in each iteration is checked if the chunk of the signal allows to

% obtain the corresponding slice of the FFT to perform or, on the contrary,

% it would overflow it.

Page 219: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

219 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

%

% This condition is equivalent to using the next_index_to_process, as it

% indicates the last index processable in a chunk (or the first one in the

% next), but it is not included here to check the correctness of the

% algorithm.

i = 0;

while ((i*fft_hop)+next_index_to_process+fft_length <= 2*BLOCK_SIZE)

% Calculation of the FFT in the hops that are defined.

Y =

fft(TempInput((i*fft_hop+1+next_index_to_process):(i*fft_hop+next_index_to_process)

+fft_length),fft_length);

% In C, the length of the FFT calculated is 2*fft_length, as it

% contains the real and imaginary values, and only the positive

% part of the Transform. Here it is different, since Matlab obtains

% the complex positive and negative FFT with length fft_length.

% Concatenate FFT slices.

S(i+1,:) = Y(1:fft_length/2); % Fills the matrix of the spectrogram.

i = i+1;

end

%% 3. CALCULATION OF THE NEXT INDEX TO PROCESS

% Next index to process is the index of the last sample whose FFT

% has been calculated before exiting the loop. It will be added 1 to it

% when it's used.

next_index_to_process = (i*fft_hop)+next_index_to_process-BLOCK_SIZE;

%% 4. SAVING OF THE ACTUAL INPUT IN OldInput.

% The actual Input is stored in OldInput, then in the next iteration,

% Input will be a new entry, and both will be concatenated.

OldInput = Input;

end

10.2.3 MedianFilter.m

%% MEDIAN FILTER

%

% This function calculates the median filter of the input -which is the

% output of the spectrogram-. The median filter is used to enhance tonal

% peaks by flattening the spectrum across the entire frequency range.

%

% It works with a single FFT slice at a time.

%

% For each point in the FFT data, an amount of points indicated by nFilter

% (typically 61) is taken around that point, and the median value of those

% points is found.

%

% Finally, the median value is subtracted from the original data.

%

% The reason for using the median value in spite of the mean, is that it

% gives a more robust measure of the central tendency of a distribution of

% skewed data.

%

% Global parameters needed:

% nFilter: Number of points used to calculate the median (has to be odd).

Page 220: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

220 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

%

% Entry parameters:

% Input: Signal proceeding from the spectrogram.

%

% Output parameters:

% medianSlice: Slice processed with the median filter.

%

% NOTE: The logic of programming has been thougth in order to be implemented

% in a microcontroller or similar hardware using C, so it considers

% always variable declaration, preallocation, and simple functions and

% loops, so it is probable that some of the proccessing could be simpler or

% more optimal in MATLAB.

function outputData = medianFilter (inputData)

%% 1. VARIABLE DEFINITION

global nFilter;

N = nFilter; %N = 61 by default (N has to be odd).

k = 0;

arg = 0;

index = 0;

k = 0;

kmin = 0;

imin = 0;

xNew = 0;

% The median filter needs the absolute value of the complex number of the

% FFT data.

medData = abs(inputData);

L = length(medData); % L is the length of the FFT slice

(fft_length/2).

outputMedian = zeros(1,length(medData)); % Preallocates the input vector.

outputData = zeros(1,length(medData)); % Preallocates the output vector.

%% 2. INITIALIZATION OF PARAMETERS.

% If N is even (the division of N is 0), changes N to the superior odd.

% value.

if (mod(N,2) == 0)

N = N + 1;

end

% arg; index; k; kmin; imin; xNew;

L_Z = (N - 1) / 2; % l_Z is half the order of the filter (e.g. 30 if N = 61).

L_indices = N + 2; % L_indices is the next odd to N (e.g. 63 if N = 61).

L_xsrt = N + 2; % L_xsrt is the next odd to N.

L_x = 2 * L_Z + L; % L_x is 60 + 512 + 1 = 573

% Until not needed in Matlab, preallocates arrays to simulate C code.

indices = zeros(1,L_indices); % Int vector with default length 63

xsrt = zeros(1,L_xsrt); % Double vector with default length 63. It stores the

median result.

x = zeros(1,L_x); % Double vector with default length 1084.

%% FILLING THE DATA ARRAY.

% This creates an array with L_Z (30) zeros, then the data, and then other L_Z

zeros (30)

for k = 1:L

x(k+L_Z) = medData(k);

end

% don't pad with zeros. Pad with the beginning and end of the real data

% so that the first and last bins get something sensible.

Page 221: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

221 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% Introduces the first 30 input values in the 30 first positions of the

% array, and the last 30 values of the input at the end.

for k = 1:L_Z

x(k) = medData(k);

x(L_x-k+1) = medData(L-k+1);

end

for k = 1:N

% Define the initial indices in an array that contains the number of its

% positions, and a zero in the last value.

indices(k) = k;

% Repeats the 30 first values of x (the input) twice, and then a zero.

xsrt(k) = x(k);

end

%% ORDERING THE ARRAY.

% Orders the array xsrt in descending order using the function swap. As the

% array contains the input, then the data and then the output, the first

% iteration will result the data repeated

[xsrt, indices] = bubble(xsrt, N, indices);

% first median output

outputMedian(1) = xsrt(L_Z+1);

%% LOOPING OVER REMAINING SAMPLES.

for n = 2:L

% New Sample

arg = n+N-1; %n + 60

xNew = x(arg);

% find first value in the sorted list bigger than the new sample

for k = 1:N+1

if (xsrt(k) < xNew)

break;

end

end

index = k;

% Insert new value at the correct location

% First - shift sorted elements up one

for k = (N):-1:(index)

xsrt(k+1)=xsrt(k);

indices(k+1)=indices(k);

end

% Second - insert new value

xsrt(index)=xNew;

indices(index)=arg;

% Find oldest value in sorted list

kmin=1;

imin=indices(1);

for k = 2:(N+1)

if (imin > indices(k))

kmin = k;

imin = indices(k);

end

end

% Delete oldest value - shift values down overwritting old value

for k = (kmin+1):(N+1)

xsrt(k-1)=xsrt(k);

indices(k-1)=indices(k);

end

Page 222: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

222 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% Output median

outputMedian(n)=xsrt(L_Z+1);

end

%% DIVIDING THE DATA BY THE MEDIAN CALCULATED.

% This prevents the result to give NaN when dividing by zero. It improves the time

consumption.

if outputMedian ~= 0

outputData = medData./outputMedian;

else

outputData = zeros(1,length(medData)); % It gives zeros in spite of */0 = NaN.

end

end

10.2.3.1 0.1 Bubble.m %% BUBBLE AUXILIAR FUNCTION % Orders the numbers from greater to smaller. function [x , y] = bubble(x,L,y) flag = 1; % Represents true. while (flag) flag = 0; % Represents false for n = 2:L if (x(n)>x(n-1)) % Using > they are ordered in descendant order

and vice versa. x = swap(x, n-1, n); y = swap(y, n-1, n); flag = 1; end end end end %end bubble

10.2.3.2 0.2 Swap.m

function arr = swap(arr,pos1,pos2) temp = arr(pos1); arr(pos1) = arr(pos2); arr(pos2) = temp; end

10.2.4 AverageSubtraction.m

%% AVERAGE SUBTRACTION

% This function uses the Running Average background removal to supress the

% tones in the spectrogram. It calculates the decay average and then

% subtracts it to the Median Filter output.

function [sliceAverageSubtraction] = averageSubtraction(sliceMedianFilter)

global LastAverageSample

global updateConstant

sliceAverageSubtraction = zeros(1,length(sliceMedianFilter));

b = 0;

for i = 1:length(sliceMedianFilter)

Page 223: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

223 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% The Median Filter Output has to be in logarithmic scale to apply

% the AverageSubtraction Filter.

if sliceMedianFilter(i) ~= 0

sliceMedianLog = log10(abs(sliceMedianFilter(i)));

else

sliceMedianLog = log10(10e-100);

end

% The result of the AverageSubtraction Filter is subtracted from

% the Median Filter Output in log scale. ( ly'(n)=ly(n)-b(n-1) )

sliceAverageLog = sliceMedianLog-LastAverageSample;

% The AverageSubtraction sample is calculated by mean of the

% updateConstant factor (also called alpha).

% ( b(n) = a*ly(n) + (1-a)*b(n-1) )

b = updateConstant*sliceMedianLog + (1-updateConstant)*LastAverageSample;

% % % Prevents LastAverageSample from being NaN and then crash the

% % % algorithm, mantaining its value when this occurs.

% % if isnan(b) == 0

LastAverageSample = b;

% % end;

% Transforms again the output in linear scale.

sliceAverageSubtraction(i) = 10^sliceAverageLog;

end

end

10.2.5 Thresholding.m

%% THRESHOLDING

% This function uses a user-defined threshold to make zero every sample

% under it. By default, Threshold is 8 dB. As threshold is defined in dBs,

% the thresholding operation is done in logarithmic scale.

%

% Global parameters needed:

% Threshold: Level where the signal below it is made zero and the signal

% above it is made one.

%

% Entry parameters:

% Input: Signal proceeding from Noise Reduction (or raw, if NR is

% disabled).

%

% Output parameters:

% sliceThresholding: Data thresholded in 1s and 0s.

%

% NOTE: The logic of programming has been thougth in order to be implemented

% in a microcontroller or similar hardware using C, so it considers

% always variable declaration, preallocation, and simple functions and

% loops, so it is probable that some of the proccessing could be simpler or

% more optimal in MATLAB.

function [sliceThresholding] = thresholding(sliceInput)

%% 1.1. GLOBAL VARIABLE DEFINITION

global Threshold;

%% 1.2. VARIABLE INITIALIZATION

% Preallocation of sliceThresholding array.

sliceThresholding = zeros(1,length(sliceInput));

% Loop for filling the Thresholding Slice.

for i=1:length(sliceInput)

Page 224: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

224 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% If the value in dBs of the input is less or equal than the Threshold,

% then makes it zero.

if (10*log10(sliceInput(i)) <= Threshold)

sliceThresholding(i) = 0;

% Else the Thresholding slice is equal to the input.

else

sliceThresholding(i) = 1;

%sliceBinThresholding(i) = sliceInput(i);

end

end

end

10.2.6 ConnectingRegions.m

%% CONNECTING REGIONS

% Detects if the pixels over threshold are in touch with other ones,

% creating Regions and connecting among them in order to calculate how many

% Regions are in the thresholded spectrogram. Then, they are discrimined

% and only the Regions that conforms determined requirements are considered

% as results of the algorithm.

%

% Global parameters needed:

% ConnectionType: Type of connection; connect-4 or connect-8. Decides if

% the pixels at the four sides of the actual one are considered in the same

% region or the pixels at the sides and at the cornerst.

% MinLength: Minimum length in slices to consider a Region as a result.

% MinTotalSize: Minimum number of pixels in a Region to consider it a

% result.

% minPix: Minimum position in the slice (minimum row) of the pixels to

% consider.

% maxPix: Maximum position in the slice (minimum row) of the pixels to

% consider.

% LastSlice: Data in the last slice processed.

% nSlice: Number of the actual slice.

% RegionArray: Array with the Regions obtained by connecting pixels.

% Nreg: Number of the next new Region to create.

% ConnectedRegions: Array with rhe Regions considered result.

% RegsCon: Number of the next Region to connect (similar as Nreg).

% lengthRegs: Length of the slice to analyze.

%

% Entry parameters:

% Input: Signal proceeding from the spectrogram.

%

% Output parameters:

% nWhistles: Number of whistles obtained.

% sliceRegions: Slice with the numbers of the Regions.

%

% NOTE: The logic of programming has been thougth in order to be implemented

% in a microcontroller or similar hardware using C, so it considers

% always variable declaration, preallocation, and simple functions and

% loops, so it is probable that some of the proccessing could be simpler or

% more optimal in MATLAB.

function [nWhistles,sliceRegions] = ConnectingRegions(InputSlice)

%% 1.1. DEFINITION OF GLOBAL PARAMETERS

global ConnectionType

global MinLength

global MinTotalSize

global minPix

global maxPix

Page 225: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

225 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

global LastSlice

global nSlice

global RegionArray

global Nreg

global ConnectedRegions

global RegsCon

global lengthRegs

%% 1.2. CONCATENATION OF THE ACTUAL INPUT AND THE OLD ONE

% The old slice is put next to the actual input slice. Zeros are put in the

% first position in order to watch the preceeding pixel from the second and

% on.

ActualSlices = zeros(2,lengthRegs+1);

ActualSlices = [0 LastSlice; 0 InputSlice]; %InputSlice(minPix:maxPix)

%% 2. LOOP FOR ANALYZING THE SLICES

% Proccess one slice.

nSlice = nSlice + 1;

% A slice is analyzed , studying the state of each pixel, from the first

% pixel obtained from the minimum frequency to the last one, obtained from

% the maximum frequency.

for i = minPix+1:maxPix+1;

% The slice is analyzed if ConnectionType is 4 or 8. A different

% value shows an error.

if ConnectionType == 4 || 8

if ActualSlices(2,i) ~= 0 %&& i-1>= minPix && i-1<=maxPix % If this pixel is

different to zero.

% If the pixel next to the actual pixel is also different to zero,

% this pixel is added to the Region of the other one.

if ActualSlices(1,i) ~= 0 % If the pixel next to this is also different to

zero.

AddPixel(RegionArray(ActualSlices(1,i)), Pixel(nSlice,i-1)); % Pixel

addition to Region.

ActualSlices(2,i) = ActualSlices(1,i); % Pixel Labeling.

end

% If the preceeding pixel is not zero and its Region is

% different from the Region this pixel belongs to.

if (ActualSlices (2,i-1) ~= 0) && (ActualSlices(2,i) ~= ActualSlices(2,i-1))

% If the pixel next to the actual pixel is also different

% to zero, it is left in the Region it belongs to. If

% not, the actual pixel is added to the Region of the

% preceeding pixel.

% In this case it's not possible to merge the

% Regions, although necccesary, because both Regions

% are growing and some Pixels are goig to be left

% behind or added to the wrong Region. So the

% connection is marked in the property isConnected, to

% be merged qhen both Regions are finished.

% If the Pixel next to the actual pixel is zero, then

% the actual pixel is included in the Region of the

% preceeding pixel.

if (ActualSlices(1,i) == 0)

AddPixel(RegionArray(ActualSlices(2,i-1)), Pixel(nSlice, i-1)); %

Inclusion in the preceeding Region

ActualSlices(2,i) = ActualSlices(2,i-1); % Pixel Labeling.

Page 226: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

226 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% If the pixel next to the actual pixel is not zero,

% then the actual pixel is yet included in its Region,

% so the Region of the preceeding pixel is marked as

% connected with this one, and vice versa.

else

ConnectRegions(RegionArray(ActualSlices(2,i-1)), ActualSlices(2,i));

ConnectRegions(RegionArray(ActualSlices(2,i)), ActualSlices(2,i-1));

end

end

% If the pixel next to the actual one and the preceeding

% one are both zero, then this is potentially a new Region.

% However, it may be a single pixel. It is checked if there

% is an immediate Region to be added. If not, a new Region

% is created.

if (ActualSlices(1,i)== 0) && (ActualSlices(2,i-1)==0)

if i<lengthRegs+1

if (ActualSlices(1,i+1) ~= 0) && (ActualSlices(2,i+1) ~= 0)

AddPixel(RegionArray(ActualSlices(1,i+1)), Pixel(nSlice, i-1));

ActualSlices(2,i) = ActualSlices (1,i+1);

else

RegionArray(Nreg) = Region(Pixel(nSlice,i-1)); % New Region.

RegionArray(Nreg).reg_id = Nreg; % Region identification.

ActualSlices(2,i) = Nreg; % Pixel labeling.

Nreg = Nreg + 1; % Region counter increased.

end

else

RegionArray(Nreg) = Region(Pixel(nSlice,i-1)); % New Region.

RegionArray(Nreg).reg_id = Nreg; % Region identification.

ActualSlices(2,i) = Nreg; % Pixel labeling.

Nreg = Nreg + 1; % Region counter increased.

end

end

if ConnectionType == 8

% CONNECT-8 CODE

if (ActualSlices(1,i-1) ~= 0) && (ActualSlices(2,i) ~= ActualSlices(1,i-

1)) % Si el diagonal no es cero y no es el mismo que el que miro.

if ActualSlices(2,i) ~= 1

ConnectRegions(RegionArray(ActualSlices(2,i)), ActualSlices(1,i-

1));

ConnectRegions(RegionArray(ActualSlices(1,i-1)),

ActualSlices(2,i));

else

AddPixel(RegionArray(ActualSlices(1,i-1)),Pixel(nSlice,i-1));

ActualSlices(2,i) = ActualSlices(1,i-1);

end

end

if i<=lengthRegs

if ActualSlices(1,i+1) ~= 0 && (ActualSlices(2,i) ~=

ActualSlices(1,i+1)) % Si el diagonal no es cero, y no es el mismo que el que miro.

if ActualSlices(2,i) ~= 1

ConnectRegions(RegionArray(ActualSlices(2,i)),

ActualSlices(1,i+1));

ConnectRegions(RegionArray(ActualSlices(1,i+1)),

ActualSlices(2,i));

else

AddPixel(RegionArray(ActualSlices(1,i+1)),Pixel(nSlice,i-1));

ActualSlices(2,i) = ActualSlices(1,i+1);

end

end

end

end

Page 227: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

227 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

end % if ActualSlices(2,i) ~= 0

else

disp('Error. Type of connection not correct.');

end

end % i=2:fft_length/2+1

LastSlice = ActualSlices(2,2:length(ActualSlices));

sliceRegions = LastSlice;

nWhistles = length(ConnectedRegions);

%% 3. MERGE CONNECTED REGIONS AND FINISH THEM

for i = 1: length(RegionArray) % ArrayRegion is looked down.

m = i; % m is the counter for the Region to connect. By default is i, but it may

change.

if RegionArray(i).isDead ~= 1 %All it is done if the Region is not Dead.

% FINISHING REGIONS

% The preceeding slice is analyzed to finish the Regions which

% pixels were not connected. The condition is that the Region had

% passed a slice without growing up.

if RegionArray(i).lastSlice < nSlice

FinishRegion(RegionArray(i));

end

% If the Region is yet finished, its connections are explored in

% order to merge both Regions.

if RegionArray(i).isGrowing == 0;

% If there are connections to perform

if RegionArray(i).isConnected ~= 0

% BREAKPOINT TO SEE THE CONNECTION

Connections = length(RegionArray(i).isConnected); % Number of connections

% Loop to look in the connection list, reducing the number of

% connections when one of them is done.

isMerged = [];

MergedWith = [];

k = 1;

while k <= Connections % Advance in the connections.

% If one of the regions has not pixels in it, don't do

% nothing.

if RegionArray(i).totalPixels ~= 0 &&

RegionArray(RegionArray(i).isConnected(k)).totalPixels ~= 0

% If the Region that it is wanted to connect to the

% actual Region is finished, continues merging both

% regions, else doesn't do it, as this Region has to

% continue growing.

if RegionArray(RegionArray(i).isConnected(k)).isGrowing == 0

% The number of slices and the total number of

% pixels are limiting parameters in order to

% merge the regions. If both are over the corresponding

% entry parameter, the regions can be merged.

% if ( RegionArray(i).totalPixels +

RegionArray(RegionArray(i).isConnected(k)).totalPixels >= MinTotalSize ) && (totalSlices >=

MinLength)

% It is created an array with the connections

Page 228: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

228 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% of both Regions in order to mantain the

% actual connections.

ConnectionsLeft = [RegionArray(i).isConnected;

RegionArray(RegionArray(i).isConnected(k)).isConnected];

% The Regions that are being connected are

% stored in an array.

NotThisConnection = [i RegionArray(i).isConnected(k)];

% The Regions are stored in the RegionArray in

% order to continue being connected if they

% needed.

% It is checked which of the Regions is

% the first one to store the result

% there.

One = i;

Other = RegionArray(i).isConnected(k);

if i <(RegionArray(i).isConnected(k))

m = i;

else

m = RegionArray(i).isConnected(k);

end

MergeRegions(RegionArray(m), RegionArray(i),

RegionArray(RegionArray(i).isConnected(k)));

% If there are no more connections to perform,

% then stores the region in the

% ConnectedRegion array. If there are connections

% left, they are included in the Region.

for n=1:length(ConnectionsLeft(:,1))

% The connections that are being connected

% are avoided.

if (ConnectionsLeft(n,1) ~= NotThisConnection(1))

&& (ConnectionsLeft(n,1) ~= NotThisConnection(2))

% The new Region is marked with the

% connections it had before.

ConnectRegions(RegionArray(m),

ConnectionsLeft(n,1));

% BREAKPOINT TO SEE

% CONNECTED REGIONS

end

end

% It is watched each Region

% connected to the Merged

% one to see if it is connected to a Region that has

changed

% and then indicate

% the new Region to

% connect in its place.

for q = 1:length(RegionArray(m).isConnected)

if RegionArray(m).isConnected(q,1) ~= 0

if

RegionArray(RegionArray(m).isConnected(q,1)).isConnected ~= 0

for r =

1:length(RegionArray(RegionArray(m).isConnected(q,1)).isConnected)

if

(RegionArray(RegionArray(m).isConnected(q,1)).isConnected(r) == One) ||

(RegionArray(RegionArray(m).isConnected(q,1)).isConnected(r) == Other)

RegionArray(RegionArray(m).isConnected(q,1)).isConnected(r) = m;

Page 229: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

229 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

end

end

end

end

end

end

end

% Last connection is actualized, as the array has changed.

Connections = length(RegionArray(i).isConnected);

k = k+1;

end

end % if isempty(RegionArray(i).isConnected) ~= 1;

% If there are no connections and the Region parameters are right

% then stores it as a result. AND THE REGION IS NOT YET

% STORED AS CONNECTED.

if (RegionArray(m).isConnected(1) == 0) && RegionArray(m).totalPixels >=

MinTotalSize && ( RegionArray(m).lastSlice - RegionArray(i).firstSlice + 1) >= MinLength % El

+1 es fruto de mucho dar vueltas, porque si la primera y la últioma coinciden dice que es 0 yu

eso es falso.

isInConnected = 0;

for p = 1:length(ConnectedRegions)

if ConnectedRegions(p).reg_id == i

isInConnected = 1;

end

end

if isInConnected == 0

RegsCon = RegsCon + 1;

ConnectedRegions(RegsCon) = RegionArray(m); %Saves the Region as

Connected.

end

end

end % if RegionArray(i).isDead ~= 1;

end % for i = 1: length(RegionArray)

end

end

10.2.6.1 0.1 Pixel.m

classdef Pixel

properties %(Access=protected) row; column; % position; % reg_id; end

methods

function P = Pixel(row,column)

P.row = row; P.column = column;

Page 230: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

230 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% P.position = [row column]; % P.reg_id = reg_id; end

end end

10.2.6.2 0.2 Region.m %% CLASS REGION

%

% This class defines the object Region by mean of MATLAB handle. Regions

% are used to contain pixels of the thresholded signal, and conforms the

% potential whistles detected.

%

% Properties

% ==========

% PixelsInReg: Pixel array.

% totalPixels: Numer of total pixels contained in PixelsInReg.

% firstSlice: First slice whose pixels have been included in the Region.

% lastSlice: Last slice whose pixels have been included in the Region.

% isConnected: Array which contains the reg_id of the Regions that are connected to

this Region.

% isGrowing: boolean (0,1) that indicates if the Region accepts more Pixels or not.

% isDead: boolean (0,1) that marks the Region as unexistent when it is merged with

other one.

% reg_id: Number that identificates in a univocal way the Region. It coincides with

the index of the RegionArray of ConnectingRegions.

%

classdef Region < handle

properties

PixelsInReg;

totalPixels;

firstSlice;

lastSlice;

% initialFreq;

% finalFreq;

% initialTime;

% FinalTime;

% minFreq;

% maxFreq;

isConnected;

isGrowing;

isDead;

reg_id;

end

methods

%% REGION

% Region Constructor.

function R = Region(pixel)

R.totalPixels = 0;

R.isConnected = 0;

R.isGrowing = 1;

R.isDead = 0;

R.reg_id = 0;

if nargin > 0 % To allow empty constructor in order to create arrays.

R.PixelsInReg = pixel;

% R.totalPixels = length(R.PixelsInReg);

R.totalPixels = 1;

R.firstSlice = pixel.row;

R.lastSlice = pixel.row;

end

Page 231: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

231 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

end

%% ADD PIXEL

% Adds a Pixel (it could be an array of Pixels but it isn't used

% that way).

%

% Input parameters:

%

% R: The Region where we want to add a Pixel.

% pixel: The Pixel we want to add to the Region R.

%

function AddPixel(R,pixel)

if R.isGrowing == 1 % Checks if the Region can grow.

% If there are other pixels yet, the next pixel in the

% array PixelsInReg is the Pixel pixel, and totalPixels

% grows in 1.

if R.totalPixels ~= 0

R.PixelsInReg(length(R.PixelsInReg) + 1) = pixel;

R.totalPixels = R.totalPixels + 1;

else % If this is the first pixel (not used).

R.PixelsInReg = pixel;

R.totalPixels = 1;

end

% The Region is marked as growing

R.isGrowing = 1;

R.lastSlice = pixel.row;

else % Displays an error if the Region cannot grow.

R.lastSlice = pixel.row;

disp('Error. La región no puede crecer.');

end

end

%% MERGE REGIONS

% Merges two different Regions in one. It is supported by some code

% in ConnectingRegions for the mantaining of the Connections.

%

% Input parameters:

%

% RT: Destiny Region (can be or not one of the two Regions merged.

% In ConnectingRegions is always one of them.

% R1: One of the two Regions to merge.

% R2: The other Region to merge.

%

function MergeRegions (RT,R1,R2)

RT.PixelsInReg = [R1.PixelsInReg R2.PixelsInReg];

RT.totalPixels = R1.totalPixels + R2.totalPixels;

% Region first slice has to be the first slice of the first

% Region.

if (R1.firstSlice < R2.firstSlice)

RT.firstSlice = R1.firstSlice;

else

RT.firstSlice = R2.firstSlice;

end

% Region last slice has to be the last slice of the last

% Region.

if (R1.lastSlice < R2.lastSlice)

RT.lastSlice = R2.lastSlice;

else

RT.lastSlice = R1.lastSlice;

end

Page 232: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

232 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% The connections are rebooted (they are filled in

% ConnectingRegions).

RT.isConnected = 0;

% The Region is marked as not growing.

RT.isGrowing = 0;

%

if R1.reg_id < R2.reg_id

RT.reg_id = R1.reg_id;

else

RT.reg_id = R2.reg_id;

end

% Deletes the Region/s which is/are not the destiny Region.

if R1 ~= RT

EmptyRegion(R1);

else if R2 ~= RT

EmptyRegion(R2);

end

end

end

%% EMPTY REGIONS

% As the Regions in ConnectingRegions are stored in an array, it is

% not possible to totally delete a position of it, and the reg_id

% is univocal, so this method clears the Pixels in the Region, the

% connections and is marked as Dead.

function EmptyRegion(R)

R.PixelsInReg = [];

R.totalPixels = 0;

R.isConnected = 0;

% delete(R);

R.isDead = 1;

end

%% CONNECTREGIONS

% This method is needed because it is not possible to merge the

% Regions always when one is touching other one. So it includes a

% Region as a connection of other Region to indicate that they are

% connected (and later this connections will be used to merge the

% Regions).

function ConnectRegions(R, connection)

% If the Region is not connected, the connection is directly

% the new connection.

if R.isConnected == 0

R.isConnected = connection;

else % If there are other connections.

% Checks if the connection is yet in isConnected array to

% avoid a repetition.

YetConnected = 0;

for i = 1:length(R.isConnected)

if R.isConnected(i) == connection

YetConnected = 1;

end

end

% If the connection is not in the isConnected array, it is

% included in the next empty position of it.

if YetConnected ~=1

R.isConnected(length(R.isConnected)+1,1) = connection;

Page 233: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

233 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

end

end

end

%% FINISH REGION

% This method marks the Region as not growing.

function FinishRegion(R)

R.isGrowing = 0;

end

end

end

10.3 WHISTLEDETECTOR.M

%% WHISTLE DETECTOR FUNCTION

% This contains the functionality of the PamGuard WhistleAndMoans

% (WhistleDetector in older versions), which is capable to detect how many

% 'whistles' are in a sound signal by mean of its spectrogram and a DSP

% over it. This DSP includes an important noise filtering part, a

% thresholding and a connecting regions part. Ecah one of them is a

% different function that is explained within.

function [Output, nWhistles] = whistleDetector (Input)

%% Definition of global variables

% General

global BLOCK_SIZE;

% Spectrogram

global fft_length;

global fft_hop;

global next_index_to_process;

%global OldInput;

global n_slices;

% Median Filter

%global nFilter;

% %Average Subtraction

% global updateConstant;

% global LastAverageSample

% Threshold

%global Threshold;

% Connecting Regions

global nSlice;

global nWhistles;

%% PARTS CALCULATION

% Calculation of how many chunks compone the spectrogram when the

% defined overlapping is used.

%

% We have to predict the number of parts that the algorithm generates, so

% we are going to use the most limiting parameter; the right limit of the

% last part in the FFT overlapping, going through the signal until we are

% sure what is the last part of the signal which FFT we can calculate.

max_n_slices = floor((BLOCK_SIZE*2-next_index_to_process)/fft_hop); % Maximum

number of parts obtainable.

Page 234: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

234 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

n_slices = max_n_slices; % Number por parts is, at most, this value.

% Detects the last sample needed to perform the last FFT. If it is larger

% than the number of samples N, the number of parts estimated is reduced,

% until it is lower than the number of samples N, and then exits the loop.

while n_slices>1

N_dim = ((n_slices-1)*fft_hop)+fft_length+next_index_to_process;

if N_dim <= 2*BLOCK_SIZE

break;

end

n_slices = n_slices-1;

end

%% Initialization of the Spectrogram Matrix

% This is not needed in Matlab, but represents the same initialization

% that is done in C.

arraySlices_spec = zeros(fft_length/2,n_slices);

%% Call to the spectrogram function

[arraySlices_spec] = spectrogram_block(Input);

%% Loop for the rest of the algorithm

% As spectrogram is the more limiting block of the algorithm, it requires

% the rest of them put together in a loop, working with one slice in each

% iteration.

% Initialization of the temporal output.

% output_temp = zeros(n_slices-1,fft_length/2);

output_temp = [];

for i = 1:length(arraySlices_spec(:,1)) % number of chunks/slices.

sliceSpectrogram = arraySlices_spec(i,:);

%% Median Filter

sliceMedianFilter = medianFilter(sliceSpectrogram

%% Average Subtraction

sliceAverageSubtraction = averageSubtraction(sliceMedianFilter);

%%Thresholding

[sliceThresholding] = thresholding(sliceAverageSubtraction);

if nSlice > n_slices

[nWhistles, sliceRegions] = ConnectingRegions(sliceThresholding);

else

sliceRegions = zeros (1,fft_length/2);

nSlice = nSlice + 1;

end

% The Output concatenates the last output and the rest of them in a matrix

% of slices. sliceMedianFilter sliceSpectrogram

% sliceAverageSubtraction sliceThresholding

%output_temp(i,:) = sliceThresholding(1:fft_length/2);

% output_temp = [output_temp; sliceSpectrogram(1:fft_length/2)];

% output_temp = [output_temp; sliceMedianFilter(1:fft_length/2)];

% output_temp = [output_temp; sliceAverageSubtraction(1:fft_length/2)];

output_temp = [output_temp; sliceThresholding(1:fft_length/2)];

% output_temp = [output_temp; sliceRegions(1:fft_length/2)];

Page 235: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

235 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

end

% The final Output is the result of the temporal one at the end of the

% loop.

Output = output_temp;

end

10.3.1 MainWhistleDetector.m

clc, clear all, close all;

%% MAIN WHISTLE DETECTOR

% This is the 'main method' for WhistleDetector algorithm, in which the

% function WhistleDetector is called iterativelly to simulate its execution

% in Cortex M4 microcontroller (which is programmed in C).

%

% It includes global variables, the entry signal generation, the signal

% partition in blocks (to simulate the behaviour in C), the main call to

% WhistleDetector and the graphic representation.

%% VARIABLE DECLARATION

% General

global BLOCK_SIZE;

global n_slices;

global fft_length;

global fft_hop;

global OldInput;

global next_index_to_process;

global nFilter;

global LastAverageSample;

global updateConstant;

global Threshold;

global ConnectionType;

global MinLength;

global MinTotalSize;

global minFreq;

global maxFreq

global LastSlice;

global nSlice;

global Nreg;

global RegionArray;

global ConnectedRegions;

global RegsCon;

global maxPix;

global minPix;

global lengthRegs;

OldInput = zeros(1,BLOCK_SIZE); %Not recommended in Matlab, but simulates the

preallocation in C.

%% SIGNAL GENERATION

% Using generate_wave function

fs = 48000; % Sampling Frequency

N = 90000; % Number of samples

Page 236: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

236 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

P_n = 0; % Percentage of noise

t_s = 2; % Sine wave

%[t,signal1] = generate_wave(fs,N,8e3,0.001,P_n,1);

[t,signal2] = generate_wave(fs,N,5e3,0.0005,P_n,1);

%[t,signal3] = generate_wave(fs,N,20e3,0.001,P_n,1);

signal2(1:10000)=0;

signal2(70000:end)=0;

%signal=signal1+signal2+signal3;

signal = signal2;

%% READING OF A REAL WHISTLE

% [whistle,fd] = audioread('whistles.wav',[1 90000]);

% % norm = max(whistle(:,1));

% whistle = whistle(:,1)';%./norm;

%

%whistle = 10*[zeros(1,23800) whistle' zeros(1,10000)];

% save('whistle.mat','whistle')

load('whistle.mat');

%% ADDITION OF THE WHISTLE TO THE INPUT SIGNAL

% signal = whistle;

signal = signal + whistle;

audiowrite('whistletone.wav',signal,fs);

%

%% SIGNAL PARTITION

% The Input signal is divided into parts with length BLOCK_SIZE, to

% simulate how the Input enters in the algorithm in C.

Input = []; % Preallocates Input

BLOCK_SIZE = 1024; % Gives a size to BLOCK_SIZE

for i=1:BLOCK_SIZE:length(signal)-BLOCK_SIZE

Input = [Input; signal(i:i+BLOCK_SIZE-1)];

end

%% VARIABLE DEFINITION

% Spectrogram

%BLOCK_SIZE = 1024;

fft_length = 512;

fft_hop = 128;

next_index_to_process = 0;

OldInput = zeros(1,BLOCK_SIZE);

% Median Filter

nFilter = 61;

% Average Subtraction

LastAverageSample = 0;

updateConstant = 0.02;

% Threshold

Threshold = 5; % dB

% Connecting Regions

ConnectionType = 8;

MinLength = 5; %53 ms

MinTotalSize = 10;

minFreq = 10e3;

maxFreq = 15e3;

RegionArray = Region(Pixel(0,0));

ConnectedRegions = Region(Pixel(0,0));

RegsCon = 0;

Nreg = 1;

Page 237: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

237 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

nSlice = 1;

% Frequency Vector.

f = 0:fs/(fft_length/2):fs-1;

f=f/(2e3);

%% CALCULATION OF THE MAXIMUM AND MINIMUM PIXEL

for p = 1:length(f)

if f(p) <= minFreq/1e3

minPix = p;

end

if f(p) <= maxFreq/1e3

maxPix = p;

end

end

lengthRegs = maxPix-minPix+1;

LastSlice = zeros(1,fft_length/2);

%% ITERATIVE CALL TO WHISTLE DETECTOR

% It simulates the Real-Time calling in C.

OutputT = [];

tsT = [];

tsplus = 0;

for i=1:length(Input(:,1))

[Output, nWhistles] = whistleDetector(Input(i,:)); %Output is increased

successively.

% The first and second Output are ignored, as they proceed from the Spectrogram

% with zeros from the first LastInput, and its FFT is not a valid

% result, and there is no information loss.

if i>2

OutputT = [OutputT; Output];

end

%% AXISES DEFINITION AND GRAPHIC PLOTTING(ONLY FOR DEBUG)

% This is not needed in C, but it is included here in order to debugging

% process.

% Each value in the matrix defines a color, resulting from bilinear

% interpolation of the color as its four vertices. The smallest and largest

% elements of s are assigned the first and last colors of the color table.

% GRAPHIC PLOTTING OF THE SPECTROGRAM OF EACH SLICE

if i>2 % to avoid blank signal from the first output

% Temporal step, time and frequency axis.

%Ts = 2*BLOCK_SIZE/fs/(length(Output(:,1)));

Ts = 2*BLOCK_SIZE/fs/(length(Output(:,1)));

ts = (0:Ts:2*BLOCK_SIZE/fs-Ts)+tsplus;

% f = 0:fs/(fft_length/2):fs-1;

% f=f/(2e3);

tsplus = ts(length(ts));

% % % Graphic succesive representation.

% % figure(1);

% % pcolor(ts,f,abs(Output')), shading interp;

% GRAPHIC PLOTTING OF THE FINAL SPECTROGRAM

Page 238: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

238 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

% Temporal step, time and frequency axis.

%TsT = BLOCK_SIZE/fs/(length(OutputT(:,1)));

TsT = Ts;

%tsT = 0:TsT:(i-1)*BLOCK_SIZE/fs-TsT;

tsT = [tsT ts];

% fT = 0:fs/(fft_length/2):fs-1;

% fT=fT/(2e3);

% Graphic final representation.

figure(2);

pcolor(tsT,f,abs(OutputT')), shading interp;

end

pause(0.1);

end

% % figure(1),title('Successive Spectrogram of the signal x(t)');

% % xlabel('Time (s)'), ylabel('Frequency (kHz)');

figure(2),title('Final Spectrogram of the signal x(t)');

xlabel('Time (s)'), ylabel('Frequency (kHz)');

% figure();

% pcolor(ts,f,abs(Output')), shading interp;

Page 239: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

239 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

10.4 PLATFORM CODE

10.4.1 Spectrogram.h /*

* spectrogram_f.h

*

* Created on: 21/12/2015

* Author: jmteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_SPECTROGRAM_F_H_

#define WHISTLE_DETECTOR_F_INC_SPECTROGRAM_F_H_

# include <arm_math.h>

# include <inputMatlab_fp.h>

# include "fft_f.h"

# include "globals.h"

//void spectrogram_f (float32_t *Input, float32_t *OldInput, uint16_t fft_hop,

uint16_t fft_length, uint16_t fft_nexthop, float32_t *Output[]);

void spectrogram_f (float32_t *Input, float32_t **Output);

#endif /* WHISTLE_DETECTOR_F_INC_SPECTROGRAM_F_H_ */

10.4.2 Spectrogram.c

/*!\file spectrogram_f.c

\brief Calculation of the spectrogram.

*/

// Includes

# include "spectrogram_f.h"

/**

@brief Obtains the spectrogram of the Input.

@param[in] *Input Data block which spectrogram has to be calculated

@param[extern] *OldInput Input[n-1] needed to concatenate results by mean of

the fft_hop.

@param[extern] fft_hop Hop from a Input chunk to the next one. It coincides

with the part not overlapped.

@param[extern] fft_length Number of samples of the FFT to calculate.

@param[extern] next_index_to_process Index of the first sample to

calculate the next spectrogram.

@param[out] *Output Matrix with the successive slices obtained.

@return none

<b>Functionality of the function:</b>

\par

This function generates the spectrogram, that consists of a representation of the

spectrum of frequencies

as they vary with time. To do that, data is broken up into chunks which overlap

between them as decided;

then the FFT of each chunk is calculated generating successive slices. This math

tool is called STFT

(Short Time Fourier Transform).

*/

//void spectrogram_f (float32_t *Input, uint16_t fft_hop, uint16_t fft_length,

void spectrogram_f (float32_t *Input, float32_t **Output){

Page 240: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

240 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

// Buffers for the algorithm resolution.

float32_t SavedInput [2*BLOCK_SIZE]; // // Input buffer that has to contain

the two last Inputs concatenated.

float32_t TempInput [fft_length]; // Temporal input to process the input for

the FFT.

float32_t TempOutput [fft_length];

// Loop for storaging the Input[n-1] and the Input[n]

for (i=0; i<BLOCK_SIZE; i++){

SavedInput [i] = OldInput [i]; // Storage of the first Input block

(Input [n-1]).

SavedInput [i+BLOCK_SIZE] = Input [i]; // Storage of the second Input

block (Input[n]).

}

// Loop to calculate the FFT in the slices needed using the defined hop.

i = 0; // Represents the number of chunks-slices to calculate.

while ((i*fft_hop)+fft_length+next_index_to_process <= 2*BLOCK_SIZE){

//n_chunks works but it's not used to assure the formal correctness of the code.

// This loop assigns the SavedInput with two blocks to the TempInput

which is the Input needed for the FFT to perform.

for (j = 0; j<fft_length; j++){

TempInput[j] = SavedInput[i*fft_hop+j];

}

// FFT calculation. It writes in Output successive columns with

the resultant slices of the STFT process.

fft_f (TempInput, TempOutput);

/* The TempOutput represents one of the slices that can be

calculated, so it has to be written in the Output buffer.

There could be many TempOutput for each BLOCK_SIZE input.

*/

// The TempOutput is a slice of the Spectrogram, that is

written in the Output.

// As Output is a pointer array that writes in a matrix, it is

possible to use [i][j] here.

for (j = 0; j<fft_length; j++){

Output[i][j] = TempOutput[j];

}

i = i+1;

}

// Calculation of the next index to process.

next_index_to_process = (i*fft_hop)+next_index_to_process-BLOCK_SIZE;

// Storage of the block NewInput (which contains Input[n], to the block

OldInput.

for (i = 0; i<BLOCK_SIZE; i++){

OldInput [i] = Input[i];

}

}

10.4.3 FFT.h /*

* fft_f.h

Page 241: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

241 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

*

* Created on: 21/12/2015

* Author: jmteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_FFT_F_H_

#define WHISTLE_DETECTOR_F_INC_FFT_F_H_

# include <inputMatlab_fp.h>

# include <arm_math.h>

# include "globals.h"

#include "arm_const_structs.h"

//void fft_f (float32_t *Input, uint16_t fft_length, float32_t *FFTOutput);

void fft_f (float32_t *Input, float32_t *FFTOutput);

#endif /* WHISTLE_DETECTOR_F_INC_FFT_F_H_ */

10.4.4 FFT.c

/*!\file fft_f.c

\brief Calculation of the FFT.

*/

// Includes

# include "fft_f.h"

/**

@brief Calculation of the FFT of the input.

@param[in] *Input: Buffer that contains the parts of the input signal.

@param[in] *Output: Buffer to send the FFT of the input with FFT_length

samples.

@param[in] fft_length: Size of the FFT to perform

@return none

<b>Functionality of the function:</b>

\par

The function calculates the FFT of the entry with FFT_length size. It takes

the input (whose size is

BLOCK_SIZE), and calculates the FFT with size FFT_length. Logically

FFT_length has to be less than

BLOCK_SIZE, although this condition is not checked by the code.

Another process that is needed for the FFT is the zero inserter. As the FFT

is calculated by the

Complex FFT module in CMSIS, we have to convert the Input buffer from real to

complex. In order to do that,

the real values have to be in the odd indexes and the imaginary values, in

the even ones.

Input has to be double the data size (real, imag, real, imag). The result is

also complex

is saved in Input. Real, imag, real, imag...

The first argument is this constant structure, which is defined in

"arm_const_structs.h" (has to be included).

The number at the end of the name of the structure has to be the same as

BLOCK_SIZE. It could be useful

a switch-case to select the right structure using BLOCK_SIZE.

*/

//void fft_f (float32_t *Input, uint16_t fft_length, float32_t *FFTOutput){

void fft_f (float32_t *Input, float32_t *FFTOutput){

Page 242: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

242 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

// FFT parameters.

uint8_t ifftFlag = 0;

uint32_t doBitReverse = 1;

// Counter.

uint16_t i = 0;

// Buffer to contain Input in complex format needed for the FFT.

float32_t CmplxInput [2*fft_length];

// Zero inserter for the FFT as it needs complex values (odd are the real

values, even the imaginary ones).

for (i = 0; i < fft_length; i++){

CmplxInput [2*i] = Input[i];

CmplxInput [2*i+1] = 0;

}

// Process the data through the CFFT/CIFFT module

arm_cfft_f32(&arm_cfft_sR_f32_len256, CmplxInput, ifftFlag, doBitReverse);

// Assignation of the output of the FFT function to the FFTOutput buffer.

for (i = 0; i < ( 2 * fft_length ); i++){

FFTOutput[i] = CmplxInput[i];

}

}

10.4.5 Thresholding.h /*

* Thresholding.h

*

* Created on: 8 de mar. de 2016

* Author: josemanuelteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_THRESHOLDING_H_

#define WHISTLE_DETECTOR_F_INC_THRESHOLDING_H_

# include <arm_math.h>

# include <math.h>

# include "globals.h"

void thresholding (float32_t *Input);//, float32_t *Output);

#endif /* WHISTLE_DETECTOR_F_INC_THRESHOLDING_H_ */

10.4.6 Thresholding.c /*

* thresholding.c

*

* Created on: 8 de mar. de 2016

* Author: josemanuelteira

*/

/*!\file thresholding.c

\brief Thresholding of the signal.

*/

/**

@brief Thresholds the Input making zero the values below

threshold and 1 the points over it.

@param[in] *Input Data block of the spectrogram.

Page 243: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

243 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

@param[out] *Output slice with the thresholded spectrogram.

@return none

<b>Functionality of the function:</b>

\par

Changes the values of the FFT slice received as input to 1 if they are over the

threshold and to 0 if they are below it.

*/

# include "thresholding.h"

void thresholding (float32_t *Input){//, float32_t *Output){

//uint16_t i;

for (uint16_t i = 0; i<fft_length; i++){

if (log10(Input[i]) < Threshold){

Input[i] = 0;

}

else{

Input[i] = 1;

}

} // end for

}

10.4.7 ConnectingRegions.h /*

* ConnectingRegions.h

*

* Created on: 10 de mar. de 2016

* Author: josemanuelteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_CONNECTINGREGIONS_H_

#define WHISTLE_DETECTOR_F_INC_CONNECTINGREGIONS_H_

# include <arm_math.h>

# include "globals.h"

//typedef struct Region

/* NOT USED.

typedef struct {

uint16_t row;

uint16_t column;

} Pixel;

void writePixel(Pixel pixel, uint16_t r, uint16_t col);

*/

typedef struct {

uint16_t totalPixels;

uint16_t firstSlice; // row (time)

uint16_t lastSlice; // row (time)

uint16_t firstFreqPix; //column (freq)

uint16_t lastFreqPix; // column (freq)

uint16_t isConnected[8];

uint8_t isGrowing; // This is a boolean, but includes 3 to avoid a new

property: 1 if growing, 2 if not and 3 if dead.

uint16_t reg_id;

} Region;

void initRegion(Region R);

Page 244: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

244 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

void addPixel(Region R, uint16_t row, uint16_t column);

uint16_t connectingRegions(float32_t *Input);

#endif /* WHISTLE_DETECTOR_F_INC_CONNECTINGREGIONS_H_ */

10.4.8 Globals.h /*

* globals.h

*

* Created on: 7 de mar. de 2016

* Author: josemanuelteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_GLOBALS_H_

#define WHISTLE_DETECTOR_F_INC_GLOBALS_H_

# include "inputMatlab_fp.h"

//// General

//extern float32_t Input[BLOCK_SIZE];

//extern float32_t Output[BLOCK_SIZE];

// Spectrogram

extern float32_t OldInput [BLOCK_SIZE];

extern uint32_t fft_length;

extern uint32_t fft_hop;

extern uint32_t next_index_to_process;

// Median Filter

extern uint32_t nFilter;

// Average Subtraction

extern float32_t LastAverageSample;

extern float32_t updateConstant;

// Thresholding

extern float32_t Threshold;

// Connecting Regions

extern uint16_t ConnectionType;

extern uint16_t MinLength;

extern uint16_t MinTotalSize;

extern float32_t minFreq;

extern float32_t maxFreq;

extern uint32_t LastSlice;

extern uint32_t nSlice;

extern uint16_t Nreg;

// extern Region RegionArray;

// extern Region ConnectedRegions;

extern uint32_t RegsCon;

extern uint32_t minPix;

extern uint32_t maxPix;

extern uint32_t lengthRegs;

#endif /* WHISTLE_DETECTOR_F_INC_GLOBALS_H_ */

10.4.9 WhistleDetector_f.h /*

* whistle_detector_f.h

*

* Created on: 21/12/2015

Page 245: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

245 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

* Author: jmteira

*/

#ifndef WHISTLE_DETECTOR_F_INC_WHISTLE_DETECTOR_F_H_

#define WHISTLE_DETECTOR_F_INC_WHISTLE_DETECTOR_F_H_

# include "globals.h"

# include "spectrogram_f.h"

# include "thresholding.h"

# include "connectingRegions.h"

// void initialize_shlng_filters(q15_t * abs_input,int64_t * initial_long_val ,

int64_t * initial_short_val, uint16_t blocksize);

void whistle_detector_f (float32_t *Input, float32_t *Output);

#endif /* WHISTLE_DETECTOR_F_INC_WHISTLE_DETECTOR_F_H_ */

10.4.10 WhistleDetector_f.c /*!\file click_detector.c

\brief Click detector main function.

Click_detector performs click event detections within an input signal.

*/

// Includes

# include "whistle_detector_f.h"

// Functions

/**

* @brief Run whistle detector algorithm to Input

* @param[in]

* @param[in]

* @param[in] block_size number of samples of the input vector

* @return none

*

* <b>Functionality of the function:</b>

* \par

* The function filters the input signal according to user's instructions and then

it is processed for the detection of

* possible whistles.

*/

void whistle_detector_f (float32_t *Input, float32_t *Output){

// BASIC VARIABLE DEFINITION

// Variables for the calculation of the number of chunk-slices.

uint16_t max_n_chunks;

uint16_t n_chunks;

uint32_t last_sample_processable_index;

// CHUNK-SLICES CALCULATION

//Maximum number of chunks in function of the size of the two inputs

concatenated.

max_n_chunks = floor((2*BLOCK_SIZE-next_index_to_process)/fft_hop); //

Maximum number of parts obtainable.

n_chunks = max_n_chunks; // Number por parts is, at most, this value.

// Detects the last sample needed to perform the last FFT. If it is larger

// than the number of samples N, the number of parts estimated is reduced,

// until it is lower than the number of samples N, and then exits the loop.

while (n_chunks > 1) {

Page 246: › sites › default › files › ... · D6.2 – Compact multifunctional passive acoustic sensor systems transducers and signal processing description Lead organisation for this

Deliverable 6.2 Compact multifunctional passive acoustic sensor systems

transducers and signal processing description.

246 Doc.Nº: 131230-NXS-WPX_NXS-D.6.2-v.1.1_final Date: 09/06/2016

// Calculates the index of the last sample processable by the

spectrogram.

last_sample_processable_index = ((n_chunks-

1)*fft_hop)+fft_length+next_index_to_process;

// If the last sample that the spectrogram would calculate is beyond

BLOCK_SIZE, reduces n_chunks,

// otherwise exist the loop.

if (last_sample_processable_index <= 2*BLOCK_SIZE) break;

n_chunks -= 1;

}

// WHISTLE DETECTOR VARIABLE DEFINITION

// Variables for the Spectrogram

float32_t OutputSpectrogram[n_chunks][fft_length];

uint16_t i = 0;

float32_t **FillSpectrogram[n_chunks];

uint16_t j = 0;

float32_t ProcessingSlice[fft_length];

// FillSpectrogram is a pointer array used to fill from 'spectrogram_f' the

matrix in OutputSpectrogram.

// It contains in each of it n_chunks positions the memory address of each

row in OutputSpectrogram.

for (i = 0; i<n_chunks; i++){

FillSpectrogram[i] = &(OutputSpectrogram[i][0]);

}

// Calls to the spectrogram function.

spectrogram_f(Input, FillSpectrogram);

// Each slice of the spectrogram is processed separately.

for (i = 0; i<n_chunks; i++){

// The correspondent spectrogram slice is written as the actual

processing slice.

for (j = 0; j<fft_length; j++){

ProcessingSlice[j] = OutputSpectrogram[i][j];

}

thresholding(ProcessingSlice);

// Now comes ConnectingRegions

}// end for

} // end whistleDetector

10.4.11 Development notes

As it can be seen, the ConnectingRegions is in development yet. The goals now are to finish

this module, test the entire Whistle, and then include the two NoiseReduction blocks.