chapo! Zeph (./25) : les déphasages sont potentiellement utiles non? je sais pas trop. Regarde ce que donne la fft, normalement tu obtiens un résultat complexe x(f)+iy(f), l'amplitude c'est sqrt(x^2+y^2) et la phase arctan2(y,x). Normal. pour info c'est quoi les amplitudes relatives de chaque harmonique par rapport au fondamental? Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
squalyl (./29) : Utiles certainement, mais bien fichus dans mon algo basique, sûrement pas pour info c'est quoi les amplitudes relatives de chaque harmonique par rapport au fondamental? Quand tu fais la FFT du signal produit par l'enregistrement d'une note d'instrument, et que tu prends sa valeur absolue, tu obtiens une courbe qui présente un pic très net pour chacune des harmoniques de ta note. Dans mon cas, un "la" au piano donne après FFT-isation une courbe avec un pic correspondant à 440hz, un autre à 880hz, un autre à 1760hz et ainsi de suite. Ce sont les ordonnées correspondant à ces pics que j'ai récupérées et que j'utilise comme coefficients pour les harmoniques de chaque note que je veux ensuite jouer. Par contre je colle une enveloppe commune à la fréquence de base et ses harmoniques, et ça c'est peut-être extrêmement faux, j'en sais rien ^^ |
oui je sais bien, je te demandais justement les rapports d'amplitude que tu as utilisé genre pour un signal rectangulaire c'est 1 -> 1 2 -> 0 3 -> 1/9 4 -> 0 5 -> 1/25 2n -> 0 2n+1 -> 1/((2n+1)^2) etc pour un signal triangulaire c'est 1 -> 1 2 -> 0 3 -> 1/3 4 -> 0 5 -> 1/5 2n -> 0 2n+1 -> 1/(2n+1) (je crois, de mémoire) et pour un son "pianolaire" c'est quoi? (sinon je pense que l'enveloppe est commune vu qu'elle enveloppe tout le signal edit: ptet pas en fait mais je pense que t'es pas loin comme ça, si tu veux finasser tu peux essayer de faire décroitre plus vite les harmoniques, qui s'amortiront plus vite que le fondamental. et puis sinon bon courage: http://www.google.fr/search?hl=fr&q=software+synthesizer&gs_sm=e&gs_upl=2436l6065l0l7003l20l15l2l0l0l2l731l5599l0.1.1.7.3.1.1l15l0&bav=on.2,or.r_gc.r_pw.,cf.osb&biw=1280&bih=591&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
Juste pour info, parce que quand j'étais en classe de composition & informatique musicale on faisait de la synthèse sonore (mais pas à aussi bas niveau Comme exercice de base, on nous faisait faire un son de clarinette. Il y a des sons plus simple à synthétiser (flûte et cor dans l'aigu) sur le plan harmonique, mais c'est tellement simple que ça ne ressemble pas du tout à l'instrument réel (qui, vu le peu d'harmoniques en jeu, sont plus définis par leur transitoire d'attaque et leur enveloppe que par les harmoniques). Pour faire une clarinette, donc, on prend les harmoniques impaires et uniquement celles-ci. Bon, c'est un son "approchant" la clarinette, bien sûr, et il manque toujours le transitoire d'attaque et l'enveloppe générale, mais ça sonne vite correctement Ensuite, comme second exercice, on devait fabriquer l'enveloppe d'une note de piano, avec n'importe quel son ; on arrive ainsi rapidement à faire des choses très sympa (qui se rapprochent des sons de clavinet de la seconde partie du XXème siècle). 12, rue des Brumeries disponible Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame) |
intéressant Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
./31 : oh pardon ^^ Pour les exemples de ./20, j'ai utilisé ça comme coefficients : static const double factors[] = {1.00f, 0.50f, 0.40f, 0.45f, 0.36f, 0.01f, 0.30f};J'ai aussi essayé de pousser un peu plus loin avec ça, mais c'est encore moins bon : static const double factors[] = {4.50f, 2.01f, 1.30f, 1.50f, 1.24f, 0.10f, 0.70f, 0.10f, 0.60f, 0.55f, 0.50f, 0.55f, 0.80f, 0.30f, 0.50f, 0.55f, 0.26f, 0.26f, 0.10f, 0.10f, 0.10f, 0.05f};(c'est de l'estimation 100% pifométrique d'après le graphe de la courbe |
./34 ok, merci Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
Godzil (./35) :Oui, mais c'est une synthèse qui utilise des échantillons, donc c'est pas vraiment de la synthèse "pure" (où tu pars vraiment de zéro). 12, rue des Brumeries disponible Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame) |
./34 Pour une meilleure estimation des amplitudes et des fréquences, tu pourrais utiliser les méthodes haute résolution au lieu d'une transformé de Fourrier |
Certes, mais ça reste de la synthèse additive, qui est pas vraiment adaptée pour les sons de piano « Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau |
Nil (./37) : Les échantillons sont apriori généré a la volée suivant le matos que tu utilise, et les échantillons ne sont pas forcement des son d'instruments |
L'attaque est tout de même générée en utilisant un sample « Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau |
Rien n'empeche bob de faire la meme chose |
Bon, comme la génération de son fait appel à trop de connaissances que je n'ai pas, j'ai modifié mon machin pour utiliser des .wav comme instruments. C'est fait de façon assez immonde, je n'ai qu'une seule note (un DO moyen) par instrument, et les échantillons sont étirés ou compressés selon le besoin pour atteindre la note voulue. J'imagine que c'est une version très (très) rudimentaire de ce que font les formats Downloadable Sound (.dls) et Soundfont (.sf2), mais ils ont l'air l'un comme l'autre assez costauds à implémenter. Pour le premier je n'ai pas pu mettre la main sur une spec, et pour le deuxième j'ai pris peur rien qu'à voir tous les paramètres de modulation du son Bref du coup je peux convertir pas mal de musiques MIDI avec une qualité bien pourrie, ça reste amusant comme résultat mais je suis pas sûr que ce soit la bonne direction à prendre ^^ |
C'est pas mal, on dirait du MOD 12, rue des Brumeries disponible Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame) |
pour décaler un signal en fréquence "il suffit de" multiplier chaque échantillon par exp(i delta_omega t) enfin je crois, tu peux toujours tester, ça pourrait faire des trucs rigolos. ça marche sur des complexes, donc au départ chaque échantillon n'a qu'une partie réelle et la partie complexe est nulle, et tu obtiendras des complexes, donc faudra en prendre la norme sqr(x^2+y^2) (ou bien alors juste la partie réelle, je crois pas mais on sait jamais) http://music.columbia.edu/pipermail/music-dsp/2005-February/062795.html Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
J'ai envie de gerber, ça me rappelle les cours de traitement du signal à l'iut Webmaster du site Ti-FRv3 (et aussi de DevLynx) Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes ! "L'erreur humaine est humaine"©Nil (2006) // http://www.yaronet.com/posts.php?s=6238 |
Corrélation! Dirac! Hilbert! Pôle! Shannon! Bon tu devrais avoir l'estomac vide là Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
Webmaster du site Ti-FRv3 (et aussi de DevLynx) Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes ! "L'erreur humaine est humaine"©Nil (2006) // http://www.yaronet.com/posts.php?s=6238 |
Vivi, je sais, même si la sortie n'est pas un wav mais la sortie son ^^ 12, rue des Brumeries disponible Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame) |
Zeph > maintenant tu peux essayer de générer un fichier stéréo à partir d’une description 3D de la position des sources sonores Forum Cultures du monde — forum littéraire Membrane fondatrice de la confrérie des artistes flous. L'univers est-il un dodécaèdre de Poincaré ? (``·\ powaaaaaaaaa ! #love# |
Zeph > pas mal du tout ! squalyl > nan Ton truc c'est de la modulation AM, ça fait une translation dans l'espace fréquentiel : si tu as par exemple le mélange d'un sinus à 100 Hz (f1) et d'un autre à 220 Hz (f2), et que tu modules à 100 Hz (f3), tu obtiens en sortie un sinus à 200 Hz (f1 + f3), mais aussi un à 320 Hz (f2 + f3), un à 0 Hz (f1 - f3) et un à 120 Hz (f2 - f3). Ce qu'il faut c'est une homothétie (un truc qui conserve les rapports de fréquence), par exemple avec un rapport 2 si tu veux décaler d'une octave vers le haut, du coup tu obtiens un sinus à 200 Hz et un autre à 440 Hz. (Les deux sont équivalents seulement si le signal est un sinus pur.) L'homothétie ça s'obtient en réenchantillonnant, la méthode la plus simple c'est (pour chaque échantillon de sortie) : échantillon_sortie = échantillon_entrée[pos]; pos += fréq_sortie / fréq_entrée; Bon évidemment on obtient des valeurs de pos qui ne sont pas entières. Y'a des algos pour évaluer mathématiquement la valeur du signal échantillonné entre les échantillons, mais ils sont assez lourds. En pratique une interpolation "classique" donne de bons résultats ; rien qu'une interpolation linéaire, c'est déjà beaucoup mieux que rien. Perso je le fais avec une polynôme d'ordre 3 (je prends les 2 échantillons avant la position, les 2 après, je calcule l'équation du polynôme qui passe par ces 4 points, et je l'évalue en x = le point que je cherche), et les résultats sont très corrects à l'oreille. « Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau |
C'est bien la première solution que j'ai utilisée ; j'ai voulu faire une interpolation linéaire dans un premier temps mais ça a donné absolument n'importe quoi, donc par flemme je suis repassé à un ré-échantillonnage "au plus proche" et c'est probablement ça qui donne un son aussi crasseux. Il faudra que je réessaie avec des méthodes moins mauvaises, mais ça ne sera jamais aussi bon que ce qu'on peut avoir avec des échantillons multiples pour chaque instruments (+ plein de constantes que je ne sais pas utiliser, ne connaissant pas les équations dans lesquelles les utiliser), du coup je suis pas super motivé ^^ Sally : oui, mais pour l'instant je ne gère pas (du tout) le stéréo donc il y a des étapes avant |
(Le plus facile c’est quand même de monter d’une octave tout en multipliant le tempo par 2 Forum Cultures du monde — forum littéraire Membrane fondatrice de la confrérie des artistes flous. L'univers est-il un dodécaèdre de Poincaré ? (``·\ powaaaaaaaaa ! #love# |
(cross) c'est exactement ce qu'il fait, mais ça sux, ça change la durée du son. Il faut interpoler puis filtrer pour éviter l'aliasing. et pour info, mon opération c'est un mélange, pas un AM, donc upconversion/downconversion. Et comme on le fait en complexe, on fait un mélange avec deux signaux en quadrature, donc si je parlais de radio, on dirait que j'ai un modulateur de BLU. Tu prends le spectre et tu le décales. Tu fais de la modulation AM uniquement si tu mélanges avec un sinus (ou un signal réel). En faisant un mélange avec un complexe, tu annules le lobe gênant du spectre qui apparaitrait en AM. Et ça fait exactement ce qu'il faut: une translation fréquentielle pour obtenir toutes les notes à partir d'un sample unique, plutôt que de changer la fréquence d'échantillonnage du sample, qui change aussi sa durée. Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
Non, tu te plantes. Ce que tu décris c'est du pitch-shifting, et : - c'est plus complexe qu'un réenchantillonnage, et il y a une dégradation de qualité qui fait que ce n'est pas avantageux pour générer des notes - ça ne se fait avec de l'hétérodynage. t'as qu'à essayer sur un extrait de musique si tu me crois pas « Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau |
on est bien d'accord en fait, le pitch shifting c'est de la modulation BLU, mais c'est pas grave http://en.wikipedia.org/wiki/Single-sideband_modulation en fait tu fais la somme de 2 modulations AM en quadrature de phase, ce qui annule la bande latérale qui t'intéresse pas, j'avoue que c'est sournois. Moi j'attends que Zephyr tente de l'implémenter et poste un résultat Zephyr, t'as compris ce qu'on veut te faire expérimenter? cette expression te donne les samples de n'importe quelle note en se basant uniquement sur ton sample original et la fréquence que tu veux. et tous les samples auront la même longueur. s chapeau est le conjugué, pour ton signal réel ça change rien. Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |
Heu ouais enfin teste toi-même, mon temps ne suffit déjà pas pour mes propres expérimentations, je vais pas implémenter les vôtres |
boaf c'est pas compliqué pourtant. et puis t'as eu le temps pour rééchantilloner tes samples, alors tu peux bien remplacer cette fonction par un machin qui multiplie par des cosinus nan? Edité par squalyl le 18-10-2011 à 17:23:59.(et je préfère passer mon temps à mélager des fréquences plus élevées que de l'audio Nspire wiki CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES |