Midi структура файла
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
помогите сгенерить массив байт как миди файл... обчитался структурой нет нигде вменяемых примеров где што пишется, в итоге не работает... может у кого-то есть нормальная дока?
-
- Сообщения: 38
- Зарегистрирован: 21 июн 2004, 02:59
- Откуда: Saratov
- Контактная информация:
http://www.wotsit.org/ тебе в помощь.
сорри что на перле показываю...
как правильно обозначать Delta time?
то что ниже - делает какую-то белеберду
( по спецификации ведь должно быть 1 канал 1 нота?
как правильно обозначать Delta time?
то что ниже - делает какую-то белеберду

Код: Выделить всё
#! 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, 0x00, # Delta time
0xFF, 0x58, 0x04, 0x06, 0x04, 0x24, 0x08,
# Key Signature
#0x00, 0x00, # Delta time
0xFF, 0x59, 0x02, 0x00, 0x00,
# Set tempo
#0x00, 0x00, # Delta time
0xFF, 0x51, 0x03, 0x07 ,0xA1, 0x20,
# Set Instrument: Piano [0]
#0x00, 0x00, # Delta time
0xC0, 0x20, 0x00,
# Play C5 note
#0x00, 0x10, # Delta time
0x90, 0x3C, 0x7F,
# End of the track
0x00, 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;
-
- Сообщения: 1
- Зарегистрирован: 12 фев 2006, 23:53
- Контактная информация:
# MIDI track data
0x4D, 0x54, 0x72, 0x6B, # MTrk
0x00, 0x00, 0x00, 0x00, # length
у тебя ж длинна нулевая, потому и не пашет
0x4D, 0x54, 0x72, 0x6B, # MTrk
0x00, 0x00, 0x00, 0x00, # length
у тебя ж длинна нулевая, потому и не пашет