img
@_ö
(18:51)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo + 73 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « - 1/4 - Suivant » :: Pages
 Index » Forum informatique & développement :: Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Algorithmie et optimisation (96r) » Génération de son et fichiers WAVE
./Post de départ - Génération de son et fichiers WAVE
13.06.2002 - 37281
12:06  @Zeph - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Hello,

En relisant la dernière news de Zerosquare et en réalisant une fois de plus mon ignorance totale dans tout ce qui touche de près ou de loin au son, j'ai voulu faire quelques tests et écrire un fichier WAVE tout con qui joue quelques notes.

Ça marchouille à peu près, mais il y a quand même des trucs qui m'échappent. Si je ne me trompe pas, quand on code son fichier en PCM, mettons sur 16 bits et un seul canal, la T-ième valeur représente une approximation sur 16 bits de la position de la membrane à l'instant T (soit à la T/11025-ième seconde si je suis en 11025Hz). Je lis un peu partout que cette valeur peut aller de -32768 à 32767, ok, mais j'ai du mal à voir ce que ça représente. Si je veux jouer une note, il vaut mieux que j'oscille entre -1000 et 1000 ? -10000 et 10000 ? -32768 et 32767 ? Comment choisir une "bonne" valeur, sans qu'elle soit trop faible mais sans non plus qu'elle soit trop proche des limites et m'empêche d'y superposer une seconde note ? Sinon je peux aussi tout normaliser de façon à ce que le max de mon signal soit codé par 32767 et adapter l'échelle à partir de ça, mais je ne sais pas si c'est une bonne idée.

Je suis encore plus perdu pour les WAVE codés directement avec des floats sur 32 bits, je pensais naïvement que les valeurs devaient être entre -1 et 1 mais visiblement c'est pas du tout ça, du coup je ne sais même pas quelles valeurs minimale/maximale peuvent être utilisées, et j'ai un peu de mal à trouver des spécifications là-dessus.

Quelqu'un pour m'éclairer ? :D


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./Publicité AdSense
./1
15.07.2002 - 3944
12:47  robinHood - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

ton oreille va entendre les variations pas juste les hauteurs à un instant T, bref une plage, un bip standard est une sinusoïde

tu doit également interpoler tes samples pour accorder leur format avec celui de travail, et à la fin ré-interpoler celui ci avec la vrai sortie si tu veut conserver au mieux la qualité.

chaque sample va pouvoir prendre l'intégralité de la plage, si tu veut mixer deux samples tu va devoir simplement faire la moyenne des deux

tu devrais aller faire un tour du coté des .mod et supérieurs, ouvrir leurs samples et mater un peu ce qui se passe

tu peu regarder ca si tu est intéressé, un parseur de s3m qui va ouvrir le premier sample et le lire : http://procvor.free.fr/download/src/s3lib.Src.rar


et la le mec il le pécho par le bras et il lui dit '
./2
27.04.2006 - 30130
12:52  Zerosquare - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Zeph (./0) :
Si je veux jouer une note, il vaut mieux que j'oscille entre -1000 et 1000 ? -10000 et 10000 ? -32768 et 32767 ? Comment choisir une "bonne" valeur, sans qu'elle soit trop faible mais sans non plus qu'elle soit trop proche des limites et m'empêche d'y superposer une seconde note ?
Si tu additionnes des signaux qui ne sont pas corrélés entre eux (ce qui est le cas de notes de musique en général), il te faut une plage de représentation qui va de la somme des minima à la somme des maxima. C'est une borne supérieure, en général le signal global n'atteint pas ces limites, mais tu ne peux pas le savoir à priori. Par conséquent, si tu as n notes simultanées qui ont toute le même volume, chacune ne doit pas dépasser la plage [-32767/n ; +32767/n].

Attention, le n est constant (c'est le maximum de notes simultanées que tu te fixes à l'avance), et non pas égal au nombre de notes qui tu joues à l'instant t. Sinon le volume de chaque note va varier en fonction des autres, et ça ne sonne pas naturel.

Si tu veux maximiser le volume, tu as deux solutions :

- celle que tu as évoquée, mais qui a pour inconvénient que tu dois générer d'abord tout le morceau pour trouver les maxima, et aussi que le volume de sortie dépendra du morceau joué

- un compresseur de dynamique, qui va faire varier le volume global en permanence pour se rapprocher du maximum possible. Là c'est plus complexe, je te conseille de ne pas commencer par là.

Zeph (./0) :
Je suis encore plus perdu pour les WAVE codés directement avec des floats sur 32 bits, je pensais naïvement que les valeurs devaient être entre -1 et 1 mais visiblement c'est pas du tout ça, du coup je ne sais même pas quelles valeurs minimale/maximale peuvent être utilisées, et j'ai un peu de mal à trouver des spécifications là-dessus.
J'ai jamais creusé la question, mais je me rappelle vaguement que c'est pas standardisé et qu'il y a au moins 2 façons d'interpréter les valeurs. Au niveau compatibilité c'est pareil, pas sûr que tous les softs acceptent de relire des WAVE avec des flottants.

Je peux me renseigner si tu veux.


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./3
10.06.2001 - 22507
13:00  Pen^2 - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Zerosquare (./2) :
- un compresseur de dynamique, qui va faire varier le volume global en permanence pour se rapprocher du maximum possible. Là c'est plus complexe, je te conseille de ne pas commencer par là.
(Faut pas faire ça pour de la musique, çay mal)



./4
27.04.2006 - 30130
13:26  Zerosquare - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Dans l'absolu oui, mais en même temps c'est vraiment très utilisé, même sur des morceaux calmes; le tout est de choisir des paramètres pas trop "agressifs" .
(et je pense qu'il vaut mieux pas qu'on démarre là-dessus, vu que dans un forum de musiciens que je fréquente, ça a tourné au topicàtroll de plus de 100 pages :p )


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./5
13.06.2002 - 37281
13:31  @Zeph - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Cool, merci pour toutes vos réponses :)

Prochaine étape, essayer de générer autre chose qu'un "bip" :D


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./6
15.07.2002 - 3944
13:33  robinHood - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

je m'en servais tout le temps, c'est surtout utile pour réguler le niveau sonore entre les morceaux

en tout cas ca manque vraiment sur les tv, ca calmerais les ardeurs des pubs :o


et la le mec il le pécho par le bras et il lui dit '
./7
13.06.2002 - 37281
13:42  @Zeph - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

ah cool, dans ton code (./1) il y a un bout de code pour utiliser l'api WaveOut, ça m'évitera de générer un wav que j'ouvre avec winamp ensuite :D


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./8
16.06.2001 - 55162
13:44  squalyl - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

pour générer autre chose qu'un bip, il faut prévoir une enveloppe (attaque maintien et le 3e bout, la fin, dont je sais plus le nom)

et puis faut prévoir des harmoniques (ajouts de multiples de la fréquence)

ça parait évident mais on sait jamais :)


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./9
01.04.2002 - 19679
13:56  Orion_ - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

j'en profite pour passer un petit truc que j'ai envoyé à Zerosquare: :D
http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html
http://pouet.net/topic.php?which=8357

et comme d'hab y'a des taré qui font des truc impossible :D


Retro Game Programming !

