Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Hardcode MidiHeader

  Alt 13. Apr 2011, 10:21
Habe mich mal im Internet auf diversen Seiten schlau gemacht über die zusammensetzung der Midi Header

Das ist dabei herausgekommen.
Wenn sich jemand auskennt ..
Sind die Daten so korrekt?

Delphi-Quellcode:
procedure ExpMidiFile;
var
  Bytes: array[0..10000] of byte;

begin
  // MIDI File Header Chunk (14 bytes)
  // MTHD
  Bytes[1] := ord('M');
  Bytes[2] := ord('T');
  Bytes[3] := ord('h');
  Bytes[4] := ord('d');

  // Headerlänge 6 bytes
  Bytes[5] := 0;
  Bytes[6] := 0;
  Bytes[7] := 0;
  Bytes[8] := 6;

  // 6 byte Header
  // 0 - Einzelne Spur
  // 1 - Mehrere Spuren, Syncron
  // 2 - Mehrere Spuren, ASyncron
  Bytes[9] := 0;
  Bytes[10] := 1;

  Bytes[11] := 0;
  Bytes[12] := 9; // Spur Nummer

  Bytes[13] := 0;
  Bytes[14] := 48; // Anzahl der Delta-Zeit sekunde pro Viertelnote

  // Spur 1
  // MTRK
  Bytes[15] := ord('M');
  Bytes[16] := ord('T');
  Bytes[17] := ord('r');
  Bytes[18] := ord('k');

  // Anzahl der Bytes in der Spur
  Bytes[19] := 0;
  Bytes[20] := 0;
  Bytes[21] := 0;
  Bytes[22] := 19;

  // Geschwindigkeit
  Bytes[23] := 0; // delta Zeit
  Bytes[24] := 255; // FF (Meta Befehl)
  Bytes[25] := 81; // Tempo Befehl
  Bytes[26] := 3; // 3 bytes für Tempo Beschreibung

  // Zeit Signatur
  Bytes[30] := 0; // delta Zeit
  Bytes[31] := 255; // FF (Meta Befehl)
  Bytes[32] := 88; // Zeit Signatur Befehl
  Bytes[33] := 4; // 4 bytes
  Bytes[34] := 4; // Zähler
  Bytes[35] := 2; // Nenner (2 = 1/4, 3 = 1/8, 4 = 1/16, etc.)
  Bytes[36] := 24; // ?
  Bytes[37] := 8; // 32 Note in einer 4 Note;

  // Spur Ende
  Bytes[38] := 0; // delta Zeit
  Bytes[39] := 255; // Spurende Befehl
  Bytes[40] := 47;
  Bytes[41] := 0;
Bin erst am Anfang und ist nicht so leicht umzusetzen.
Für alle bytes habe ich keine Infos gefunden.
Bringt mir ja nichts wenn mein Header falsch ist und die MIDI nachher nicht als Midi erkannt wird.

gruss

Geändert von EWeiss (13. Apr 2011 um 10:39 Uhr)
  Mit Zitat antworten Zitat