Soundformat ( RAW Sound )

  • Ersteller elfinit
  • Erstellt am
elfinit

elfinit

Registriert
21.11.04
Beiträge
5
Reaktionen
0
Punkte
6
Hallo

Ich habe eine Datei aus einem alten Spiel von '97 (läuft sowohl unter Windows als auch unter DOS) extraktiert. Diese Datei hat die Erweiterung .SND.

Ich habe sie mit einem Hex-Editor angeguckt. Anscheinend gibt es keinen Header. Man kann die Datei als RAW Daten Format in Adobe Audition laden. Die "beste" Musikqualität erreicht man durch folgende Einstellungen: 22050 Hz, Mono, 8Bit.

Das Problem ist, dass es aber ein sehr lautes Rauschen beim Abspielen gibt. Hier ist ein Link zu der Datei: http://www.elfenheim.de/elfinit/MUS018.rar

Hat vielleicht jm eine Idee, was man da machen könnte? Ich bin auch dem in C++, VB oder Delphi Programmieren nicht abgeneigt.

Vielen Dank
-elfinit
 
Als AU lässt es sich nicht laden. Die Endung .snd haben leider mehrere Formate auch Dalet radio automation besitzt *snd als Endung.

Aber wenn der Header fehlt ist es natürlich sowieso schlecht. Der Header ist allerdings recht einfach aufgebaut kann man sicherlich schnell mit C++ vorne ranstricken:

00H 4 bytes "Signatur '.snd'
04H 4 bytes Data Location
08H 4 Bytes Data Size
0CH 4 Bytes Data Format
10H 4 Bytes Sampling Rate
14H 4 Bytes [g=190]Channel[/g] Count
18h 4 Bytes Char info

Schwierig dürfte nur sein die 18 Formatcodes richtig zu setzen wenn man nur die Rawdaten hat.
 
Hi,

wenn ich mir die Datei in einem Sound-Editor anschaue (22.050 KHz, 8 Bit mono) fällt auf, das die Peaks am Boden unten liegen. Es scheint sich um "geswapptes" Klangmaterial zu handeln, sprich tausch von Low/Hi-Byte z.B.
Will darauf kein Finger verwetten, doch das Rauschen wird durch "falsche" Bits erzeugt.

Hoffentlich kommst Du damit weiter. In C++ oder so, programmiere ein Datei-Loader der die Bits z.B. mit Xor &[g=38]FF[/g] oder jedes 2te Hi/Low swappt. (es muss nicht Intel-Konform sein, kann auch Motorola-Code sein...alles klar?)

Viel Glück ;)

lg
antares
 
Huhu Antares ;)

Hehe, der Header ist zumindest im Motorola Format,
wäre denkbar das die Rawdaten das auch sind :)
Das mit dem Byteswap könnte wirklich ne gute Idee sein...

Nunja, dann von mir auch viel Glück ;)
 
Hi 4damind

ja die gute "alte" Zeit, ATARI/PC/AMIGA-Games mit Sounds im spez. Format und vor "H******" sicher...jojo...ne der Grund war damals "Speicher", heute ein Fremdwort oder die Anspielung an einen Heuhaufen :D

lg & Glück
antares
 
Ui ui ui, viele Antworten in so kurzer Zeit. :)

Ein paar neue Begriffe sind für mich dabei.

1) Swappen heißt doch umtauschen. Verstehe ich das richtig? Die Daten sollen dann in der Anordnung Low Byte (von 2^8 bis 2^15) High Byte (von 2^0 bis 2^7) abwechselnd sein.
Was soll ich mit ihnen beim Laden machen? Alle in High Byte umrechnen?

2) "Xor &[g=38]FF[/g]" sry, aber das ist mir unklar.

Bye
-elfinit
 
Hi,

Es scheint sich um "geswapptes" Klangmaterial zu handeln, sprich tausch von Low/Hi-Byte

Bin zwar kein #### (Edit: #### war mal C-[g=211]rack[/g], aber dieses Wort scheint das Board nicht zu mögen :) ), aber damit ist doch bestimmt der Endian gemeint? Z.B. das Freewareprogramm Audicity kann auch Raw-Dateien mit Big-Endian (Motorola/Sun-Format) importieren. Allerdings hört sich die fragliche Datei dann auch nicht besser an :(

Ich will ja nicht unken, aber vielleicht handelt es sich um ein recht proprietäres Dateiformat.

Matthias
 
Ich habe einen Player in C programmiert. Dabei lade ich die Datei in Speicher und spiele dann die Daten direkt aus dem Speicher ab.

Ich habe versucht, zB jeden 2 Byte auf 00 zu setzen. Dann auch 2 Bytes abwechselnd usw... Man müsste schauen, wann die beste Qualität rauskommt. Dann müsste man natürlich mit Offsets spielen. Kurz gesagt: Es besteht Bedarf die Daten zu analysieren.

Eine Frage: Wenn ich zB einen Byte mit Sounddata habe, den nächsten mit 00 und den nächsten wieder mit Sounddata, wird dann Sound in dem mittleren "leeren" Byte gar nicht abgespielt? Also eine einbytige Pause? Oder werden die Daten wie eine Soundkurve interpretiert und die 0 bewirkt, dass sie bei Null ist, d.h. der Sound entweder höher bzw. tiefer wird?

aber damit ist doch bestimmt der Endian gemeint
Ich verstehe. Aber wenn ich doch 8Bit abspiele, dann spielt die Reihenfolge der Bytes keine Rolle. Es wird ja 8Bit-weise d.h. Byte-weise abgespielt. Oder muss ich 4bits umtauschen, also High- und Lowbyte? Oder vielleicht die Bitsreihenfolge?
 
Hi,

zu 1) Swappen heißt doch umtauschen ... jepp ... wie der Umtausch, und nach welcher Muster/Logik erfolgt, ist zu suchen und der Schlüssel zum rauschfreien Sound.

2) "Xor &[g=38]FF[/g]" sry, aber das ist mir unklar ... Und/Oder mit 255 ein Bsp. 14XOR255=241 eigentlich ein normales Swapping

Neue Idee, den DC-Versatz, d.h. die scheinbar verschoben Nullinie...

- bei 8Bit im Bereich von 0..255 (Null-Linie wäre bei 127) die steigende "Welle" einer Sägezahnklanges wie folgt abbildenen"0...1...2...~...253...254...255"
- bei 8Bit im Bereich +/- 127 (Null-Linie wäre die "0") würde das Bsp. v.o. so erscheinen "-127...-126...-125...~...+125...+126...+127"

Hoffentlich klar ausgedrückt und zum Erfolg hilfreich...

lg
antares
 
Ähm, glaubt ihr, es ist möglich genau die Stellen rauszuschneiden, die Geräusche erzeugen? zB jeden 2 Byte bzw. jeden 4 usw...

( Rauschneiden ist gleich null setzen, denke ich, oder? )
 
Habe hier noch die richtig abgespielte Musik aufgenommen und auch die von mir abgespielte Datei.
http://www.elfenheim.de/elfinit/mus.rar

Hier sind die Graphen:
Von dem Spiel abgespielte Musik
orig.gif


Von mir abgespielte Musik
play.gif


Also da scheint etwas gewaltig nicht in Ordnung zu sein.

Ich habe das Gefühl, dass irgendwelcher Byte immer die Amplitude angibt.
 

Ähnliche Themen


Oft gelesene Themen

Zurück
Oben