From ddbc09d5d3f7081b0eb73163c041f2f7df14de17 Mon Sep 17 00:00:00 2001
From: lamipaul <paulobest25@gmail.com>
Date: Wed, 23 Nov 2022 20:54:41 +0100
Subject: [PATCH] rapport2wav

---
 Rapport2wavs.py   |  44 ++++++++++++++++++++++++++++++++++++++++++++
 RapportInfo2txt   | Bin 17072 -> 17072 bytes
 RapportInfo2txt.c |   4 ++--
 3 files changed, 46 insertions(+), 2 deletions(-)
 create mode 100644 Rapport2wavs.py

diff --git a/Rapport2wavs.py b/Rapport2wavs.py
new file mode 100644
index 0000000..5497fcb
--- /dev/null
+++ b/Rapport2wavs.py
@@ -0,0 +1,44 @@
+import numpy as np
+import soundfile as sf
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('filename')
+args = parser.parse_args()
+
+RORQUAL_HOPSIZE, RORQUAL_WINSIZE, RORQUAL_FE = 256, 4096, 4000
+CACHA_HOPSIZE, CACHA_WINSIZE, CACHA_FE = 256, 512, 64000
+RAPPORT_FE = 128_000
+rorqual_predPos = lambda p: int(((p * RORQUAL_HOPSIZE + (RORQUAL_WINSIZE/2 + RORQUAL_HOPSIZE * 13) / 2) / RORQUAL_FE - 1) * RAPPORT_FE)
+cacha_predPos = lambda p: int(((p * CACHA_HOPSIZE * 8 + (CACHA_WINSIZE + CACHA_HOPSIZE * 7 * 6) / 2) / CACHA_FE - 0.05) * RAPPORT_FE)
+
+file = open(args.filename, 'r')
+lines = iter(file.readlines())
+
+for l in lines:
+    if l == ' rorqual predPeaks\n':
+        l = next(lines)
+        if ',' in l:
+            l = next(lines)
+            if ',' in l:
+                sig = np.zeros((30 * 128_000, 5), dtype='int16')
+                peaks = np.array(l[:-2].split(',')).astype(int)
+                l = next(lines)
+                for p in peaks:
+                    l = next(lines)
+                    samples = np.array(l[:-2].split(',')).astype('int16').reshape(-1, 5)
+                    sig[rorqual_predPos(p):rorqual_predPos(p)+256000] = samples
+                sf.write(f'{args.filename[:-9]}_rorqual.wav', sig, RAPPORT_FE)
+    if l == ' cacha predPeaks\n':
+        l = next(lines)
+        if ',' in l:
+            sig = np.zeros((10 * 128_000, 5), dtype='int16')
+            peaks = np.array(l[:-2].split(',')).astype(int)
+            l = next(lines)
+            for p in peaks:
+                l = next(lines)
+                samples = np.array(l[:-2].split(',')).astype('int16').reshape(-1, 5)
+                sig[cacha_predPos(p):cacha_predPos(p)+12800] = samples
+            sf.write(f'{args.filename[:-9]}_cacha.wav', sig, RAPPORT_FE)
+
+file.close()
diff --git a/RapportInfo2txt b/RapportInfo2txt
index eaec6d4a3e5d9220e79d216ec3cf989f36b46aaa..fe26c0854764098b3757999fa6823120478d86f0 100755
GIT binary patch
delta 868
zcmdnc$_PRnj9jVg3}BGTzFCMdj7cQ*S)5ar<SG;E+zAz)dFw*f-;6rCxrX@{FXuH@
z1_qB_-gwr{^@5^|Ob#rQrwOGn-rD?IsDQEl<unEchU2a`KxVzpKkj-5%!uiBz2lL5
zqTBU~$BgdK8y?A*JTgBpbO<webYAc{_<+fS@q!2A2M@**9;_eOL8gl^c=WP%YcnwL
zZ)aiR-+#fQ+x3M<ujwyt1_qDL<2yixz6ksC|9`XV9meL`J1lkcnq6-&HrCeP`2U=l
zp{@h0zVq0AE(QjM7jj^QR~Y%XvpzOsV3=X)dWF9y^8f$;5LE|v@h~tj>|<mAS!}z3
zn}Okl%%A`NkGoz0S@YTw>}ro*kya4bqnGu)76Zd)egPJy&-_sbz((|%dO{t>4l?D%
zzTcAtMU~k@K}K!)J=t1Rw!U2p!!KOOe)$dZ3)qS3`Vc49>;jwJd2p8ilJov>F)+OF
z_zia+k>Onr4)9+f8!-ZWz7>N<FF3%TYoa?c4B3&Jet{f`8sInn8#17WcNJJ2*fY_3
z5YI%x1N?zU=kXVszhHrX{DthV|Np@e>d}0}B0Bc)gwOnPzZ}DTdTqPa7#JMGJUg#B
zhI)2>bqsOr{1fWYt6QVSz!2=C`PZZQ4abZ3KQ_mUedO4r;KImt;p_kZKNuJo9KKEV
zQ=F$djfH`M!Ie*-jmepp&9#}Cxr2p=odXn!3=A#|3=CTs7#J>07F2R)`SIod|H&T>
zgf|x`ad1yA*R^Dd5Z}B>SC0imKQcVW#1tStd6UU9rU>!LQKs)0A58W%OXmce&%nT7
hJ^7-U_~r{{4jhbMCkxu^b47?lEQt``>}8+E3;>4JMx_7%

delta 671
zcmdnc$_PRnj9gpU7{FjF+h!rgFeVX|nnNoOZ$Ivn_^qDZUTwq6lV*okZLVSd#mlM2
z%D~{!%e$UsbG@J_BU2Oe<Y_`Fj53>l3l%V?zqUK>dIMz8Yw_c*cfbsmX4gB6&9!$}
z>b^C*-e7F3z48A!Geg}2k8al&9-YVbb1^V5yr}&1|9`XV6-NH;taj!M3^OcUuheXX
zs5rQbhk=1%A0q?ET3db|28I{alMO{>l>M|B7(Vk0urPh*k2(NW+iSXln}NZj^Y{*s
z>KC$qCKre*vv1*MV0a<?XYwpj+4^T%3=I6+S(y0uUx4a}gz5mf^~KiTaA&mXL!Ge;
ztg!RoE&(KGM1#y+{`>#`<E~dgI*IeQVLb!7$4wA6io$FJdHjJ#=kXWMfBpXtvHkdq
z+rR$*-vP49qxpzMbnM|YJ%0HX5TAix-USp8a=#qIeR^%J)fpHZ!#q2$Ifi<6esv6S
z?EDkz(W|SY&cG1t!>Re#qxlWTi}^n{^NWAvn0$bJ!zKk6MlOY~|NsABU|^W=b+Vu0
zJk=Y_3=9med;)Du&b(}{&CJZFn0eSaz?Lz%FfcG|VPIfTm@KH|&f@Xq|NqG!4TLur
zC~<I4F4whWS|PT1ldc{Mh<;>vj)`f3*yK$n%a~S(O^z~s$7nFw(=446Y(4`6gZ1Q#
eX5yPKm^pATx=t3f*XLRx2C-y?*k&*LG-d$3uJQZ;

diff --git a/RapportInfo2txt.c b/RapportInfo2txt.c
index ca885ba..b10c2e9 100755
--- a/RapportInfo2txt.c
+++ b/RapportInfo2txt.c
@@ -72,7 +72,7 @@ int main(int argc, char* argv[]){
   for(i=0; i<rapport.numDetectionsRorqual; i++){
     for(j=0; j<RORQUAL_RAPPORT_SAMPLESPERSAMPLE; j++){
       for(k=0; k<RAPPORT_CHANNELS; k++){
-        // fprintf(outfile, "%hd,", rapport.samplesR[i][j][k]);
+        fprintf(outfile, "%hd,", rapport.samplesR[i][j][k]);
       }
     }
     fprintf(outfile, "\n");
@@ -89,7 +89,7 @@ int main(int argc, char* argv[]){
   for(i=0; i<rapport.numDetectionsCachalot; i++){
     for(j=0; j<CACHA_RAPPORT_SAMPLESPERSAMPLE; j++){
       for(k=0; k<RAPPORT_CHANNELS; k++){
-        // fprintf(outfile, "%hd,", rapport.samplesC[i][j][k]);
+        fprintf(outfile, "%hd,", rapport.samplesC[i][j][k]);
       }
     }
     fprintf(outfile, "\n");
-- 
GitLab