Frage

Ich habe eine interessante Frage heute.

Ich muss konvertieren einige pokemon Audio-Dateien in einer Liste von 8-Bit-Samples (0-255 Werte). Ich schreibe eine Assemblierung-Routine auf dem MC6800-Chipsatz, der diese Töne erfordern gespielt werden. Ich plane ein Array mit den 8-Bit-Proben auf, einschließlich, dass das Programm eine Schleife durch, wenn eine Funktion aufgerufen wird.

Kennt jemand eine Möglichkeit, Audio-Dateien (WAV / MP3) in eine Liste von Komma getrennt zu konvertieren 8-Bit-Text Beispielwerte? oder irgendetwas dieser relativen Methode?

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Sie können die Befehlszeile "Sox" Tool verwenden oder die Audacity Audio-Editor die Datei in einem rohen, unsigned 8-Bit-Mono-Audio-Datei zu konvertieren.

In Audacity 1.3 oder höher, öffnen Sie das Audio dann Export wählen, wählen Sie „Welle, AIFF und andere unkomprimierte Typen“, wie das Format, und klicken Sie auf Optionen ... - dann wählen Sie „Andere ...“ für das Format, "RAW" für den Header und Signed 8-Bit-PCM als Kodierung. (Sorry, ohne Vorzeichen ist nicht verfügbar.)

Von der Befehlszeile versucht mit -c 1 für 1-Kanal-SOX, -t roh ohne Header, -u für unsigned linear, und -1 für 1 Byte pro Probe.

Dann können Sie ein Tool wie „hexdump“ verwenden, um die Bytes der Datei als Zahlen zu entleeren und sie in den Code einzufügen.

Andere Tipps

Wenn SOx es nicht haben, werden Sie es verwenden müssen roh (headerless) zu erzeugen Dateien und die Rohdateien in kommagetrennte selbst konvertieren.

EDIT: sox „Raw Textdaten“ als eines seiner Formate haben, von der Webseite. Sie können es Ihre Sound-Dateien in unsigned 8-Bit-linearen Proben in einem ersten Durchlauf machen konvertieren und dann wahrscheinlich genau das bekommen, die Ausgabe, die Sie diese Option für die Ausgabe mit wollen.

Für .wav ist es ein sehr einfacher Prozess. Sie können die .wav-Spezifikation leicht mit einer Google-Suche finden. Es besteht aus einem Kopf dann einfach rohe Proben. Sie sollten die Header zuerst, dann eine Schleife durch alle Proben lesen. Normalerweise sind sie 16-Bit-Proben, so dass Sie wollen sie aus dem Bereich -32768 bis 32767 zu Ihrem Bereich 0-255 normalisieren. Ich schlage vor, eine einfache Skalierung auf den ersten. Wenn das nicht erfolgreich ist vielleicht die tatsächliche min und max zwischen den Proben finden und Ihrer Waage entsprechend anpassen.

Nun viel hängt von Ihrem Audio-Format. Das Wellenformat, beispielsweise besteht aus unkomprimierten PCM-Daten verschachtelt.

dh für eine 8-Bit-Stereo-Datei wird jede Probe wie folgt angeordnet werden.

[Left Probe 1] [Rechts Probe 1] [Links Probe 2] [Rechts Sample2] ... [Left Probe n] [Rechts Probe n].

dh jede 8-Bit-Stereo-Probe in 2 Bytes gespeichert ist. 1 für den linken Kanal und 1 für rechts. Dies ist das Datenformat Ihrer Sound-Hardware wird höchstwahrscheinlich benötigen.

A 16 oder 24-Bit-Audiodatei in jede Art und Weise funktionieren, aber die linken und rechten Proben werden 2 oder 3 Bytes jeweils betragen.

Offensichtlich eine Wave-Datei hat eine Last von extyra Informationen darin. Es folgt das RIFF-Format. Sie können Informationen über sie und die „Brocken“ Wave-Dateien an verschiedenen Orten nutzen, zB www.wotsit.org.

ein MP3 Zum Entpacken ist komplizierter. Sie sind am besten dran halten, einen Dekompressor bekommen und es auf dem MP3-codierte Audio ausgeführt wird. Es wird von der anderen Seite, wie oben PCM-Daten ausspucken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top