Beitrag
von Joachim » 27.04.2011, 14:17
Hallo Siggi,
im Soundfile ist für jede Aktion, die sich auf die Ausgabe eines Tones über die Kanäle bezieht, auch eine Dauer angegeben. Die könnte man verändern. Wie das Soundfile aufgebaut ist, erkläre ich im Beispiel von Pinkpanther:
Der ersten 158 Bytes beinhalten offensichtlich einen Header. Ab dem 159 Byte geht es so weiter:
$00, Start
$07,$38, Mixer (Register 7): Kanal a = Eingabe, Kanal b = Eingabe, kein Rauschen, Tonausgabe auf a, b und c
$00, Trennzeichen
$08,$00, Lautstärke Kanal a (Register 08): 0
$00, Trennzeichen
$09,$00 Lautstärke Kanal b(Register 09): 0
$00, Trennzeichen
$10,$00, Lautstärke Kanal c: 0
$48, Dauer
$00,$0b, Tonhöhe Kanal a (Register 00) Feinabgleich: 0b
$00, Trennzeichen
$01,$01 Tonhöhe Kanal a (Register 01) Grobabgleich: 01
$00, Trennzeichen
$08,$0c, Lautstärke a
$00,
$02,$90, Tonhöhe b
$00,
$03,$01 Tonhöhe b
$00,
$09,$0c, Lautstärke b
$00,
$04,$16, Tonhöhe c
$00,
$05,$02 Tonhöhe c
$00,
$0a,$0c, Lautstärke c
$09, Dauer
$00,$fc, jetz wieder: Tonhöhe Register a Feinabgleich
$00,
$01,$00 Tonhöhe Register a Grobabgleich
$00, Trenner
$02,$79, Tonhöhe Register b Feinabgleich
$00, Trenner
$04,$f8, Tonhöhe Register c Feinabgleich
$00, Trenner
$05,$01 Tonhöhe Register c Grobableich
$09, Dauer
$08,$00, Lautstärke a
$00, Trennzeichen
$09,$00, Lautstärke b
$00, Trennzeichen
$0a,$00 Lautstärke c
$09, Dauer
$00,$ee, usw. usw. usw.
Kommt also nach der Ausgabe von Register und Wert (2 outs) keine 0 (Trennzeichen) im File, handelt es sich um die Dauer. Die könnte man verändern. Das wäre im Maschinenprogramm möglich.
Das MC verwendet das Byte für die Dauer als Zählspeicher (deshalb kann man das Soundfile nur einmal abspielen). Ist dieses auf Null, geht es weiter. Hier könnte man zum Verkürzen nicht auf Null prüfen, sondern auf einen anderen Wert.
Hoffe, das hilft dir weiter.
Grüße
Joachim
Viele Grüße!
Joachim
ZX80, ZX81, ZX-Spectrum, ZX96, ZX2000, ZXmore, ZX81NU, Blauer Engel, AX81