Описание формата MIDI -данных
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Формат МИДИ - Musical Instrument Digital Interface. Существует 16 миди каналов (0..15). На каждом из них в одно и то же время может находиться один инструмент.

Всего существует 128 разных инструментов (0..127). Каждый инструмент занимает определенную позицию в общей структуре тембровой схемы – таблица 2.1. Каждый инструмент имеет 128 нот (0..127).

Простейшая MIDI-команда состоит из 3 байт, которые отправляются MIDI-устройству.

MIDI-команды, которые используются в данной курсовой работе:

Утановить инструмент Instrument в канале Channel

InstrumentByte[0] = 0xC0 | Channel;

InstrumentByte[1] = Instrument;

InstrumentByte[2] = 0;

Воспроизвести ноту Note в канале Channel на максимальной громкости

NoteOnByte[0] = 0x90 | Channel;

NoteOnByte[1] = Note;

NoteOnByte[2] = 0x7F;

Выключить воспроизведение ноты Note в канале Channel

NoteOffByte[0] = 0x80 | Channel;

NoteOffByte[1] = Note;

NoteOffByte[2] = 0x00;

Таблица 2.1 Инструменты MIDI

Acoustic Grand Piano Bright acoustic piano Electric grand piano Honky-tonk piano Electric piano 1 Electric piano 2 Harpsichord Clavi Celesta Glockenspiel Music box Vibraphone Marimba Xylophone Tubular bells Dulcimer Drawbar organ Percussive organ Rock organ Church organ Reed organ Accordian Harmonica Tango accordian Acoustic guitar (nylon) Acoustic guitar (steel) Jazz guitar Clean electric guitar Muted electric guitar Overdrive guitar Distortion guitar Guitar harmonics Accoustic bass Fingered bass Picked bass Fretless bass Slap bass 1 Slap bass 2 Synth bass 1 Synth bass 2 Violin Viola Cello Contrabass Tremolo strings Pizzicato strings Orchestral harp Timpani String ensemble 1 String ensemble 2 Synth. strings 1 Synth strings 2 Choir ahh Choir oohh Synth voice Orchestral hit Trumpet Trombone Tuba Muted trumpet French horn Brass section Synth brass 1 Synth brass 2 Soprano sax Alto sax Tenor sax Baritone sax Oboe English horn Bassoon Clarinet Piccolo Flute Recorder Pan flute Blown bottle Shakuhachi Whistle Ocarina Square wave Sawtooth wave Caliope Chiff Charang Voice Fifth's Bass & lead New age Warm Polysynth Choir Bowed Metallic Halo Sweep FX rain FX soundtrack FX crystal FX atmosphere FX brightness FX goblins FX echo drops FX star theme Sitar Banjo Shamisen Koto Kalimba Bagpipe Fiddle Shanai Tinkle bell Agogo Steel drums Woodblock Taiko drum Melodic tom Synth drum Reverse cymbal Guit.fret noise Breath noise Seashore Bird tweet Telephone ring Helicopter Applause Gunshot

Выбор структуры программного обеспечения

Реализация проекта требует предварительного изучения уже существующих технологий, тщательного отбора методов, удовлетворяющих всем накладываемым заданием условиям. В соответствии с заданием на курсовую работу, необходимо разработать программное обеспечение, позволяющее воспроизводить музыкальные ноты с заданными параметрами при нажатии клавиш. Необходимо выбрать тип и структуру драйвера, который будет получать информацию о нажатых клавишах. Также необходимо выбрать способ доступа к аудиоустройству, способному воспроизводить MIDI-ноты.

Драйвер-фильтр

Из анализа архитектуры Windows XP следует, что для доступа к информации, содержащей коды нажатых или отпущенных клавиш необходимо написать драйвер. Драйвер может получить доступ к кодам нажатых или отпущенных клавиш двумя способами. Либо перехватывая IRP пакеты от других драйверов, либо самостоятельно обрабатывая прерывания от клавиатуры. Предпочтительнее выбрать драйвер-фильтр верхнего уровня, поскольку информация, возвращаемая драйвером клавиатуры, хорошо документирована и описана в литературе. Разрабатываемый драйвер должен быть WDM-драйвером.

Разрабатываемый драйвер-фильтр устанавливается над фильтром Kbdclass. Так как IRP типа IRP_MJ_READ является фактически запросом на чтение данных, то когда он идет вниз по стеку, его буфер пуст. Прочитанные данные буфер будет содержать после завершения IRP. Чтобы эти данные увидеть, фильтр должен установить в свой блок стека IRP процедуру завершения. Место драйвера-фильтра в стеке клавиатуры представлено на рис.2.7.

 

Рис.2.7. Место драйвера-фильтра в стеке клавиатуры

 

Дата: 2019-12-22, просмотров: 238.