Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2008, 22:38   #1
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию Структура midi файлов

Собственно хотелось бы услышать от тех кто работал с миди как там представляются данные.

Или может кто то встречал библиотеку для работы с миди? Чтобы были функции вроде создать миди файл, сейчас такая нота через пару секунд другая, ещё через пол третья...
lacost вне форума Ответить с цитированием
Старый 03.10.2008, 15:31   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

http://ru.wikipedia.org/wiki/MIDI
Alter вне форума Ответить с цитированием
Старый 03.10.2008, 20:57   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Или может кто то встречал библиотеку для работы с миди?
Встречал, MMSystem.
Вложения
Тип файла: rar midi.rar (7.6 Кб, 136 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.10.2008, 23:54   #4
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию

mutabor, про MMSystem я знаю всё равно спсибо за описание функций миди представленных там.

Но я имел в виду библиотеку для создания миди файлов.
На сколько я понимаю нужно просто обьявить file of byte и писать туда все неоюходимые данны...но так же не хочеться писать библиотеку самомму)))

Встретил вот такую, но наверно что то делаю не так потому чсто файл миди создаётся но не играет.

Код:
procedure TForm1.Button1Click(Sender: TObject);

var
   MidiHead: TMidiHead;
   MidiTrack: TMidiTrack;
   MidiEvent: PMidiEvent;
   MFile : TMidiFile;
begin
   {Объявляю  Хидер }
   MidiHead.FileType:=ftSingle;
   MidiHead.NumberTracks:=1;
   MidiHead.PulsesPerQuarter:=16;


   {Новое  Событие }
   New(MidiEvent);
   MidiEvent^.iTrack:=0;
   MidiEvent^.iEvent:=8;
   MidiEvent^.iData1:=8;
   MidiEvent^.iData2:=8;
   MidiEvent^.sLetter:='8';
   MidiEvent^.iPulses:=8;
   MidiEvent^.iPositon:=8;
   { Добавляем событие в трек }
   MidiTrack:=TMidiTrack.Create;
   MidiTrack.AddEvent(MidiEvent);
   { Добавляем трек }
   MFile.SetTrack(MidiTrack);
   { Пишем в указанный файл }
   MFile.FileName:='m.midi';
   MFile.WriteFile;  // процедура выполняется до конца нормально проверял пошагово

end; //странно но в дебагере именно єта строчка даёт ошибку как так? О_о
Вложения
Тип файла: zip MidiFile.zip (4.0 Кб, 63 просмотров)
lacost вне форума Ответить с цитированием
Старый 04.10.2008, 09:00   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от lacost Посмотреть сообщение

...
MidiTrack.AddEvent(MidiEvent);
{ Добавляем трек }
MFile.SetTrack(MidiTrack);
{ Пишем в указанный файл }
MFile.FileName:='m.midi';
MFile.WriteFile; // процедура выполняется до конца нормально проверял пошагово
end; //странно но в дебагере именно єта строчка даёт ошибку как так? О_о
Вы не создаете объект, поэтому ошибка:
Код:
 MFile := TMidiFile.Create(nil);  //!!!
   try
      MFile.SetTrack(MidiTrack);
      MFile.FileName:='m.midi';
      MFile.WriteFile;
   finally
      MFile.Free;
   end;
Это устраняет ошибку, но midi-файл создается размером 14 байт. Ищите описание к этому компоненту.
alexBlack вне форума Ответить с цитированием
Старый 21.08.2011, 09:39   #6
makshimik
 
Регистрация: 13.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от lacost Посмотреть сообщение
mutabor, про MMSystem я знаю всё равно спсибо за описание функций миди представленных там.

Но я имел в виду библиотеку для создания миди файлов.
На сколько я понимаю нужно просто обьявить file of byte и писать туда все неоюходимые данны...но так же не хочеться писать библиотеку самомму)))

Встретил вот такую, но наверно что то делаю не так потому чсто файл миди создаётся но не играет.

Код:
procedure TForm1.Button1Click(Sender: TObject);

var
   MidiHead: TMidiHead;
   MidiTrack: TMidiTrack;
   MidiEvent: PMidiEvent;
   MFile : TMidiFile;
begin
   {Объявляю  Хидер }
   MidiHead.FileType:=ftSingle;
   MidiHead.NumberTracks:=1;
   MidiHead.PulsesPerQuarter:=16;


   {Новое  Событие }
   New(MidiEvent);
   MidiEvent^.iTrack:=0;
   MidiEvent^.iEvent:=8;
   MidiEvent^.iData1:=8;
   MidiEvent^.iData2:=8;
   MidiEvent^.sLetter:='8';
   MidiEvent^.iPulses:=8;
   MidiEvent^.iPositon:=8;
   { Добавляем событие в трек }
   MidiTrack:=TMidiTrack.Create;
   MidiTrack.AddEvent(MidiEvent);
   { Добавляем трек }
   MFile.SetTrack(MidiTrack);
   { Пишем в указанный файл }
   MFile.FileName:='m.midi';
   MFile.WriteFile;  // процедура выполняется до конца нормально проверял пошагово

end; //странно но в дебагере именно єта строчка даёт ошибку как так? О_о
А что за белиберду ты там пишешь в поля MidiEvent? Чему играть-то там?
makshimik вне форума Ответить с цитированием
Старый 21.08.2011, 21:49   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
end; //странно но в дебагере именно єта строчка даёт ошибку как так?
А ничего странного, все закономерно: ты по забывчивости или по незнанию нагадил в стеке, не создав объект MFile.
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура файла Mayor Общие вопросы Delphi 1 11.08.2008 16:45
Циклическое проигрывание midi-файла без разрывов в звучании LordYuri Мультимедиа в Delphi 2 23.04.2008 18:09
MIDI Shurik Hacker Компоненты Delphi 1 21.01.2008 13:54
как перевести музон формата mp3 в waw или midi? geniy Свободное общение 7 02.09.2007 18:49
Воспроизведение Midi-нот desperado Общие вопросы Delphi 2 26.06.2007 13:22