amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Amiga, AmigaOS 4 > AIFF header manuell ändern [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2007-09-08, 15:05 h

DaxB
Posts: 1422
User
Ich habe ein 607MB AIFF wo wahrscheinlich der Header nicht vollständig, bzw. korrekt geschrieben wurde. Aufgrund der grösse konnte ich mit FileX das AIFF nicht laden.

Gibt es eine Möglichkeit, oder ein Programm, womit ich den Header korrigieren kann? SoundFX soll das AIFF laden und dann weiter verarbeiten.

Hier der vermutlich nicht korrekte Header:

code:
00000000: 464F524D 00000000 41494646 434F4D4D FORM....AIFFCOMM
00000010: 00000012 00020000 00000010 00000000 ................
00000020: 00000000 0000414E 4E4F0000 00285072 ......ANNO...(Pr
00000030: 6F677261 6D3A2041 48495265 636F7264 ogram: AHIRecord
00000040: 2C20506C 6174666F 726D3A20 416D6967 , Platform: Amig
00000050: 614F5300 00005353 4E440000 00000000 aOS...SSND......
00000060: 00000000 000005EC 05EC05EC 05EC04EB .......ì.ì.ì.ì.ë
00000070: 04EB02E9 02E9FFE6 FFE600E7 00E702E9 .ë.é.éÿæÿæ.ç.ç.é
00000080: 02E904EB 04EB03EA 03EA01E8 01E8FCE3 .é.ë.ë.ê.ê.è.èüã
00000090: FCE3F8DF F8DFFCE3 FCE303EA 03EA03EA üãøßøßüãüã.ê.ê.ê
000000A0: 03EAFEE5 FEE5FBE2 FBE2F9E0 F9E0FBE2 .êþåþåûâûâùàùàûâ
000000B0: FBE2FDE4 FDE4FEE5 FEE5FDE4 FDE4FBE2 ûâýäýäþåþåýäýäûâ
000000C0: FBE2FAE1 FAE1FAE1 FAE1FAE1 FAE1F9E0 ûâúáúáúáúáúáúáùà
000000D0: F9E0F9E0 F9E0FAE1 FAE1F9E0 F9E0F7DE ùàùàùàúáúáùàùà÷Þ
000000E0: F7DEF6DD F6DDF5DC F5DCF5DC F5DCF7DE ÷ÞöÝöÝÕÜÕÜÕÜÕÜ÷Þ
000000F0: F7DEF8DF F8DFF5DC F5DCF4DB F4DBF5DC ÷ÞøßøßÕÜÕÜÔÛÔÛÕÜ


Ein funktionierender Header:
code:
00000000: 464F524D 260C0062 41494646 434F4D4D FORM&..bAIFFCOMM
00000010: 00000012 00020983 00000010 400DAD30 ............@.­0
00000020: 00000000 0000414E 4E4F0000 00285072 ......ANNO...(Pr
00000030: 6F677261 6D3A2041 48495265 636F7264 ogram: AHIRecord
00000040: 2C20506C 6174666F 726D3A20 416D6967 , Platform: Amig
00000050: 614F5300 00005353 4E44260C 00080000 aOS...SSND&.....
00000060: 00000000 0000C1C4 C1C42D30 2D302528 ......ÁÄÁÄ-0-0%(
00000070: 25282C2F 2C2F393C 393C2E31 2E31383B %(,/,/9<9<.1.18;
00000080: 383B3639 36392E31 2E313639 3639272A 8;6969.1.16969'*
00000090: 272A4447 44473F42 3F422A2D 2A2D3639 '*DGDG?B?B*-*-69
000000A0: 36393D40 3D403639 36394447 4447373A 69=@=@6969DGDG7:
000000B0: 373A2B2E 2B2E2E31 2E314346 43463538 7:+.+..1.1CFCF58
000000C0: 35383F42 3F425457 54571B1E 1B1E4245 58?B?BTWTW....BE
000000D0: 4245373A 373A4043 40434346 43462629 BE7:7:@C@CCFCF&)
000000E0: 2629474A 474A2E31 2E31474A 474A2E31 &)GJGJ.1.1GJGJ.1
000000F0: 2E315154 51542E31 2E312C2F 2C2F3D40 .1QTQT.1.1,/,/=@


[ - Answer - Quote - Direct link - ]

2007-09-08, 15:36 h

ZeroG
Posts: 1487
User
@DaxB:
Das wurde mit einer veralteten version von AHIRecord aufgenommen die eine falsche Größe für den ANNO-Chunk schreibt.
Siehe http://www.amiga-news.de/forum/thread.php?id=25638&BoardID=1

Mit welchem Programm hast du denn die Hexdumps gemacht, geht das damit nicht? Ansonsten könntest du mal versuchen ob du mit IFFMaster einfach den ganzen ANNO-Chunk löschen kannst. Der ANNO-Chunk enthält nur ein Kommentar und ist für die eigendlichen Daten überflüssig, aber benutz vorsichtshalber eine Kopie.
http://aminet.net/package/util/misc/IFFMaster16

[ - Answer - Quote - Direct link - ]

2007-09-08, 17:52 h

DaxB
Posts: 1422
User
@ZeroG:
Aufgenommen habe ich mit AHIRecord 1.15a (04.04.2007). Ist das nicht die aktuellste?

Der "Fehler" wurde evtl. dadurch erzeugt, weil sich AHIRecord wahrscheinlich im Pause Modus befunden hat, als der Header geschrieben wurde. Ich muss das nochmal testen, ob das reproduzierbar ist. Wenn du Lust hast, dann kannst du das ja mal probieren. :)

IFFMaster hatte ich schon versucht, da gibt es (wohl wegen der Grösse) eine "Stream read error" beim laden.

Der HexDump ist mit EasyHex ( http://www.onyxsoft.se/ ) gemacht. Damit geht "nur" auslesen.

[ - Answer - Quote - Direct link - ]

2007-09-08, 18:04 h

MaikG
Posts: 5172
User
Filemaster - HexEdit

[ - Answer - Quote - Direct link - ]

2007-09-08, 19:12 h

akl
Posts: 265
User
@DaxB:
Du kannst auch mal IFF-Arranger ausprobieren:
http://aminet.net/package/util/misc/IFF-Arr

[ - Answer - Quote - Direct link - ]

2007-09-08, 20:29 h

Palgucker
Posts: 1342
User
@ DaxB

In Deinem AIFF fehlen nur die Längenangaben vom FORM- und SSND-Chunk. Das sollte sich mit z.B. per Arexx "richten" lassen.

code:
/* */
Parse Arg File

IF ~SHOW('LIBRARIES','rexxsupport.library') THEN DO
   IF ~ADDLIB('rexxsupport.library',10,-30,0) THEN DO
      SAY 'Kann die <rexxsupport.library> nicht öffnen!'
      EXIT(10)
   END
END

Laenge=SUBWORD(STATEF(File),2,1)
Call Open(File,File,A)
WPos=Seek(File,4,Begin)
Formlen=x2c(d2x(Laenge-WPos-4,8))
Wr=Writech(File,Formlen)
WPos=Seek(File,90,Begin)
SSNDlen=x2c(d2x(Laenge-WPos-4,8))
Wr=Writech(File,SSNDlen)
Cl=Close(File)


Vorsicht! Dieses Script schreibt stur die errechnete Länge an 4. und 90. Position, so das es bei anderen AIFF's leicht in die Hose gehen kann.

Gruß Palgucker

[ - Answer - Quote - Direct link - ]

2007-09-09, 19:34 h

DaxB
Posts: 1422
User
Danke für die Hilfe(n). Habe mir alle genannten Programme angeschaut und das Skript funktioniert auch.

@Palgucker:
Mit der korrigierten Länge liess sich das AIFF "vernünftig" laden mit SoundFX. Musste nur noch die Samplingfrequenz ändern. Ich dachte die steht auch im Header. Wenn ja, wo, bzw. wie kann ich die ändern?

[ - Answer - Quote - Direct link - ]

2007-09-09, 20:22 h

ZeroG
Posts: 1487
User
@DaxB:
Im COMM-Chunk:
COMM
dann 4 Bytes größe des Chunks
dann 8 Bytes andere Daten
dann 10 Bytes Samplingfrequenz als 80 bit IEEE Standard 754 Fließkommazahl.

Am besten von einer Datei mit der richtigen Samplingrate abschreiben.

[ - Answer - Quote - Direct link - ]

2007-09-10, 01:52 h

DaxB
Posts: 1422
User
@ZeroG:
Danke. Wo bekommt man den solche Informationen zu Fileformat Header-Beschreibungen? Könnte mir das dann wahrscheinlich selber zusammenbasteln.

[ - Answer - Quote - Direct link - ]

2007-09-10, 16:41 h

ZeroG
Posts: 1487
User
@DaxB:
http://www.wotsit.org/ ist eine sehr gute Anlaufstelle für sowas, mitunter findet man auch sehr interressante Dinge im Aminet, oder bei Firmen die damals große Amigaanwendungen hatten(z.b. NewTek).

Im Fall von IFF-AIFF (und einigen anderen) reicht auch die IFF-Spec aus dem Amiga ROM Kernel Reference Manual: Devices 3rd Edition- heutzutage am besten als AmigaGuide/HTML auf den AmigaDeveloperCDs zu finden. Die IFF-AIFF spec müsste es eigendlich auch bei Apple geben, ist schließlich auf deren Mist gewachsen...

[ - Answer - Quote - Direct link - ]

2007-09-10, 21:34 h

DaxB
Posts: 1422
User
@ZeroG:
Danke für die Tips. Auf wotsit habe ich eben die AIFF Informationen angeschaut. Scheint aber leider kein gutes Beispiel zu sein für meinen bescheidenen Kenntnisstand.

[ - Answer - Quote - Direct link - ]

2007-09-10, 22:15 h

ZeroG
Posts: 1487
User
@DaxB:
Nichts zu danken.

Wenn du das AIFF1.zip Archiv genommen hast (was ich doch hoffe) hast du exakt den gleichen Text wie im RKM:Devices - minus die Bilder die ich doch recht informativ finde.

Die Dinger sind nun mal für Programmierer gedacht die sich schon mit dem IFF-Standart auf dem AIFF basiert auskennen und wissen wie man auf diese 80bit Fließkommazahlen kommt.

Zum Glück brauchst du dich für dein Sampleproblem nicht damit herumschlagen. Du kannst die betreffende Information ja einfach bei einer intakten AIFF-Datei mit der richtigen Samplefrequenz abschreiben.

Wenn du dich wirklich mit dem AIFF-Format beschäftigen willst guck dir am besten erstmal eine Programmiersprache (z.B. C) genauer an und dann auf jeden Fall denn IFF-Standart, den jedes AIFF ist eigendlich ein IFF vom Typ AIFF. Also wurde bei der beschreibung von AIFF das weggelassen was schon bei IFF geklärt wird.

[ - Answer - Quote - Direct link - ]

2007-09-12, 19:20 h

Palgucker
Posts: 1342
User
@ DaxB

Da Du wohl auch ziemlich ungebräuchliche Sampleraten benutzt, hier noch eine "Krücke". ;)

code:
/*AIFF-Samplefrequenz  */
Parse Arg Freq

Stop=65535*4 / Freq
DL=0 ; Multi=0
Do Forever
  Multi=2 ** Dl
   If Multi>Stop Then Leave
  Dl=Dl+1
End
say C2X(D2C(16400-(Dl-1)))||D2X(Freq*Multi/8,4)


Einfach beim Aufruf des Scriptes die "Wunschrate" als Argument mit eingeben, und es gibt den Hexwert der ersten 4 Byte der Samlingrate aus.

Gruß Palgucker





[ Dieser Beitrag wurde von Palgucker am 12.09.2007 um 20:39 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2007-09-12, 21:56 h

DaxB
Posts: 1422
User
@ZeroG:
IFF selber habe ich mir nicht angeguckt. Fiesse Falle das. ;)

@Palgucker:
Feines Script. Bei AHIRecord habe ich schon 22050Hz eingestellt, aber es kommt, warum auch immer, 22168Hz raus (TechnoSoundTurboII-Sampler). Liegt wohl an AHI (hier 4.180).

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Amiga, AmigaOS 4 > AIFF header manuell ändern [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.