Технологии программирования миди

 Навигация:

 Поиск:

 Новости:

17.02.2007
Полностью переработан дизайн сайта.

6.01.2007
Добавлен раздел Наработки Полезные и интересные программы и их исходники от автора.

19.11.2006
Функции WriteVarLen и ReadVarLen портированы с СИ на Delphi читать

14.11.2006
Появилась cтатья Midi-протокол глазами программиста

24.10.2006
Написана вторая часть MMSystem Функции midiOutGetVolume midiOutSetVolume midiOutMessage midiOutShortMsg и midiOutLongMsg

12.10.2006
Добавлен раздел Multimedia , который содержит большое количество информации по мультимедийным технологиям.

1.09.2006
Добавлен раздел MMSystem в котором находятся
подробные опсания функций winmm.dll, определенных в модуле mmSystem.pas,
с примерами их использования в Delphi.

13.08.2006
Опубликован исходник приложения, записывающего игру на клавиатуре
в стандартный midi-файл SMF - 0

4.07.2006
Добавлен раздел Структура формата миди-файла

 Счетчики:
Rambler's Top100 Яндекс цитирования Rambler's Top100
 Контент:

Интерфейс управляющих строк MCI

MCI (Media Control Interface) представляет собой универсальный, не-зависимый от особенной аппаратуры интерфейс, предназначенный для управления устройствами мультимедиа (звуковые и видеоадаптеры, уст-ройства чтения звуковых компакт-дисков и лазерных видеодисков). Воз-можности интерфейса MCI удовлетворяют практически всем потребностям любого приложения мультимедиа, предназначенного для записи и воспро-изведения звуковой или видеоинформации; при необходимости обработки данных на низком уровне или в реальном времени (редактирование и пре-образование WAV-файлов, распознавание речи и/или образов, преобразо-вание речи в режиме реальном времени) может использоваться нижеопи-санным интерфейсом низкого уровня. Ниже подробно описано использо-вание интерфейса MCI при работе со звуком, однако MCI также эффекти-вен при работе с видео; известный Delphi-и C++Builder-компонент MediaPlayer является всего лишь надстрой-кой над уровнем MCI-инструкций.

Все функции интерфейса MCI экспортируются из библиотеки mmsystem.dll; эти функции непосредственно обращаются к драйверам устройств ввода/вывода и к функциям низкого уровня, определенным в той же библиотеке. Заметим, что не все команды могут быть вы-полнены конкретным устройством мультимедиа (например, не все устрой-ства работы с лазерными дисками имеют возможность их записи), поэтому перед использованием устройства необходимо программно выяснить его возможности (для чего имеются специальные функции).

Приложения могут использовать два типа программного интерфейса MCI -основанный на использовании текстовых команд интерфейс управ-ляющих строк (Command-String Interface) и основанный на посылке сооб-щений интерфейс управляющих событий (Command-Message Interface, см. подраздел 3.5 данной работы).

Интерфейс управляющих строк удобен для использования в системах программирования высокого уровня; например, для проигрывания звукового файла ding.wav достаточно передать звуковому адаптеру следующую последовательность управляющих строк

open ding.wav type waveaudio alias snd wait play snd wait close snd

При использовании интерфейса управляющих строк используется функция mciSendString, которой в качестве первого параметра передается указатель на строку команды

DWORD
mciSendString(
LPSTR lpstrCommand, // строка управления
LPSTR lpstrReturnString, // буфер для результата
UINT wReturnLength, // размер этого буфера
HANDLE hCallback); // идентификатор окна извещения

Здесь lpstrCommand -дальний указатель на текстовую управляющую строку,
lpstrReturnLength -размер буфера для занесения результата вы-полнения команды (в текстовом виде, для игнорирования результата можно использовать NULL),
wReturnLength -размер этого буфера,
hCallback -идентификатор получающего сообщение MM_MCINOTIFY окна (сооб-щение посылается после завершения операции устройством, для игнориро-вания сообщения можно использовать NULL).

В нижеприведенной таблице приведены возвращаемые функцией mciSendString значения (при успехе возвращается нуль)
Значение Описание
MCIERR_BAD_CONSTANT Указана недопустимая для данной команды кон-станта
MCIERR_BAD_INTEGER Указано недопустимое для данной команды зна-чение
MCIERR_DUPLICATE_FLAGS Двойное определение параметра или значения
MCIERR_MISSING_DEVICE_ NAME В управляющей строке не указано имя устройст-ва, драйвера, файла или алиас (альтернативное имя)
MCIERR_MISSING_STRING_ ARGUMENT Не указан обязательный параметр команды
MCIERR_NEW_REQUIRED_ ALIAS При использовании параметра new не указан али-ас
MCIERR_NO_CLOSING_ QUOTE В команде отсутствуют закрывающие двойные кавычки
MCIERR_NOTIFY_ON_AUTO_ OPEN Для автоматически открываемого устройства нельзя указывать флаг notify
MCIERR_PARAM_OVERFLOW Строка параметра не помещается в буфер (размер оного следует увеличить)
MCIERR_PARSER_INTERNAL Ошибка в драйвере устройства (возможно, драй-вер следует заменить новым, более поздней вер- сии)
MCIERR_UNRECOGNIZED_ Не распознан параметр управляющей строки KEYWORD

Для преобразования полученного от функции mciSendString кода ошибки в текстовую строку можно воспользоваться функцией mciGetErrorString, которой необходимо передать двойное слово кода ошибки (текстовая строка будет возвращена в параметре lpstrBuffer)

UINT mciGetErrorString(
DWORD dwError, // код ошибки LPSTR lpstrBuffer, // буфер для записи текстовой // строки ошибки
UINT wLength); // размер этого буфера

При успешном завершении функция mciGetErrorString возвращает TRUE; при невозможности сопоставить заданному коду текстового описания возвращается FALSE.

Содержание
 Bash.org.ru:

 Реклама:

 ©Copyright:
http://www.last.h16.ru - программирование миди. Идея, разработка и поддержка : Mo-skin © 2006-2007
X