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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2010, 11:33   #1
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию Работа со "значением" миди

Доброго времени суток. У меня возникла необходимость работы с миди файлами. Я могу проиграть его, могу сделать, что-то вроде пианино, но не как не могу выполнить следующие… Воспроизводя миди файл мне необходимо получать его значение в настоящий момент времени (как я понял, он воспроизводится этой функцией -midiOutShortMsg(hmidi, i), где i значение воспроизводимого звука), а весь миди файл вызывается из буфера кусками именно в таком виде. Если у кого, то есть, какая ни будь информация, поделитесь, буду очень благодарен…
Stormtrooper вне форума Ответить с цитированием
Старый 24.03.2010, 15:41   #2
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

Если понятнее, то скажем при проигрывании миди файла у меня какой то элемент менял параметр(скажем visible у кнопки) появляясь исчезая в такт
Stormtrooper вне форума Ответить с цитированием
Старый 25.03.2010, 21:00   #3
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

возможен вариант обработки событий (event) которые закодированы в миди, он тоже пригоден. Вообще выслушаю любые предложения, так же буду рад литературе, на эту тему.
Stormtrooper вне форума Ответить с цитированием
Старый 27.03.2010, 13:01   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Не постите много постов подряд, используйте кнопку "Правка".
Что касается миди, я делал пианино, файлы читать не пробовал. Как вы воспроизводите файл? Функцией типа SoundPlay? Тогда не получиться ничего, нужно файл читать на низком уровне, тогда будет доступ ко всем данным. Поищите исходники может есть где-то чтения миди файлов, чтобы самому не писать.
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 вне форума Ответить с цитированием
Старый 27.03.2010, 15:09   #5
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

За несколько сообщений подряд я прошу прощенья. Миди воспроизводил функцией MCISendString(PChar('play ' + FileName), nil, 0, 0); да она не подходит для этого. Не чего на низком уровне не нашел, хотя в тупике (и в поиске)уже дней 10. Очень нужна помощь. В проигрывании файла(звуковом) нужды нет, необходимо получать для обработки инструмент и время. Работать мне нужно с ударными, т.е. высота тона мне тут не столь важна(она постоянна для каждого инструмента).
Stormtrooper вне форума Ответить с цитированием
Старый 28.03.2010, 12:15   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ну тут задача сводится к чтению формата MIDI файла. Есть два пути - писать свою реализацию и воспользоваться уже готовой. Я уверен, что существуют готовые, если бы это было что-то редкое и никому не нужное, то пришлось бы конечно разбирать формат самому, но т.к. это MIDI, то конечно же существуют готовые решения, вопрос стоит только в их платности/бесплатности. Поищите на torry.net компоненты для чтения MIDI, может найдете то, что вам нужно.

з.ы. Вот что я нашел на Торри
Раздел Аудио на Torry
Один из компонентов с низкоуровневым доступом
Исходники работы с MIDI файлами
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; 28.03.2010 в 12:31.
mutabor вне форума Ответить с цитированием
Старый 29.03.2010, 11:32   #7
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

Спасибо огромное, нашел по ссылкам много полезного, буду разбираться.
Stormtrooper вне форума Ответить с цитированием
Старый 11.04.2010, 12:59   #8
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

Мне еще раз необходима помощь. Алгоритм программы будет примерно такой: берем байт, раскладываем на биты, читаем нужные нам биты, формируем свой список событий и их времени. Как в делфи можно реализовать перевод байта в биты? пролазил по инету и нечего не нашел, сразу прошу прощения если вопрос где то поднимался уже.
Stormtrooper вне форума Ответить с цитированием
Старый 12.04.2010, 02:27   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
function GetBit(const Value: Byte; const Bit: Byte): Boolean;
begin
  Result := (Value and (1 shl Bit)) <> 0;
end;

function SetBit(const Value: Byte; const Bit: Byte): Byte;
begin
  Result := Value or (1 shl Bit);
end;

function ClearBit(const Value: Byte; const Bit: Byte): Byte;
begin
  Result := Value and not (1 shl Bit);
end;

function EnableBit(const Value: Byte; const Bit: Byte; const TurnOn: Boolean): Byte;
begin
  Result := (Value or (1 shl Bit)) xor (Byte(not TurnOn) shl Bit);
end;
Если не путаю, там вроде надо перегруппировывать 8-битные значения в 7-битные, так что можно что-нибудь поэффективнее придумать
пыщь
JTG вне форума Ответить с цитированием
Старый 12.04.2010, 09:21   #10
Stormtrooper
 
Регистрация: 24.03.2010
Сообщений: 7
По умолчанию

Спасибо, буду побывать
Stormtrooper вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43