Deutsch   English   Français   Italiano  
<609243c8$0$3713$426a74cc@news.free.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

X-Received: by 2002:a5d:4386:: with SMTP id i6mr31059639wrq.207.1620198344850;
        Wed, 05 May 2021 00:05:44 -0700 (PDT)
Path: ...!news-out.google.com!nntp.google.com!proxad.net!feeder1-2.proxad.net!cleanfeed2-a.proxad.net!nnrp1-1.free.fr!not-for-mail
Subject: Re: Pitch shifting
From: =?UTF-8?B?RnJhbsOnb2lzIEd1aWxsZXQ=?= <guillet.francois@wanadoo.fr>
References: <608a7a5e$0$3262$426a34cc@news.free.fr> <608adea5$0$32492$426a74cc@news.free.fr> <s6eqra$3o0$1@dont-email.me> <608b05aa$0$6174$426a74cc@news.free.fr> <608bb025$0$12711$426a34cc@news.free.fr> <608bb843$0$3688$426a74cc@news.free.fr> <QBMIuQ57mPI7BG2UM9yAP6F_Jv8@jntp> <608bf667$0$6472$426a74cc@news.free.fr> <a1SHS6m6XxznjTgCVvJVMgH9cnM@jntp> <608bff8b$0$12707$426a74cc@news.free.fr> <rqSAAqcBt1fdpSNzE1Dw42nZnEc@jntp> <608d8759$0$12680$426a74cc@news.free.fr> <608d91d9$0$27435$426a74cc@news.free.fr> <608da8fe$0$3704$426a74cc@news.free.fr> <608fa529$0$3714$426a74cc@news.free.fr> <608fb1cb$0$6206$426a74cc@news.free.fr> <608fd403$0$21617$426a74cc@news.free.fr> <608fdfda$0$3674$426a74cc@news.free.fr> <60911112$0$21593$426a74cc@news.free.fr>
Newsgroups: fr.sci.maths,fr.sci.biologie
X-Newsreader: MesNews/1.08.06.00
Date: Wed, 05 May 2021 09:05:05 +0200
MIME-Version: 1.0
X-Face: &W|6U/fRZhPQe.DoT9!N+FjhHe!St`rbs`!**{SIrH/$mU%*Fn![0tKa>3i2/VNC#)OS$je U5Y[[>{4Q-nf3p~%*~&=PX;icirfK\`3U9/6_2Rh%]kBJ=n"e|~+J!_Cehr=@qyLOx^(T[jC(Sqagk WU_Kp8lwP)i=Fjyf
Lines: 69
Message-ID: <609243c8$0$3713$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 05 May 2021 09:05:44 CEST
NNTP-Posting-Host: 90.27.104.108
X-Trace: 1620198344 news-1.free.fr 3713 90.27.104.108:49979
X-Complaints-To: abuse@proxad.net
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 8bit
Bytes: 4848

robby a exposé le 04/05/2021 :
....
> mais bon, si tu te fiche de la phase, pourquoi ne pas juste la mettre à zero, 
> et ne garder que le module de la freq (à décaler à ta guise)  ?

J'ai essayé, mais c'est finalement bien moins bon que de prendre 
l'atan(y/x). Et comme dans ce cas, cela revient à resynthétiser le 
signal qu'on avait déjà, on a tout intérêt à simplement garder telles 
quelles les composantes real/imag qu'on a compressées.

> ( ou disons, à 2pi.random(f) pour éviter la correlation massive en 0 ).
> comme ça elle tombera automatiquement d'aplomb si tu met tes iFFT bout a 
> bout.

J'essaierai. Plutôt une petite variation autour de la valeur atan(y/x).

( Ma correction de la phase avec -(2*pi*i*(1-k)) indiquée plus haut a 
finalement été une erreur. Ca atténuait mes clics de rupture de phase, 
mais ceux-ci n'étaient dûs qu'à une erreur de calcul sur les index des 
fréquences négatives. Une fois corrigé, les clics disparaissent, et 
finalement la méthode de base toute bête F'=k*F reste la meilleure 
malgré les atténuations périodiques à la fois en fréquence et en temps.

> Sauf si tu fais un recouvrement a la reconstruction, auquel cas il manque des 
> infos.

Oui, c'est un pb.

....
>> MES FFT FAITES POUR LE DECODAGE RADIO, LESQUELLES SONT LONGUES !
> on ne sait toujours pas si "longue" signifie une fraction de secondes ou 
> plusieurs minutes.

Au moins 4 à 8 fois plus longues que les STFT préconisées.


>> Je ne vais pas tout refaire.
>
> ah mais les données sont déjà acquises ?

Qu'entends-tu par "données" ?
On peut choisir la taille FFT comme on veut mais je n'ai pas pris 
l'option de la changer dynamiquement suivant la fonctionnalité choisie, 
comme le pitch shifting.

....
> pour l'instant je laisse de côté l'analyse de ce que tu veux dire, mais 
> surtout: est-ce que tu fait cette opération dans le spectre, puis iFFT ?

oui

> Ou juste après la transformation souhaitée tu fait une resynthèse directe "à 
> la mano" ? ( somme des sinusoides ).

Comprends pas, ça revient au même. Si je pars des composantes 
real/image de la FFT, que je compresse, puis que je fais la iFFT, c'est 
la même chose que si je calcule l'amplitude et la phase à partir de 
real/image, puis que je recalcule les composantes real/imag en faisant 
real[i] = a[i] cos(2*pi*i/n + phase[i] avec a[i]=sqrt(real²+imag²) et 
phase[i]=atan(imag/real), puis iFFT. L'iFFT est toujours nécessaire.
La resynthèse je l'ai faite pour pouvoir jouer facilement sur la phase 
qu'on a à l'étape intermédiaire, et voir ce que ça donne, mais c'est du 
temps de calcul gaspillé.

> Toute la différence porte sur les valeurs de k permises ( parceque prendre k 
> = 1.137941 dans un la FFT risque de lui faire tout drôle :-D )

Je me suis pour le moment limité à k<1. k>1 devrait marcher aussi 
facilement mais pour l'extension de spectre il faut un autre algo.