Zum Inhalt springen

SPC (Dateiformat)

aus Wikipedia, der freien Enzyklopädie

SPC (auch SPC700 Audio-Datei genannt) ist ein Dateiformat für Videospielmusik. Dieses enthält Kopien von Melodien und Musikdaten, wie sie im RAM des Soundchips SPC700 verwendet werden, welcher in der Spielkonsole Super Nintendo Entertainment System (SNES) eingesetzt wurde. Alternativ können die Daten auch durch einen Konsolenemulator wie ZSNES oder Snes9x verarbeitet werden.

Technik

Der SPC700-Chip (oder dessen Emulator) erzeugt den Klang durch den Aufruf eines eingebetteten Programms, das die gespeicherten Musikdaten verarbeitet und in eine an den Chip ausgegebene Sequenz von DSP-Befehlen umwandelt. Diese erzeugt ihrerseits die Tonausgabe entsprechend den DSP-Befehlen. Die Möglichkeiten der SPC700-DSP-Befehle gestatten die Musik-Synthese durch Samples (analog zur Musikwiedergabe durch MOD oder IT) und eine umfangreiche Tonwiedergabe, die lediglich aus 64 KB Daten erzeugt wurde – während die Speicherung als unkomprimierte WAVE-Datei (bei Verwendung von PCM oder ähnlichem) große Datenmengen, bei bestimmten längeren Stücken bis hin zu hunderten von Megabytes, benötigen würde. Der SPC700-Chip erzeugt ein 16-Bit-Ausgangssignal mit 32 kHz, aber SPC700-Emulatoren können dazu konfiguriert werden, eine andere Abtastrate auszugeben (von acht bis 48 kHz). Die Positionen innerhalb eines Liedes werden durch Tics angegeben. Dadurch ist es möglich, bestimmte Bereiche zu wiederholen und in einer Schleife abzuspielen.

Verwendung

SPC-Plug-ins sind verfügbar für Winamp, foobar2000, Audacious, Rockbox (für tragbare MP3-Player) und andere bekannte Player, von denen einige bereits native SPC-Unterstützung haben. Manche SPC-Player können sogar eine höhere Ausgangsqualität erzeugen als der Chip SPC700 selbst, indem der Ton mit einer höheren Abtastrate ausgegeben wird (bis zu 192 kHz), unter Verwendung komplexerer Sound-Interpolations-Methoden und einer speziellen „High Quality“-Optimierung, wie sie beispielsweise SNESAmp einsetzt. Es gibt auch Programme wie SPC Tool oder SPC2MIDI, die in der Lage sind, aus SPC-Dateien MIDI-Dateien zu erzeugen.

Inzwischen werden Soundtracks mit dem RAR-Algorithmus komprimiert, mittels einer progressiven Kompression, die bei der ZIP-Komprimierung nicht zur Verfügung steht. Dieses Archiv-Format spart viel Platz, da für gewöhnlich eine Vielzahl der Samples innerhalb der Lieder wiederverwendet werden und diese nur einfach gespeichert werden müssen, statt sie stets von neuem zu sichern. Die archivierten Dateien bekommen die Erweiterung RSN und werden vom Player direkt beim Abspielen entpackt.

Einschränkungen

Eine Unzulänglichkeit des SPC-Formats kann bei den Spielen Tales of Phantasia und Star Ocean beobachtet werden. Diese Spiele verwenden „Streaming-Sampling“ womit Samples während der Laufzeit ausgetauscht werden, um die 64-KB-Grenze des SPC700 zu umgehen und so zusätzliche Instrumente und Stimmen einsetzen zu können. Da der Dump jedoch nur die Samples erfasst, die zu Beginn des Spiels geladen werden, führt dies bei einigen Liedern zwangsläufig dazu, dass falsche Samples benutzt werden. Die Musik wird entsprechend entstellt wiedergegeben.

Plug-ins und Player

  • Audacious, ein Mediaplayer für Windows/Linux, der SPC-Dateien unterstützt.
  • Audio Overload, ein unter Windows/Mac/Linux lauffähiger Player speziell für Videospielmusik, der neben vielen anderen auch SPC-Dateien unterstützt.
  • Chipamp, ein von OverClocked ReMix initiiertes Winamp-Plug-in zur Wiedergabe von über 40 Chiptune- und Tracker-Formaten.
  • VLC media player, ein Player für Windows/Mac/Linux, der neben vielen weiteren Formaten auch SPC-Dateien wiedergibt.

Siehe auch

Weblinks

  • <templatestyles src="Webarchiv/styles.css" />{{#if:20070202153330
      | {{#ifeq: 20070202153330 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20070202153330}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20070202153330}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Technische Referenz für das SPC-Dateiformat | {{#invoke:WLink|getEscapedTitle|Technische Referenz für das SPC-Dateiformat}} | {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20070202153330|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt}}
    || {{#if:  || }}
  }}{{#if: Technische Referenz für das SPC-Dateiformat
    | {{#if: {{#invoke:WLink|isBracketedLink|Technische Referenz für das SPC-Dateiformat}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.alpha-ii.com/snesmusic/files/spc_file_format.txt }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} (englisch)

en:SPC700 sound format