Coder du morse en ultrason dans un .wav

Galex-713 Messages postés 358 Statut Membre -  
Galex-713 Messages postés 358 Statut Membre -
Bonjour, je voudrais savoir comment les fichier .mp3 sont codé
c'est à dire par exemple si on ouvre un fichier .mp3 avec bloc-note on va avoir toute une suite de caractère qui correspondent à des nombres codé selon la table ASCII et j'aimerais savoir ce que chaque nombre peut vouloir dire et donc comment modifier une musique en trifouillant dans ces caractères !
je compte faire un programme en C++ qui met des code en morse en ultrason dans des musiques normales !

Merci d'avance !

EDIT: les mp3 ne gèrent pas les ultrason, il faut prendre du wav (le wav n'est pas compressé) voir plus bas.



A voir également:

15 réponses

dsy73 Messages postés 9917 Statut Contributeur 2 486
 
Tu peux utiliser la stéganographie pour cacher un message dans un son :
https://fr.wikipedia.org/wiki/St%C3%A9ganographie#Message_transport.C3.A9_dans_un_son
2
nicocorico
 
Oui très bonne idée, qui suggère la possibilitée d'exploiter le bit 0 des trames; On passe à 15 bits de définition sonore, ce qui doit pas être très génant côté qualitée sonore, en mettant à 0 le bit de poids faible de toutes les valeurs.
Ensuite plusieurs possibilitées s'offrent pour coder le morse :
- mettre une séquence contigue de 1-1 pour un trait
et 1-0 pour un point;
- mettre une séquence contigue de 1 sur deux longueurs différentes pour point et trait...
Et ça a le mérite d'être d'une grande simplicitée à écrire comme à relire !
J'y avait pas pensé et ça pourrait resservir ça !
0
nicocorico
 
Encore mieux, en prenant en compte le faible débit du morse, il suffit d'agir sur le 1er bit de 2 valeurs toutes les, mettont, 512 valeurs, et d'y mettre 1-1 pour un trait et 1-0 pour un point, 0-0 pour rien...
sans même se soucier du canal;
ainsi on ne limite même plus la définition et on garde un débit de 88200 / 1024 = 86 codes par secondes.
On peut définir d'autre valeur pour avoir plus de débit ou bien inclure plusieurs canaux de communication morse...
et la différence sera inaudible.
0
Galex-713 Messages postés 358 Statut Membre 16
 
mais si on ne modifie que les bits de poid faible pour décoder il faudra lire le fichier avec un ordi et moi je veux que mon code soit AUDIBLE par moi et quelques rares autres.
0
Galex-713 Messages postés 358 Statut Membre 16
 
et on ne peut que modifier l'amplitude ? pas la fréquence ?
0
nicocorico
 
D'abord, je crois voir que le header est présent au début, il faut commencer la lecture à l'offset 44,
et à partir du moment ou tu lis les valeurs en 8 bits, ça risque pas de dépasser 255... Demande à ton bloc-notes de les lire sur 16 bits et tout deviendra clair, et il pourrait même lire les valeurs sur 71 bits... Tout est une question de nombre de binary unit considérés pour composer le décimal. mais je crois que le bloc-notes se contente de représenter sur 8 bits, alors...
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
1
nicocorico
 
hé bien en fait il n'est pas possible de coder de l'ultrason dans un fichier son, car tous les éléments de la chaine de reproduction sonore sont incapables de le traiter... Les fréquences enregistrées dans un fichier son à 44khz ne peuvent excéder 22khz, le domaine de l'ultrason commençant après ! Cependant il est possible de mélanger du 22khz, qui restera théoriquement inaudible, en toute simplicitée dans un fichier de type wav, qui est non compressé... Le fichier wav contient un header dont j'ignore la taille, petite recherche qu'il reste à faire, puis des valeurs 16 bits signées à raison de 88200 word par seconde d'enregistrement, les valeurs aux positions pair et impairs décrivent les voies gauches et droites en stéréo. pour injecter un son à 22khz, il suffit de modifier ces valeurs en ajoutant et soustrayant alternativement une valeur dépendante du niveau sonore du signal en évitant la saturation du son...
8192 semble être un bon compromis, sachant que le domaine de chaque valeur est +32767 -32767 et qu'un signal est déjà présent.
---------
Header
---------
Début du tableau codage 16 bits alternance voie droite-voie gauche
D0 +8192 Ajout sur voie droite
G0 +8192 Ajout sur voie gauche
D1 -8192 Soustraction sur voie droite
G1 -8192 Soustraction sur voie gauche
D2 +8192 Ajout sur voie droite
G2 +8192 ...
...
Jusqu'à la fin du fichier

L'ajout et la soustraction alternatives représentent un signal carré à 22khz, ce signal doit donc être répété sur un nombre de valeurs consécutives correspondant à la durée courte ou longue du trait morse, sachant donc que l'on a 44100 valeurs 16 bits par seconde et par voie...
1
nicocorico
 
J'ai trouvé des infos sur le header d'un wav :
Field bytes format contains
1 0...3 str4 "RIFF" in ASCII
2 4...7 int4 Total bytes minus 8
3 8...15 str4 "WAVEfmt" Eigth character is a space
4 16...19 int4 16 for PCM format
5 20...21 int2 1 for PCM format
6 22...23 int2 channels
7 24...27 int4 sampling frequency
8 28...31 int4 bytes per second
9 32...33 int2 bytes by capture
10 34...35 int2 bits per sample
11 36...39 str4 "data"
12 40...43 int4 bytes in data

Le header fait donc 44 octets.

Par contre, la récupération du morse ainsi mélangé, c'est pas une partie de plaisir, mieux vaut avoir des notions de traitement numérique du signal...
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Viens faire un tour sur ce bon tutoriel, je pense que cela peut t'intéresser! (même si tu n'est pas sur ubuntu)
http://doc.ubuntu-fr.org/lecture_et_encodage_de_fichiers_audio


