#1 Le 13/05/2011, à 23:35
- temps
[résolu] fonctionnement little-endian
Bonjour,
Est-ce que quelqu'un peu m'indiquer comment fonctionne little-endian ?
Plus particulièrement dans un fichier wav.
J'ai tenté de créer un fichier wav comme je le fait avec aiff en pensant à des données brutes, mais j'ai eu la surprise de ne jouer qu'une valeur sur deux, comme si j'avais accéléré le temps par deux. En d'autres mots, quand j'écris dix valeurs, il n'en joue que cinq. C'est donc que je ne connais pas la règle d'écriture en little-endian. Je suis donc à la recherche de cette règle.
est-ce que chaque valeur pèse un poids supérieur à 1 octet ?
2 octets qui permet de passer du 8 bits au 16 bits ?
ce qui expliquerait que j'ai le même son en accéléré.
ou est-ce autre chose ?
cordialement
Dernière modification par temps (Le 15/05/2011, à 18:35)
Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net
Hors ligne
#2 Le 14/05/2011, à 23:40
- temps
Re : [résolu] fonctionnement little-endian
un petit up !
Après quelques tests, j'ai la confirmation que chaque donnée occupe deux octets, que la valeur est écrite en indiquant en premier l'octet de poids faible.
J'ai deux solutions, soit j'écris mes deux tableaux de conversions terme après termes, des milliers de termes à écrire, soit je trouve une conversion toute faite en langage c de little-endian vers décimal.
je me débarrasse des 44 premiers octets du fichier wav en écrivant :
int purge;
purge = 0;
if ( purge < 44 )
{ purge = purge + 1;
} /*je saute les premiers, en allant chercher le suivant*/
else /*je modélise*/
{
si quelqu'un sait ou trouver une conversion toute faite, je suis preneur, sinon je commence à taper les tableaux de conversions.
Mais après avoir écris les deux premiers tableaux, je réalise que cela fait 256 tableaux de 256 éléments ! ce qui implique en plus de boucles à n'en plus finir.
C'est pourquoi, je m'oriente vers ce genre de code qui développe la première forme à deux octets.
abadie = fgetc(oups); /* abadie vient chercher tout ce qui bouge*/
while (abadie != EOF)
{
if ( purge < 44 )
{
purge = purge + 1;
}
else
{
int force;
int force1;
int groupe1;
int groupe2;
for (ji=0; ji<127; ji++)
{
if ( abadie == tab1[ji])
{
force1 = ji + 128;
}
if ( abadie == tab[ji])
{
force1 = ji;
}
}
/***debut assemble***/
if (assemble == 1)
{
groupe1 = force1;
assemble = 2;
}
else
{
groupe2 = force1;
force = groupe1 + 256 * groupe2;
FILE* joris = NULL;
int amplitude, jo, bariere1;
int bariere2;
joris = fopen(cecci, "ab+");
if (joris != NULL)
{
/*modelisation*/
Il me reste encore à adapter à little-endian que je découvre petit à petit en testant puisque, je n'arrive pas à trouver d'informations dessus.
cordialement
Dernière modification par temps (Le 15/05/2011, à 15:47)
Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net
Hors ligne
#3 Le 15/05/2011, à 18:34
- temps
Re : [résolu] fonctionnement little-endian
Je poste en résolu, j'ai trouvé en fait le système little-endian indique qu'il faut deux octets par donnée. De mes tests, je peux dire que quand j'utilise du 8 bits mono, j'ai 128 positions possibles sur l'amplitude, et que quand j'utilise little-endian avec le wav mono 16 bits, j'ai 32768 positions possibles pour l'amplitude.
J'ai deux exemples d'application sur mon modéliseur wav et lecteur wav
.
Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net
Hors ligne