-
byte[] minimum maximum
Bonjour à tous,
J'ai un byte[] contenant des entiers, j'ai une boucle qui le lit et j'aimerai avoir ensuite une variable contenant la valeur minimum contenue dans le tableau et une autre contenant la valeur maximum
Auriez vous un petit exemple qui pourrait m'aider ?
D'avance merci,
Christian
-
un "byte []" qui contient des entiers 8O. J'espère pour toi que ces entiers ne sont pas inférieurs à -128 et/ou supérieurs à 127 !!!!!!!
Pour ce qui est d'obtenir le minimum, le maximum étant de 127, il suffit de déclarer une variable ayant cette valeur avant la boucle. Et lors du parcours à chaque fois que la valeur lue est inférieures à cette variable de référence, affecter la valeur lue à la variable de référence. En sortant de la boucle tu aurras le minimum.
-
salut je suis encore (et toujours) débutant mais je pense que meme si c'est bourrin tu pourrais faire une série de if lors de la lecture du tableau : je m'explique :
1- tu recupere tes deux premiers entiers et tu les compares , tu mets le plus grand dans ta variable max et le plus petit dans la variable min.
2- tu recupere l'entier suivant et tu regarde si il est plus petit que ton min ou plus grand que ton max auxquels cas tu le conserve.
... et ainsi de suite pour chaque entier.
voila ce qui me vient a l'idée mais il doit y avoir plus simple :roll:
à +
-
Merci de ta réponse,
En fait ce tableau contient des echantillons de fichier wave.
Mon but est d'essayer (et j'insiste sur essayer lol) d'ouvrir un fichier audio, de repérer la plus haute pointe et de normaliser le tout à -2db.
Mais il m'est vraiment très difficile de trouver une documentation concrète sur le sujet.
Bien à toi,
Christian
-
Bonjour, les Wav qualité CD contiennent des valeurs 16 bits (donc plutôt des short) il faut analyser les byte par 2 pour récupérer la valeur d'un signal.
le fichier wav commence par un entête fixe suivi des valeurs gauche-droite stéréo (2bytes gauche, 2 bytes droite)
http://ccrma.stanford.edu/CCRMA/Cour...ts/WaveFormat/
-
Merci pour ta réponse Deltree,
En fait c'est un fichier wave mono 8kb/s 8bits format alaw.
Comment puis je lire les information de ce fichier et changer le volume du signal ?
Aurais tu une piste pour moi ?
Merci d'avance,
Christian
-
Bonjour,
d'après la doc, les données commence à l'offset 44 (je n'ai pas vérifié dans un fichier, mais un edietur hexa fait l'affaire, c'est après la chaine "RIFF").
donc tu laise les 44 1ers octets inchangés, et tu multiplie tous les bytes suivants par un coefficient. (bon, le 8 bits n'est déjà pas précis, alors après réduction)
si tu divise par 2 un décallage de bits suffit, sinon, il va falloir passer en float, puis reconvertir ensuite.
-
En fait ce que je voulais faire, c'était de repérer la plus haute point de volume et alligner l'ensemble du fichier sur -2db en dessous de 0db.
Peux tu me dire comment faire ?
J'ai lu l'entete d'un fichier wave et je difficile de comprendre certain bytes
par exemple le sample rate il me donne ceci :
44
ffffffac
0
0
Comment dois je interpreter ffffffac ?
la meme chose pour la longueur du bloc de données de data (SubShunk2Size):
22
ffffff9a
1d
0
merci pour ton aide.
PS: si la précision de l'échantillon pourrais le transformer en 16 bit, le normaliser puis le reconvertir en 8 bits ?
-
Le format a l'air bizarre tu ess sur que c'est un wav non compressé?
moi j'ai
22 56 00 00
c'est du little endian donc en tappant 5622 dans la calculatrice hexa, converti en décimal ça donne 22050 Hz la fréquence d'échantillonnage
idem pour les taille, mais toi, tu n'as pas besoin de changer l'entête, tu ne change ni le format, ni la taille de ton fichier.
pas besoin de convertir en 16 bits, c'est juste pour les calculs que tu stoke en float...
-
Saurais tu me donner un exemple de calcul ?
Sachant que je recherche mon plus haut niveau et que sur base de ce plus haut niveau j'aimerais normaliser à -2db, comment puis je m'y prendre ?
Merci d'avance
Christian
-
Ah oui j'oubliais le format n'est pas compressé, c'est du 8kb 8 bit alaw
-
Tout ce que j'ai dit (sur les valeurs de bytes) c'est pour du PCM: de l'encodage linéraire
Le A-law C'est presque compressé quand même ;)
http://www.digitalpreservation.gov/f...dd000038.shtml
c'est du companding: je ne comprend pas grand chose en traitement de signal, mais c'est ce qui est utilisé pour transmettre le signal audio réduit à 64 kbits des téléphones européens.
en gros c'est de l'encodage logartihmique, je n'y comprend pas grand chose, et je ne sais pas par quoi il faut diviser la valeur pour réduire à 2 db... désolé :cry:
edit: l'algorithme en lui-même
http://en.wikipedia.org/wiki/A-law_algorithm
-
heu je ne sais pas si ca a quelque chose a voir mais d'aprés mes cours de bts (SYSTEME ELECTRONIQUE), le gain se calcule en fonction de la transmitance du circuit donc electroniquement parlant il faudrai connaitre la fréquence de coupure du filtre ainsi que la transmitance du circuit aprés je ne sais pas comment tu genere ton signal donc je sais pas si ce que je dis peut te servir.