Question

J'ai une question aujourd'hui intéressante.

Je dois convertir des fichiers audio pokemon à une liste d'échantillons 8 bits (0-255 valeurs). Je suis en train d'écrire une routine d'assemblage sur le chipset MC6800 qui nécessitera ces sons à jouer. Je prévois comprenant un tableau contenant les échantillons à 8 bits que la boucle de programme par l'intermédiaire de la volonté lorsqu'une fonction est appelée.

Quelqu'un sait-il un moyen de convertir des fichiers audio (wav / mp3) dans une liste séparés par des virgules valeurs d'échantillon de texte 8 bits? Ou quoi que ce soit de cette méthode par rapport?

Merci beaucoup à l'avance!

Était-ce utile?

La solution

Vous pouvez utiliser la ligne de commande « sox » outil ou l'éditeur audio Audacity pour convertir le fichier à un fichier brut, audio mono 8 bits non signé.

Dans Audacity 1.3 ou supérieur, ouvrez l'audio puis sélectionnez Exporter, choisissez « Wave, AIFF, et d'autres types non compressés » comme le format, puis cliquez sur Options ... - puis choisissez « Autre ... » pour le format, « RAW » pour l'en-tête, et enregistrement PCM à 8 bits que le codage. (Désolé, non signé n'est pas disponible.)

À partir de la ligne de commande, essayer sox avec -c 1 pour 1 canal, -t brut sans en-tête, pour -u linéaire non signé, et -1 pour 1 octet par échantillon.

Ensuite, vous pouvez utiliser un outil comme « hexdump » pour vider les octets du fichier sous forme de nombres et les coller dans votre code.

Autres conseils

Si sox ne l'a pas, vous devrez l'utiliser pour générer des premières (entete) fichiers et convertir les fichiers bruts pour vous séparés par des virgules.

EDIT: sox a "données textuelles brutes" comme l'un de ses formats, à partir de la page Web. Vous pouvez le faire convertir vos fichiers audio à des échantillons non signés linéaires 8 bits dans une première passe, puis probablement obtenir exactement la sortie que vous souhaitez utiliser cette option pour la sortie.

Pour .wav il est un processus très simple. Vous trouverez la spécification .wav facilement avec une recherche google. Il comprend un en-tête puis des échantillons simplement crus. Vous devriez lire l'en-tête d'abord, puis boucle à travers tous les échantillons. Habituellement, ils sont 16 échantillons de bits, de sorte que vous voulez les normaliser de la gamme -32768 à 32767 à votre gamme 0-255. Je suggère mise à l'échelle simple au premier abord. Si ce n'est pas réussi peut-être trouver la réelle min et max parmi les échantillons et ajuster votre échelle en conséquence.

Eh bien cela dépend beaucoup de votre format audio. Le format d'onde, par exemple, est constituée de données PCM non compressé entrelacé.

par exemple pour un fichier stéréo 8 bits chaque échantillon sera organisé comme suit.

[Exemple de gauche 1] [Droit Exemple 1] [Exemple de gauche 2] [Droit Sample2] ... [Gauche Echantillon n] [Droit échantillon n].

ie chaque échantillon stéréo 8 bits est stocké sur 2 octets. 1 pour le canal gauche et 1 pour le droit. Ceci est le format de données de votre matériel son sera très probablement besoin.

Un fichier audio 16 ou 24 bits fonctionnera dans chaque sens, mais les échantillons de gauche et de droite sera 2 ou 3 octets chacun, respectivement.

Il est évident qu'un fichier wave a une charge de extyra informations qu'il contient. Il suit le format RIFF. Vous pouvez trouver des informations sur elle et les fichiers wave « chunks » utiliser à des endroits tels que www.wotsit.org.

Pour un MP3 décomprimer est plus compliquée. Vous êtes mieux loti mettre la main sur un décompresseur et en cours d'exécution sur l'audio codé MP3. IT recracher données PCM comme ci-dessus de l'autre côté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top