Midi структура файла

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
dykzei
Сообщения: 42
Зарегистрирован: 22 сен 2004, 14:35

помогите сгенерить массив байт как миди файл... обчитался структурой нет нигде вменяемых примеров где што пишется, в итоге не работает... может у кого-то есть нормальная дока?
BreakPointMAN
Сообщения: 38
Зарегистрирован: 21 июн 2004, 02:59
Откуда: Saratov
Контактная информация:

http://www.wotsit.org/ тебе в помощь.
dykzei
Сообщения: 42
Зарегистрирован: 22 сен 2004, 14:35

сорри что на перле показываю...
как правильно обозначать Delta time?
то что ниже - делает какую-то белеберду
:( ( по спецификации ведь должно быть 1 канал 1 нота?

Код: Выделить всё

#! 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;
Real_Bastard
Сообщения: 1
Зарегистрирован: 12 фев 2006, 23:53
Контактная информация:

# MIDI track data
0x4D, 0x54, 0x72, 0x6B, # MTrk
0x00, 0x00, 0x00, 0x00, # length
у тебя ж длинна нулевая, потому и не пашет
Ответить