`*-._ website - vimeo channel
./10
13.06.2002 - 37281
14:05  @Zeph - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

ah ouais, en effet :D


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./11
13.06.2001 - 67876
14:42  Nil - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Zerosquare (./4) :

(et je pense qu'il vaut mieux pas qu'on démarre là-dessus, vu que dans un forum de musiciens que je fréquente, ça a tourné au topicàtroll de plus de 100 pages img )
Sur 440 ? :D Une des raisons pour lesquelles je refuse d'y mettre les pieds : c'est pire qu'ici :D


www.brumeries.info

12, rue des Brumeries disponible

Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame)
./12
27.04.2006 - 30130
15:10  Zerosquare - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Nan, les initiales c'est "AF" ^^


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./13
13.06.2001 - 67876
15:14  Nil - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Boah, c'est un peu pareil, mais avec beaucoup plus d'amateurs (perso, je n'y vais que pour les avis de matos)


www.brumeries.info

12, rue des Brumeries disponible

Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame)
./14
10.06.2001 - 22507
15:51  Pen^2 - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Zerosquare (./4) :
c'est vraiment très utilisé
hélas #tsss#

Zerosquare (./4) :
le tout est de choisir des paramètres pas trop "agressifs" .
genre "off" modui

r043v (./6) :
en tout cas ca manque vraiment sur les tv, ca calmerais les ardeurs des pubs img
Au contraite, il me semble que c'est justement ce qui est utilisé pour tout ramener à fond. Pareil pour les radios moisies. C'est pour ça qu'on a l'impression que le présentateur et les gens dans les pubs hurlent.

Edité par Pen^2 le 10-10-2011 à 15:52:30.


./15
10.06.2001 - 22507
15:52  Pen^2 - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

- post en double, dsl -



./16
13.06.2001 - 67876
15:56  Nil - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Pen^2 (./14) :
Au contraite, il me semble que c'est justement ce qui est utilisé pour tout ramener à fond.
Ce qui est sûr, c'est que tous les programmes sont normalisés avant diffusion.


www.brumeries.info

12, rue des Brumeries disponible

Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame)
./17
16.06.2001 - 55162
16:50  squalyl - Posté : 10-10-2011  M   Signaler un abus Signaler un contenu inapproprié

vu le coût énergétique de l'émission radio, c'est sage :D


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./18
27.04.2006 - 30130
17:17  Zerosquare - Posté : 10-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Oh le coût il s'en tapent, c'est pour maximiser le rapport signal/bruit dans les zones où la réception est difficile, et aussi pour "sonner plus fort" que le voisin.

Ceci dit on va peut être éviter de dévier le topic de Zeph #hehe#


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./19
./20
13.06.2002 - 37281
18:28  @Zeph - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Ayé, j'ai mon convertisseur midi -> wave qui ne connait qu'un seul instrument "fait main" tout moisi, n'a aucune connaissance du tempo, du volume ou de quoi que ce soit d'autre, mais youhou, je suis quand même content du résultat \o/





Prochaines étapes, comprendre comment faire des instruments moins nazes et gérer autre chose qu'un unique évènement "note" dans les midis ^^

• Zeph à la conquête du monde 8 bits


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./21
27.04.2006 - 30130
18:46  Zerosquare - Posté : 12-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

#top#

Comment est généré l'instrument ?


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./22
13.06.2001 - 67876
18:59  Nil - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Wow, classe !


www.brumeries.info

12, rue des Brumeries disponible

Nous sommes de bons jardiniers et yaronet est un merveilleux jardin. (Hippopotame)
./23
18.06.2001 - 20175
19:10  Folco - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Attends, t'as écrit la mélodie à plusieurs voix etc... ??? oO


./24
13.06.2002 - 37281
19:37  @Zeph - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

./23 : non non, la mélodie vient d'un fichier midi, je n'ai fait que le lire et créer un fichier wave reproduisant certaines de ses pistes :)

./21 : probablement très mal :D

Je suis parti d'une note de piano trouvée sur internet, FFT dessus pour récupérer les coefficients des harmoniques, et je n'ai gardé que les 8 premiers. Ensuite pour chaque note que je veux générer, je multiplie ma fréquence de base et ses harmoniques (associées à leurs facteurs respectifs) un signal sinusoïdal, qui vient s'ajouter au signal final. Je déphase chaque harmonique pour éviter d'avoir des pics trop hauts, mais c'est un déphasage bidon donc ça ne sert surement à rien (il faudrait que je trace visuellement le signal pour vérifier). J'applique une enveloppe croissante linéaire jusqu'à 10ms et exponentielle décroissante sur la fin de la note. Tout ça me donne cette merveilleuse sonorité "piano Bontempi", je ne sais pas faire beaucoup mieux pour le moment ^^


HA! I knew someone was alive in here. AH! Oh. My. God. You look terrible - ummm... good. Looking good, actually.
------------------------------------------
Mirari² :: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./25
27.04.2006 - 30130
19:43  Zerosquare - Posté : 12-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Boh, moi je le trouve sympa, ce son %)


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./26
18.06.2001 - 20175
19:44  Folco - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

Aaaah, bon, ok, j'ai vraiment cru que t'étais devenu bon un moment :o </enfoiray>


./27
15.06.2003 - 6769
19:49  GoldenCrystal - Posté : 12-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

Wah, chapeau… Vraiment pas mal pour quelqu'un « qui n'y connait rien » en audio #top#
Pour avoir des instruments moins pourraves (tu as trouvé une tonalité qui n'est pas désagréable malgré tout #oui# ) après faut soit expérimenter, soit faire (ou se procurer, je sais pas si ça se trouve plus facilement aujourd'hui) une étude physique d'un instrument %) (Ne garder que la partie qui concerne la tonalité générée, et jeter tout le reste #trioui# )

Cela dit, un bon point de départ (peut être plus simple, peut-être pas !) à ce sujet peut être de regarder comment étaient programmés les instruments faits pour jouer du MIDI sur les cartes type AdLib/SoundBlaster, même si cela demandera un peu d'interprétation (Souvenirs… Dommage que je ne pigeais pas grand chose au sujet quand j'ai bidouillé ces trucs là :( )
Tu trouveras des paramètres (je parles en connaissance de cause :D ) d'instruments dans les données de certains jeux genre Duke Nukem. (Je n'avais pas parfaitement compris le format exact à l'époque, mais en balançant directement les valeurs dans les registres audio j'avais réussi à obtenir des choses qui sonnaient comme des instruments MIDI (genre piano)… En fait ça marchait à moitié car il manquait certaines tonalités %) )

Perso j'ai en projet un truc de ce genre (je vise plutôt un synthétiseur totalement reconfigurable qu'un lecteur de MIDI ^^) depuis que j'ai commencé à implémenter le son (une abominable fréquence pure) dans mon émulateur. Ton topic m'a redonné envie de me plonger un peu là dedans. :)

Folco > Si il lit les MIDI, il n'a pas écrit les mélodies, il ne fait que les interpréter… :)


Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./28
27.04.2006 - 30130
20:20  Zerosquare - Posté : 12-10-2011  @_ö   Signaler un abus Signaler un contenu inapproprié

GoldenCrystal (./27) :
Pour avoir des instruments moins pourraves (tu as trouvé une tonalité qui n'est pas désagréable malgré tout img ) après faut soit expérimenter, soit faire (ou se procurer, je sais pas si ça se trouve plus facilement aujourd'hui) une étude physique d'un instrument img (Ne garder que la partie qui concerne la tonalité générée, et jeter tout le reste img )
Ça c'est la modélisation physique ; c'est une bonne idée sur le papier, mais c'est pas évident en pratique. Y'a quelques instruments (l'orgue, ou la guitare) pour lesquels il existe des algos simples qui donnent des résultats corrects, mais pour d'autres c'est même pas la peine d'y penser (le piano par exemple).

Si tu veux des sonorités réalistes, y'a pas vraiment d'autres solutions que les banques de sons ; en cherchant "soundfonts" sur Google tu en trouveras pas mal, et il y a aussi les fichiers prévus pour Timidity sous Linux (qui est un synthé MIDI software basé sur ce principe).

Par contre si tu cherches pas vraiment à reproduire des instruments existants, y'a plein de techniques de synthèse audio qui existent (additive, soustractive, modulation de fréquence/de phase, formants, granulaire...)


Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
./29
16.06.2001 - 55162
20:45  squalyl - Posté : 12-10-2011  M   Signaler un abus Signaler un contenu inapproprié

chapo!
Zeph (./25) :
Je déphase chaque harmonique pour éviter d'avoir des pics trop hauts, mais c'est un déphasage bidon donc ça ne sert surement à rien (il faudrait que je trace visuellement le signal pour vérifier)

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? :D


For most people, good enough is near enough. For the few, good enough is never enough.
Nspire wiki
CONDUCTEUR Va-et-vient Des QUATRE MANCHE AVEC DES DIODES
./Publicité AdSense
 « - 1/4 - Suivant » :: Pages
 Index » Forum informatique & développement :: Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Algorithmie et optimisation (96r) » Génération de son et fichiers WAVE

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
42ms | Statistiques