TIPE synthese sonore: analyse/resynthese additive par temps fréquence
- 181 réponses
- 10 participants
- 21 045 vues
- 12 followers

abel_b

Voilà, je dois présenter un TIPE sur la synthèse sonore analogique en vue de passer des concours des grandes écoles.
Je voudrais savoir si certains pouvaient m'indiquer des livres (ou site si ça existe) qui approfondissent ce thème (au moins des auteurs).
Ma difficulté est de comprendre le principe de la synthese FM (pas du pt de vue mathematique mais du pt de vue réalisation). En fait j'aimerais savoir si on pouvait me donner de quoi elaborer une simulation de montage qui utiliserait le principe de la FM.
De même je cherche une idée ou quelques conseils pour realiser un montage qui simule une synthèse AM (multiplieur etc...) car je connais bien le principe mais je vois pas quel algorithme appliquer pr avoir des sons semblables à ceux d'instruments de musique par exemple.
Le but final est de faire une experience au labo de physique et de faire une analyse spectrale du signal emis (par exemple le son d'une guitare) et de le comparer au signal qu'on a voulu imiter.
Aussi, je voudrais savoir si qqun pouvait m'indiquer un site où l'on peut trouver l'analyse spectrale de différents instruments de musique (peu importe lesquels)
Merci à vous.

Choc

|FFT(f)|=sqrt(Re(liste(f))²+Im(liste(f))²)
la fonction doit surement etre integré dans mapple
Site personnel: https://www.enib.fr/~choqueuse/

abel_b

Sinon je voulais juste savoir un truc sur le repliement spectral, cela veut-il dire graphiquement que le module du spectre est symetrique par rapport à l'axe f = Fe/2 où Fe est la frequence d'echantillonnage ?

Choc

Citation : Sinon je voulais juste savoir un truc sur le repliement spectral, cela veut-il dire graphiquement que le module du spectre est symetrique par rapport à l'axe f = Fe/2 où Fe est la frequence d'echantillonnage
Oui
tu peux pour illustrer ca generer par exemple un signal en dent de scie a une frequence assez elevée genre 10000Hz, ensuite quand tu vas voir le module de la FFT, il y aura bien les harmonique de la dent de scie avec une certaine decroissance et arrivé a Fe/2, ca se replie, on parle parfois de mirroir spectrale !
Site personnel: https://www.enib.fr/~choqueuse/

abel_b

Allez je vais modifier le programme et utiliser la FFT déjà programmée car mon truc ca ramait vraiment trop, puis je vais continuer, il me reste à implémenter mc-aulay-quatieri et j'en aurai fini avec l'analyse.
- Sinon juste par curiosité, elle vaut quoi la complexité de calcul pour la TFD classique ? (je sais que pr la FFT c'est en n*log(n)).
EDIT : Je viens de refaire mon truc avc la FFT, effectivement c'est carrément + rapide (30sec au lieu de 15min, je pensais pas que ca le faisait à ce point).
J'ai une petite question : Si je comprend bien, quand le prog calcule la FFT sur 2^n echantillons, il renvoie donc un spectre utile de 2^(n-1) valeurs de frequence ? Par exemple pr une fenetre de 256 echantillons, on n'a acces qu'à 128 valeurs du spectre : 0, Fe/128, Fe/127 ... Fe/2 donc pour Fe=44100 Hz, on ne pourra pas représenter les fréquence entre 0Hz et 344Hz ??? (344=44100/128)
Je trouve que ca fait pas mal d'erreur tout ça non ???(enfin si je ne me trompe pas dans mon raisonnement).
EDIT : j'ai un autre problème : quand je calcule la liste des [indices,FFT], je ne constate pas la symetrie au 128ème indice (les indices en 127 et 129 ne possèdent pas la meme norme) -> j'ai pris une fenetre de taille 256 echantillons. Est ce que la FFT prévois cela et surechantillonne automatiquement ?? ou je me suis trompé...

abel_b

Qqun peut-il confirmer que c'est assez "logique" comme résultat ?
Merci.
Je viens de le faire à 1024 echantillons par fenetres et je trouve des grands pics à 473Hz

EDIT : Je suis en train de mettre en place l'algo de mc auley quatieri, et il y a un truc que je capte pas, comment on fait ensuite pr interpoler les enveloppes d'une manière simple (legère aussi) une fois que l'on a apparié tous les pics etc...par exemple je vais detecter un partiel qui dure sur plusieurs fenetres et donc je vais avoir pleins de points [frequence,amplitude] (autant qu'il ya de fenetres) mon pb etait de savoir s'il fallait interpoler l'evolution du partiel ou s'il fallait juste conserver ces valeurs car elles suffisent quand on voudra recréer numériquement les sinusoïdes ??
RE-EDIT : je me demadais si dans mon exemple il etait nécessaire de passer par mc auley-quatieri car je travaille sur un temps de 1sec et que chacune de mes fenetres ne possedent pas plus de 6/7 pics principaux (en + de cela je n'ai pas bcp de fenetres (87)) : Donc il serait peut etre possible de resynthétiser le son à paritir de la valeur de ces pics prise direnctement dans les fenêtres et tant pis pour les petites imprecisions et le temps de calcul vous croyez pas ???
RE-RE-EDIT : encore une question (je sais ca fait bcp) : quand je vousrais recréer les sinusoïdes pr recréer mon son, est ce que je peux faire l'approximation de fréquence constante, c'est à dire que sur le suivi d'un partiel, le lui associe la fréquence constante la + présente.
Ex : si j'ai [400Hz,a1],...,[400Hz,an], [423Hz,an+1]..etc avec bcp de 400Hz, j'impose que mon partiel est toujours à 400Hz au lieu de faire varier la fréquence dans le le temps. Est ce que les pertes sont négligeables ??? (sachant que sur mon exemple, il y a bcp de régularité, les endroits où la fréquence change sont peu nombreux voir inexistants)

abel_b


- Enfin voilà c'etait pour remercier ceux qui me sont venus en aide en particulier choc

- Sinon je n'ai pas encore programmer de truc pr interpoler meme grossièrement une enveloppe temporelle pour un partiel (car je ne vois pas de méthode simple), donc tous les conseils sont bienvenus...Merci à vous...

Choc


Pour l'interpolation c'est pas trivial t'inquietes
Site personnel: https://www.enib.fr/~choqueuse/

sim


Je dois dire que j'ai un peu halluciné en voyant ce sujet de discution sachant que je suis également en PSI et que je travaille sur le même TIPE !!
Perso, je me suis pas trop pris la tête sur les parametrages de fenêtre pour FFT, j'ai juste pris des echantillons suffisament long pour obtenir une décomposition correcte, T=50ms.
Pour l'interpolation, j'ai pu approximer les enveloppes avec des exponentielles croissantes et descroissantes ... Le resultat est assez satisfaisant pour les premières harmoniques, apres ... on en parle pas !!
Mon son original est un la de piano (effectivement, le la est a 440Hz) échantilloné a 44100Hz.
Comment as tu pu tenir si longtemps uniquement sur la décomposition ? J'avoue que cette performance m'impressionne.
Est ce que tu pourais me donner les harmoniques présentes dans ton son de guitare ?
Enfin, j'espère que tu n'es pas en région parisienne sinon on risque fort de passer nos tipes l'un apres l'autre !
Bon courage, Sim.

Choc

Citation : j'ai pu approximer les enveloppes avec des exponentielles croissantes et descroissantes
Oui c'est une bonne idée ca, pour les equations de cordes vibrantes par exemple, on arrive a des solutions mathematiques composés de plusieurs vibrations (harmonique) possedant chacunes une enveloppe en decroissance exponentielle.
En tout cas bravo, les gens perso, j'aurais jamais pu faire a bac+2 ce que vous etes en train de faire! le signal c'ets passionnant, surtout si on aime bien la musique et le design sonore !
Objectif dea atiam a l'ircam dans 3 ans ?

Site personnel: https://www.enib.fr/~choqueuse/

sim

Il est aussi fascinant (étude sur l'influence des marteaux dans le son d'un piano, Emilie Simon, son beaucoup.1) qu'effrayant (concert pour mib ...)
Bon, je me lance ... Moi aussi je veux avoir des conseils de choc !!
J'essaye, sous matlab, de réaliser une synthèse soustractive, à partir d'un filtre passe bande centré en 440Hz et d'une source type bruit blanc ou creneau, pour obtenir les harmoniques d'une corde de piano mais ...
Problème !!
Le créneau n'offre qu'une harmonique sur deux, et le bruit blanc ne donne plus que le fondamentale ...
mais comment obtenir les harmoniques manquants ?
Merci beaucoup.
Sim

Choc

Citation : J'essaye, sous matlab, de réaliser une synthèse soustractive, à partir d'un filtre passe bande centré en 440Hz et d'une source type bruit blanc ou creneau, pour obtenir les harmoniques d'une corde de piano mais ...
Le créneau n'offre qu'une harmonique sur deux, et le bruit blanc ne donne plus que le fondamentale ...
mais comment obtenir les harmoniques manquants ?
je l'ai deja dis a d'autres peronnes par mail, les sons de piano par synthese soustractive, ca doit etre super mega tendu du slip si on suit votre approche.
Quel sont les caracteristique du filtre a utiliser ?
Y a un combo (c'est le mot à utiliser tu vas voir pourquoi

Prend la representation temps frequence d'un piano.
- Bon on peut dire que c'est approximativement harmonique (les partiels sont placés à des frequences multiples de la fondamentale), cool !
- Bon apres tu remarques qu'a l'excitation (tendu a visualiser sur un spectrogramme du à la pauvre resolution de cette representation temps fréquence), que le son est au debut inharmonique, comme si c'etait du bruit
- Enfin, tu remarquera qu'une fois l'attaque passée, le son semble harmonique, mais les amplitudes des harmoniques les plus elevées diminuent petit a petit. Comme si on appliquait un filtre passe bas avec une fréquence de coupure qui decroit dans le temps...
yeah, facile a simuler ces trois caracteristiques avec un filtre qui va bien.
1. Generateur bruit blanc (qui contient un spectre plat). Genere juste un bruit blanc assez bref pour l'excitation (optionnel: filtre le et applique lui une enveloppe d'amplitude)
2. on injecte ca dans un comb filter (un filtre en peigne) qui n'est rien d'autre qu'une ligne de retard. Le module de la fonction de transfert d'un comb filter, ca ressemble a un peigne...Ce filtre va te sculpter petit a petit ton bruit blanc pour te donner un son harmonique (le placement des harmoniques va dependre du retard ta ligne de retard).

3. Bon apres y a plus qu'a mettre un petit filtre passe bas....
Cet algorithme a un nom....c'est l'algorithme de karplus strong..

(le signal qui va dans Z^(-1/2)*1/2 et qui est ajouté au meme signal *1/2 correspond a une implementation simple d'un filtre passe bas ca revient a faire y(n)=0.5x(n)+0.5x(n-1) ca lisse donc. Comme ce filtre est dans la boucle, il va lisser de plus en plus comme si la frequence de coupure de ton filtre passe bas diminuée)
Bon on dirait de la bidouille comme ca, mais non en fait ca a une justification physique. C'ets J.O smith qui a fait le lien entre la physique et cet algorithme..Ca s'appelle de la synthese par guide d'onde, mais bon tu vois que y a un generateur + 2 filtres, donc c'est legitime de parler de synthese soustractive aussi

lien sur le papier de smith: https://ccrma.stanford.edu/%7Ejos/pmudw/pmudw.pdf
des exemples sonores: https://ccrma.stanford.edu/%7Ejos/pasp/Sound_Examples.html
Note1: le bruit blanc ne genere pas une fondamentale. Toutes les frequences (harmoniques ou non) ont une valeur egale.
Note2: ouaih l'ircam ca peut impressionner par le papier. mais ne te leurre pas ca n'ets rien d'autre qu'une institution qui beneficie d'une cretaine reputation. Reputation justifiée ou pas ? si un jours tu y vas tu constateras par toi meme !
Site personnel: https://www.enib.fr/~choqueuse/

abel_b

Citation : Pour l'interpolation, j'ai pu approximer les enveloppes avec des exponentielles croissantes et descroissantes ...
Mais comment tu fais pour interpoler cette enveloppe ?? car moi j'ai plusieurs valeurs d'amplitude et les partiels associés, le truc c'est que je ne vois pas comment programmer une procédure qui trouve la "meilleure" enveloppe d'approximation pour un partiel avec un tps de calcul assez rapide (sachant que moi je compte le faire avc une fonction affine par morceaux). Mon autre problème est que je travaille sur un son de 1sec qui a donc été tronqué, du coup je ne peux pas observer la décroissance à la fin mais j'ai l'attaque et le maintiens.
PS : je suis de Clermont Ferrand donc pas de soucis, on passera pas en meme temps.
EDIT : juste une question, ton prgramme il met combien de temps pr fenetrer, transformer(FFT), trouver les pics principaux ??? moi ca doit prendre 5/10 minutes en tout ce qui n'est pas négligeable pr un son de 1sec....Est ce que ca pourrait etre du a maple qui n'est pas dédié à ça ou il y a des methode pr optimiser ??
Re-EDIT : tu m'avais demandé les partiels de mon son, le début est un peu chaotique donc je n'en tiens pas vraiement compte, je trouve des maxis à 345 Hz puis des partiels assez présents (mais moins) à 516 Hz et 1722 Hz (sachant que ma precision est de 86 Hz) dans les premieres fenetres.
Ensuite qud le son est "stable", on a bcp de 430Hz avc encore un peu de 386 Hz ainsi que du 940 Hz (alterné avec 860Hz) puis d'autres partiels de faible amplitude. Vois par toi même (dsl pour l'encombrement). Ici on a une liste contenant des listes de fenetres elle meme contenant les points [freq,amplitude].
pics := [[[1, 4.0136720789999999697]], [[3, 31.252435885836521315]], [[3, 68.583688877081072645], [20, 18.921699377251064395]], [[3, 62.457033631593006984], [20, 23.910226134870700313]], [[2, 30.923489926111695742], [4, 42.454052778600499329], [6, 17.591850462846710727], [20, 19.944366903960423204]], [[4, 30.497603751426412174], [6, 9.6741371961288921005], [10, 8.3976737710059953235], [20, 16.734981406228382817]], [[4, 28.540342769473506318], [10, 10.938277539195674086], [20, 13.433206484916760796]], [[2, 24.734471670786654400], [4, 33.927896182891570451], [7, 8.0773817928168599516], [9, 8.0037907366566750205], [20, 10.242199575669443752]], [[2, 24.753039920861418845], [4, 35.409839743936338698], [6, 13.342826011525838522], [10, 8.9253868689327848902], [20, 11.248649651047135981]], [[3, 30.377458283231126934], [6, 11.595917352535917843], [20, 11.410058973932304532]], [[2, 29.533326304551958224], [4, 29.723283203785733317], [10, 10.584472927394691029], [20, 12.094075692789532706]], [[2, 25.397915515827614280], [4, 31.608340857330347528], [6, 14.870570215132477677], [9, 8.5004669382056203144], [20, 10.580105714930405772]], [[3, 29.863743430518421384], [6, 7.1592169063416962470], [9, 7.4023355893284073913], [20, 12.421670885770919192]], [[3, 26.456488951488187731], [6, 12.406097717030388901], [10, 9.4393911146348970533], [20, 10.397460869181098707]], [[2, 30.605470679179839457], [4, 28.099193507728730080], [9, 9.9231161974685550531], [20, 12.303556543048640180]], [[2, 24.273030115710820644], [4, 27.484021129409615139], [6, 12.153649141281883654], [10, 7.2197797960828529390], [20, 12.201549903342510597]], [[3, 25.425095071239540622], [6, 8.6682841251289359003], [10, 7.2996598727299824822], [20, 12.525459699938566389]], [[2, 25.941720737625770357], [4, 27.361291545071286989], [10, 7.0186122451277108888], [20, 13.597327153700259925]], [[2, 21.178086450347921580], [4, 27.878559554392307391], [10, 9.7836042026022257933], [20, 14.638468395613959168]], [[3, 24.074382921252466625], [6, 6.7792139830382809248], [9, 7.7045752908239054951], [20, 14.292216180368374765]], [[3, 23.032783804654976760], [6, 9.0473032969046726110], [10, 8.0203985137522171827], [20, 14.353864463708466531]], [[2, 28.930783020578840191], [4, 21.558535268459956885], [10, 9.8944444679386623283], [20, 14.358765439350827697]], [[2, 21.282604089056930112], [4, 21.041617276089998614], [6, 10.115385430012004529], [9, 6.8626299440434639233], [20, 12.760098453635573650]], [[3, 21.864629742582350583], [6, 6.0294056889161345220], [10, 8.4409772784788916216], [15, 5.8146146795152453737], [20, 12.474494424370828044]], [[2, 20.515890423247925695], [4, 23.740758133116896684], [10, 6.3860565644400199105], [20, 10.198117074433711092]], [[2, 17.062636778337694036], [4, 23.220081119965982522], [8, 6.1505411387117987024], [10, 8.3628963824429002172], [15, 5.8504543102063890715], [20, 7.0530546350173628875]], [[3, 19.540634576174230663], [6, 7.3747495564910165953], [9, 6.6525236725343871650], [15, 7.6105271124674125206], [18, 4.4388775410739309600], [20, 7.9491468631862284207]], [[3, 19.258813943588112069], [6, 6.6928909974439330147], [10, 7.6655762561610402923], [15, 5.7150551252628280718], [20, 7.0944714932396714350]], [[2, 25.381675220387168838], [4, 16.395962923780749531], [10, 8.4829838087115270260], [15, 6.5932108630057745372], [20, 8.1490777662640221527]], [[2, 16.508654783288242395], [4, 16.714174242755229344], [9, 6.8490968591672645134], [15, 7.4555803709752837069], [20, 8.7759038123820165629]], [[3, 17.602194725371341351], [6, 5.3586643720202313030], [10, 7.3805853002069136247], [15, 7.9758854480031452948], [18, 4.6258547899907801140], [20, 9.6954504608376461087]], [[2, 14.397755007420486697], [4, 20.378333857795002501], [10, 9.6704881579131901610], [15, 6.7073223000291349998], [20, 9.9398942222325844011]], [[2, 13.988614317961432127], [4, 18.897956153398301862], [8, 6.4769947615063694533], [10, 4.5560338288562502849], [15, 8.6937937763945960582], [17, 4.3595944203447524623], [20, 10.793557582720378771]], [[4, 16.013104025202235184], [6, 8.0170544147909605408], [10, 5.7768479377239271783], [15, 7.5930735981319345105], [18, 4.9264279885034451452], [20, 9.5920340894154474631]], [[4, 15.829922747791888415], [6, 5.0033183325432672325], [10, 7.1128265281339735480], [15, 6.1906078355905073092], [20, 8.6223487741925606418]], [[2, 19.126194273197697583], [4, 14.624504146325419866], [10, 8.6426972342873911835], [15, 6.0554841898430885997], [18, 5.0238996968020413505], [20, 9.7818340046620146033]], [[3, 14.267428580537277815], [9, 5.7296559481091466848], [15, 5.6249140966545795241], [20, 7.7264037667656322622]], [[3, 15.456806713902559069], [6, 6.6808934377781533582], [9, 5.7212351426159746540], [15, 5.6024087458941656115], [18, 4.6706643543021538269], [20, 7.7683422085822334951]], [[2, 10.254120788509843520], [4, 16.772804744047375297], [6, 8.4046522722347907387], [10, 9.2059363183181428655], [15, 6.4907608186288162405], [20, 5.3605407462305020408]], [[2, 12.689222577743312734], [4, 15.080680794711363349], [9, 7.0022820953761538911], [15, 3.9689434873317222117], [20, 3.6659643455364423170]], [[4, 13.853815680236396394], [6, 7.6628204537954674183], [10, 4.9424152796976149317], [15, 5.1555274750688183619], [20, 3.9385040119468388815]], [[4, 13.596816251705185379], [10, 5.6279284833166840788], [15, 4.5924119494979227784]], [[2, 13.999558108185916527], [4, 13.922461042994189500], [10, 6.2557085374618715561], [15, 3.5360373563462465583]], [[3, 11.977476934922669131], [10, 5.3258352233246434609], [15, 3.3093391720917559562]], [[3, 12.649700803714224377], [6, 6.3891768347307684038], [9, 4.7155882382370961432], [15, 3.3448870158446754412], [18, 2.9801990228388926855]], [[4, 13.334590017359641271], [10, 5.4536657075491239529]], [[2, 12.900252602858286206], [4, 11.481951272592112858], [10, 6.3570831462912652769], [17, 3.3547071426600206725]], [[4, 11.407742974632824694], [9, 5.3450816897771788187], [18, 2.7966846059772562634]], [[4, 12.078242839468998132], [10, 4.8533243957696509494], [18, 2.9271965478572853548]], [[2, 9.8506981428380458018], [4, 12.832963392967313256], [10, 4.1768135260849285355]], [[4, 10.536333246464676018], [8, 3.9815781866140633459], [10, 4.1322558977433223678]], [[4, 10.529470193644101522], [9, 3.6671562007169584895], [14, 2.7845537751562881934]], [[4, 11.035197629047473232], [10, 3.6837486916726057253]], [[2, 11.588627613491498069], [4, 8.9911849798215976428], [10, 4.4582650533920791811]], [[3, 9.5833594871530043811], [9, 4.3232368343996076276], [14, 2.2574208169479517270]], [[4, 10.591367804791851138], [9, 4.4989215590496122317], [12, 2.5489553792176545261]], [[2, 6.6824989633445538540], [4, 11.761936525494799265], [10, 4.6958736010039337440]], [[5, 10.863421339262397389], [8, 3.8255331767514370379]], [[3, 9.0344964588465685100], [9, 2.8151240871595119621], [14, 2.2940496138268557279]], [[4, 9.7683253585427372400], [9, 2.5120333297288110516]], [[2, 8.8127016822890930163], [5, 9.2672613697944627328], [10, 3.5049874174710604330]], [[3, 8.7206237005784380861], [5, 8.5438178517837365970], [9, 2.6660951350010650683], [14, 2.0310234766371981129]], [[4, 8.6445296051300457274], [9, 2.8910557700242532780], [14, 2.0092308228067783758]], [[2, 4.9075993671694392434], [4, 10.031541592331496863], [9, 3.7071167379356787469], [13, 2.5840529953025139851]], [[2, 6.0356886755873599432], [5, 10.283378484047147503], [9, 3.4662574321959307583], [13, 2.5288246462698039698]], [[3, 7.2137920844638199181], [5, 7.4514270460854988216], [9, 2.2674291714145661616], [15, 2.0273816727246319801]], [[2, 5.7102166894071217611], [4, 8.2486384169052157339], [9, 2.0529372679324606372]], [[5, 9.1375450232647773330]], [[3, 7.4289335677929935324], [5, 8.4184374999807307183]], [[5, 7.7554864974041722703], [15, 1.9319435585589038730]], [[2, 4.4765306118859436444], [4, 7.9470053799243451867], [9, 1.8632436989925826250], [13, 2.0874843979740541096]], [[5, 8.5280858440924543815], [9, 2.2782282521827975000], [13, 2.2783879733133304320]], [[3, 6.1984154013935076762], [5, 8.4168410463071160256], [9, 2.3825193008844809488]], [[2, 4.2701927295612610760], [4, 7.0806338818516927118], [9, 2.0032144890662519696], [12, 1.6019730612679761871]], [[5, 7.9812908475914664126], [13, 1.9828248917932062509]], [[3, 5.7416743464520810670], [5, 9.1256008125453735867], [8, 2.1221441530377250829]], [[3, 5.2339486174702154158], [5, 7.9708034826883721781]], [[2, 3.8262703739494678768], [4, 6.6840011937484768636], [13, 1.5386334734147596577], [20, 1.7982444320491251249]], [[5, 7.9940941621848346132]], [[3, 5.2521571618428666276], [5, 8.7988809379006994166], [20, 1.9747057914762065235]], [[5, 7.0367058476523824933], [9, 1.6218725268527087301], [20, 1.9149095268012350503]], [[5, 6.7861970733542792134], [9, 1.8517591415966768325], [11, 1.6382266422646009782], [20, 1.9935990671384190159]], [[5, 9.3903733488649459057], [20, 2.3976234272168251809]], [[3, 5.2522411761164010866], [5, 7.9262308856614884090], [20, 2.0646945070298098314]], [[2, 3.3353574349397147222], [5, 6.5058407363967797020], [20, 2.2936091118619424013]], [[5, 8.3850999185518544400], [20, 2.1415343045398590101]]]

Choc


y=e^(ax)
log(y)=ax
tu trouve a par regression lineaire et zouu
pour les temps de calcul, t'as bien utilise rune fft et pas une Dft ?
5/10 minutes c'ets tres tres long ! tu fenetres sur combien de points ?
Site personnel: https://www.enib.fr/~choqueuse/

abel_b

Ca aurait ptetr + rapide en ne travaillant que sur les fenetres indiduellement puis en regroupant à la fin, car moi jme trimballe tt le tps des tres tres grande listes.

sim


Je vais me pencher sur ce "filtre en peigne" pour voir comment ca marche et comme l'implémenter.
Je ne connais pas non plus les fonctions en Z, on verra si je peux les remplacer par un passe pas en S.
(Des S, des Z ... j'espère mettre fait compris !!)
Abel_b, j'ai utilisé exclusivement la fonction FFT sous matlab pour décomposer mon signal et ca a pris plus d'une heure pour un signal composé de 194 échantillons durant 50ms, composé de 2205 points chacun.
Mais bon, une fois que c'est fait, on en parle plus !!
Merci pour les harmoniques. En ce qui concerne la liste ... désolé, je ne comprends pas ce que ca représente, disons que la décomposition sous matlab est un peu plus "transparente" !
Pour les approximations, j'y suis allé à la main (affichage des enveloppes et approximation des "tau" (genre réponse d'un premier ordre à un dirac, S.I. style !)) !! Je ne cherche pas à faire un programme d'approchement systématique.
Ce sujet est vraiment passionnant, j'ai bien envie de creer sous matlab un la avec les harmoniques qui apparaissent et disparaissent. Ce logiciel donne ici une bonne maitrise de ce qu'on fait, autant en profiter !!
A plus,
Sim.

abel_b

- J'ai d'ailleurs une question là dessus : Quand on interpole, on utilise les polynomes de Lagrange entre le pic maxi, son précédent et son successeur ??? où il y a une autre méthode ? car dans le bouquin "l'info musicale" ils donnent directement la formule donnant le max, moi j'ai essayé de le démontrer par Lagrange et j'arrive à un truc différent (peut-être que c'est equivalent car ma formule etait vraiement compliquée ou alors j'ai pu me planter car c tres calculatoire comme démo).
-
Citation : Tu peux passer en log et ensuite faire une regression lineaire
y=e^(ax)
log(y)=ax
tu trouve a par regression lineaire et zouu
C'est astucieux ça ! j'y avais pas pensé.
-Par contre on fait comment pr faire une regression linéaire .??? car ma calculette le fait mais je sais pas du tout comment m'y prendre...

Choc

Citation : https://www.unilim.fr/pages_perso/jean.debord/math/reglin/reglin.htm
ce que je propose c'est eventuellement de faire un decoupage de l'enveloppe en deux:
1ere partie, du debut jusqu'au max de l'enveloppe
2ieme partie, du maximum de l'enveloppe vers la fin
et tu calcul a pour ces deux parties, ca peut peut etre le faire ?
Site personnel: https://www.enib.fr/~choqueuse/

abel_b


abel_b

Quand on parle d'enveloppe ADSR, c'est en echelle logaritmique ou dans la représentation temps/amplitude usuelle ???
Je demande ça car je vois que les enveloppes exponentielles sont souvent utilisées...
EDIT : je viens de programmer une fonction pr faire une régression linéaire : ca marche nickel

Le seul truc que je trouve un peu bizzare c'est que je n'ai pas de phase de croissance pour presque tous les partiels, ils ne font que diminuer, est-ce normal pour un son de guitarre ??? (moi ca me semble logique car au début quand la corde claque, elle engendre un son fort qui diminue progressivement)

abel_b

- Je voudrais savoir si cela peut provenir du fait que mon signal ne dure que 1sec et que donc on ne percoit pas bien l'attenuation (en l'écoutant j'ai l'impression d'avoir affaire à un son constant). Mais je pense que je vais travailler sur un son + long quitte à ralentir les calculs....

sim

La, ca commence à être la galère : il me reste 1 semaine avant mes tipe, et je n'arrive toujours pas à faire marcher un comb filter correctement.
pour avoir un semblant de signal harmonique je dois mettre, dans ma ligne de retard, z**(-0.000005) et encore c'est vraiment pas probant.
J'ai bien mis en entrée un bruit blanc modulé par une exponentielle décroissante mais le resultat n'est pas la ...
De plus j'ai pas mal de mal à voir le lien entre le diagramme de bode que tu m'as donné qui est fonction (cycle/frequence) et un diagramme de bode fonction de la pulsation.
Aurais tu déjà fait un essai qui marche ? Quels sont tes parametres ?
J'espere que tu rodes par ici et que t'as plein d'info,
merci
Sim

Choc


demo karplus strong ici: http://vincent.choqueuse.free.fr/Download/synthese/MP/MP-matlab.mp3
programme matlab sur mon site, section synthese (karplus strong matlab)
Faut vraiement forcer sur le delay pour que ca devienne harmonique (coef de reinjection d'environ 0.99)
y(n)=x(n)+0.99*y(n-delay)
x(n)= bruit blanc sur un nombre d'echantillon assez faible
Site personnel: https://www.enib.fr/~choqueuse/

sim


Je vais regarder tout ca !!
Sim

Tututetue


Choc

c'est toi qui definis, la place de chaque harmonique ou tu veux un trucs genre un filtre ne peigne ?
Site personnel: https://www.enib.fr/~choqueuse/
- < Liste des sujets
- Charte