Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Сдвиг инструментов при проигрывании MIDI   Найти похожие ветки 

 
YY   (2002-02-27 21:43) [0]

Я сделал проигрыватель MIDI-файлов из TMediaPlayer. Добавил к стандартным функциям ещё ползунок, который можно двигать и менять место, с которого проигрывается мелодия.
Проблема в том, что когда этот ползунок передвигаешь, всё начинает играть с нужного места, но другими инструментами.
Новая позиция присваивается в лоб:

var
NewPos:LongInt;
{.....}
MediaPlayer1.Position:=NewPos;


Позицию можно менять и во время проигрывания, и во время паузы, но этот неприятный эффект всё равно остаётся.

Программа тестировалась на трёх компьютерах с совершенно разными звуковыми картами и операционными системами. Кто не верит, может сам попробовать.

Не сможет ли кто-нибудь подсказать, как этого избежать. Ни в одной документации я описания этой проблемы не нашёл.


 
Digitman ©   (2002-03-01 08:49) [1]

Возможно, поток MIDI-событий, воспроизводимый плейером, содержит SysEx-события, среди которых есть события канального мэппинга. Вероятно, когда ты меняешь стартовую позицию в MIDI-потоке, такие события пропускаются, а они как раз и могут влиять на раскладку канальной тембральности (причем блоки таких событий могут присутствовать в потоке и не в одном месте)
Обсуждение даже одной только GM-спецификации займет не одну страницу, поэтому для проверки такого предположения порекомендую следующее :

- найди MID-файл, заведомо не содержащий SysEx-команд;

- установи любой более-менее приличный-серьезный программный секвенсер (например, Cakewalk Pro Audio), загрузи туда MID-файл, открой окно редактора SysEx-событий, удали все SysEx, сохрани в другой MID-файл, поэкспериментируй с ним в MediaPlayer"е : MIDI-треки будут, возможно, воспроизводиться и неверными инструментами, но проблема неожиданной смены канальной раскладки при изменении позиции должны исчезнуть.



Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
1-23668
cher_gvf
2002-06-26 13:12
2002.07.08
Как узнать код ошибки EInOutError ?


3-23454
Bocman
2002-06-14 14:51
2002.07.08
Помогите!!!!


1-23580
Дядя Будда
2002-06-24 14:14
2002.07.08
Нужно определить цепочку предков


14-23741
Bogdan_Lit
2002-06-05 00:02
2002.07.08
Компонент типа спидомитер.


1-23658
Anton V
2002-06-26 11:00
2002.07.08
Вопрос про нити!!!!!