Configuration: Imac 23"
0
Galex-713 Messages postés 358 Statut Membre 16
 
Up !
0
Galex-713 Messages postés 358 Statut Membre 16
 
oui mais comme dit précédemment j'ai déjà lu à quoi ressemblait l'en-tête des wav sur Wikipedia et moi ce qui m'intéresse c'est le codage des données internes
0
nicocorico
 
Hé bien, comme dit plus haut, à partir du 44ème octets on a 2 tableaux, de champs 16 bits signés, entrelaçés et décrivant les 2 voies du signal, jusqu'à la fin du fichier...
0
nicocorico
 
Plus de précisions peut-être ?
Le son est enregistré via un micro en analogique, pour passer en numérique on l'échantillonne, c'est à dire qu'on mesure l'amplitude du signal analogique un certain nombre de fois par seconde et avec une certaine définition , courammant à 44100 hz et 16 bits de définition;
Le son est une sinusoide qui gravite dans ce cas autour du
point zéro et entre 32767 et - 32767.
Un son harmonieux, tout sauf des craquements donc, est une sinosoide à une certaine fréquence et un certain nombre d'harmoniques, c'est à dire des multiples 3 de la fréquence-base.
Un son est donc composé du mélange de sinusoides à différentes fréquences et leurs harmoniques.
Au passage, le signal carré est une sinusoide-base et l'infinité de ses harmoniques...
Donc dans le fichier wav, on trouve le relevé à 44khz de l'évolution de ce mélange de sinusoides qu'est un son...
0
Galex-713 Messages postés 358 Statut Membre 16
 
eh bien ça a le mérite d'être clair !
mais comment fait on pour différencier les deux voix ? et si je comprend bien un octet 0000000000000000 est à une amplitude signal (crête) de -32767 et un à 1111111111111111 est égal à une amplitude crête à 32767. C'est ça ?
0
nicocorico
 
J'aurais une préférence pour la notation Hexa :
$7FFF = 32767 et $8FFF vaut -32767 et sur un 16 bits SmallInt convention pascal, pas un octet...
Et pour différencier les voies, c'est simple, elles sont entrelaçées, c'est à dire que si tu lis 16 bits à l'offset 44, tu à la 1ère valeur d'une voie, puis à l'offset 46 la 1ère valeur de l'autre voie, à l'offset 48 la 2ème valeur de la 1ère voie et ainsi de suite....
0
nicocorico
 
mea culpa -32767 vaut $8000 !
0
Galex-713 Messages postés 358 Statut Membre 16
 
le problème reste (à part mes difficultés de lectures) que les données correspondent à l'amplitude et je ne vois pas où est indiquée la fréquence
0
nicocorico Messages postés 846 Statut Membre 138
 
up !
0
Galex-713 Messages postés 358 Statut Membre 16
 
pas besoin de faire un up !
j'ai ce message dans mes discussion suivies
et maintenant je dois tout remettre alors attend que j'ai tout réinstallé
0
nicocorico Messages postés 846 Statut Membre 138
 
Oui t'inquiète, je sais que ça va te prendre un peu de temps tout ça ! J'ai fait le up pour qu'un autre qui avait une question proche puisse retrouver le commentaire...
bon courage !

Le chêne aussi était un gland, avant d'être un chêne
0
Galex-713 Messages postés 358 Statut Membre 16
 
il le trouvera en effectuant une recherche
0
Galex-713 Messages postés 358 Statut Membre 16
 
non merci je veux juste connaitre la méthode d'encodage des .mp3

Merci d'avance !
-1
Galex-713 Messages postés 358 Statut Membre 16
 
désolé d'avoir répondu en retard j'ai reçu mon nouvel ordi et j'ai eu pleeeeiiinnn de choses à faire !
bon apparamant le mp3 est un format compressé qui ne fait pas d'ultrason et alors j'aimerais connaitre la manière de codage du wma :
Ce que je veux faire c'est ajouter des messages en morse en ultrason dans une musique et pour programmer un logiciel qui fasse ça il me faut savoir comment sont codés les wma et comment les modifier
-1
periplasme Messages postés 422 Statut Membre 53
 
le probleme du wma, c'est que c'est du microsoft ... pourquoi pas partir sur du ogg ou du wav voir flac carément ! le wav n'est pas compressé, donc t'as accès a tout le spectre sonore ... (je me trompe peut etre, a confirmer)
0
Galex-713 Messages postés 358 Statut Membre 16
 
C'était pas le wma qui était non-compressé ? Je me suis peut-être trompé...
C'est peut-être wav...
Mais bon est ce que quelqu'un sait comment le modifier ? ou juste la façon dont il est codé ?
J'ai vu, sur Wikipedia, l'en-tête et ça j'ai compris mais je n'ai toujours pas compris la façon dont s'organisent les données !
0
Galex-713 Messages postés 358 Statut Membre 16
 
Up !
-1
Galex-713 Messages postés 358 Statut Membre 16
 
Up !
-1
Galex-713 Messages postés 358 Statut Membre 16
 
Up !
-1