Re[2]: Midi, содержимое файла
От: 0x45455844  
Дата: 14.02.06 17:14
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>Я думаю это поможет:

РД>http://jedi.ks.uiuc.edu/~johns/links/music/midifile.html

да, удивитесь, именно это и использовал для изучения.
кое с чем разобрался, вот что сейчас не могу понять
всё вроде правильно, но не работает.
track length я устанавливаю в конце после инициилизации массива


#! perl -w

my @d = (

0x4D, 0x54, 0x68, 0x64, # MThd
0x00, 0x00, 0x00, 0x06, # length
0x00, 0x00, # Format 0
0x00, 0x01, # the number of track chunks in the file
0x00, 0x60, # time Division

# MIDI track data
0x4D, 0x54, 0x72, 0x6B, # MTrk
0x00, 0x00, 0x00, 0x00, # length

#-----------------------------------------------------------------
# Time Signature
0x00, # Delta time
0xFF, 0x58, 0x04, 0x06, 0x04, 0x24, 0x08,

# Key Signature
0x00, # Delta time
0xFF, 0x59, 0x02, 0x00, 0x00,

# Set tempo
0x00, # Delta time
0xFF, 0x51, 0x03, 0x07 ,0xA1, 0x20,

# Set Instrument: Piano [0]
0x00, # Delta time
0xC0, 0x20, 0x00,

# Play C5 note
0x00, # Delta time
0x90, 0x3C, 0x7F,


# End of the track
0x10,# Delta time
0xFF, 0x2F, 0x00
);

$d[21] = scalar(@d) — 14 — 8 + 1;
print "track length = $d[21]";

open(FL, "> x.mid");
binmode FL;
for(@d){
printf FL "%c",$_;
}

close FL;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.