![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Лиза |
|
|||
|
Unregistered |
Помогите разложить миди файлы, так что когда играет нота До должно писаться что это До.
Только просьба не отправляйте меня на непонятные ссылки. |
|||
|
||||
| Гость_Forelli |
|
|||
|
Unregistered |
Попробуй CakeWalk Express Gold.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
CakeWalk , а что дальше-то попробуй CakeWalk . И все это я и так знаю, но ничего же не получается
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Не понятно - написать прогу надо или же готовой программой воспользоваться ?
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Надо написать программу, если можно было воспользоваться готовой меня бы здесь не было.
Мне нужно рассказнавать миди файлы в делфи |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Тут работы - часа на 2-3 минимум, так что готовый код вряд ли увидишь, но мы тебе поможем, если возникнут трудности или непонятности...
А так план для тебя таков: надо разобраться с форматом MIDI файла - в принципе, это просто: файл состоит из chunk-ов, есть chunk'и "MTrk" - трэки, их и надо выцепить (на остальные чанки закрыть глаза, кроме "MThd" - заголовочного чанка). В этих треках записаны midi/sysex/meta-события. Среди них нужно выбрать несколько нужных тебе событий... Но дело усложняется тем, что придётся всё-таки распознавать все события (но обратывать их не надо!), т.к. события - разной длины, и чтобы пропустить ненужные события, нужно их вначале распознать, а потом можно только будет узнать их длину... sysex - 2 события, тебе надо их пропускать meta - 15 событий, среди них много ненужных тебе (имя трека, копирайты и др.), но есть и пара нужных - это Set Tempo и Time Signature - если тебе нужны не только ноты, но и временные задержки между ними. midi - события: MIDI Channel Mode Messages - 8 штук, отвечают как видно из названия, за режим канала, в принципе, тебе это не надо MIDI Channel Voice Messages - 7 штук, они то, что тебе нужно... Удачи. -------------------- С уважением, г-н Посол. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Я немного в этом разобралась. Но как в Delphi, открыть текстовую сторону этого файла.
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
поставь себе пакет JCL - я там нашел компонент-клавиатуру, там вообще много всяких интересных компонентов.
|
|||
|
||||
| Ptica |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 27.7.2004 Репутация: нет Всего: 2 |
Текстовую сторону midi-файла? Скажите мне, что это такое, и я скажу, как ее открыть... Мне казалось, что midi-файлы по жизни двоичные... Как справедливо отметил г-н p0s0l, midi-файл в основном состоит из так называемых сообщений. Перед каждым сообщением идет хитрым образом указанное время его исполнения. Сообщения идентифицируются первым байтом. Разные сообщения имеют разную длину, которая либо напрямую зависит от вида сообщения, либо указывается в самом сообщении. Поэтому делаем приблизительно вот что:
1. Открываем файл, как нетипизированный. var midi: file; ... assignfile(f,'tralala.mid'); reset(f,1); 2. Считываем заголовок файла. blockread(f,zagl_f,10); blockread(f, num_of_tracks,2); blockread(f, ticks_per_quarter,2); 3. Считываем заголовок трека blockread(f,zagl_t,4); blockread(f, size_of_track,4); 4. И начинаем читать сообщения: 4.1. Прочитываем время (так называемое delta-time) // ...что не так просто! 4.2. Прочитываем первый байт сообщения blockread(f,bait,1); 4.3. Анализируем его и в зависимости от значения продолжаем чтение. ... 4.Х. Прочитав все сообщение, обрабатываем его данные, как нам нужно. 4.Х+1. Если трек еще не дочитан, переходим к следующему сообщению. Это придется делать руками. Если Вы с форматом midi-файла разобрались, дерзайте дальше. А открыть в Дельфи текстовую сторону midi-файла... тут я Вам ничем не помогу. Если честно, я вчера от нечего делать сам расковырял этот формат, и даже почти написал прогу на Паскале, которая читает midi и пишет все в текстовый файл человеческим языком. Она еще не все сообщения распознает, и не всегда корректно обрабатывает конец файла. И написана она коряво ...абы работало. Доделывать ее я пока не хочу... разве что кто НУ ОЧЕНЬ попросит. Если она Вам нужна, я Вам могу ее скинуть as is. Занимает она 290 строк. (Это так, к слову пришлось). |
|||
|
||||
| Mew |
|
|||
|
Unregistered |
Если не трудно пришли. Я с этим уже разбираюсь очень долго. Иногда мне кажеться что писать в паскале. было легче чем в делфи. мой e-mail [email protected]
|
|||
|
||||
| Ptica |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 27.7.2004 Репутация: нет Всего: 2 |
to Mew
проверьте почту |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |