C ++ MIDI Инструмент для изменения файлов - PullRequest
1 голос
/ 19 октября 2011

Есть ли способ воспроизвести файл MIDI с помощью C ++ в MSVC 2008 и изменить инструмент, на котором вы играете?то есть я могу воспроизвести файл .mid с несколькими тактами фортепиано, но изменить звук пианино на электрическую гитару?Я использую Microsoft GS Wavetable Synth в качестве синтезатора.

Ответы [ 4 ]

0 голосов
/ 18 ноября 2011

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

Если вы хотите изменить программу на канале 1 на гитару с искажениями, вам нужно вывести байты (в шестнадцатеричном формате):

C0 1E

'C' - это префикс для событий смены программы, 0 относится к каналу 1 (обратите внимание, что мы обычно ссылаемся на миди-каналы 1-16, но события MIDI считают номер канала от нуля). И 1E - это программа 31 (опять же, они обычно выражаются как 1-128, но события midi считаются с нуля).

0 голосов
/ 19 октября 2011

Если инструмент поддерживает его, вы должны отправить сообщение об изменении программы, чтобы изменить звук.В противном случае вы, вероятно, смотрите на эту проблему неправильно и вместо этого должны использовать несколько инструментов.

0 голосов
/ 18 ноября 2011

Проверьте эту ссылку:

http://protodesign -inc.com / источник / MIDI.htm

Функциональность, которую вы ищете, реализована в MIDI.cpp. Также доступно консольное приложение для тестирования:

http://protodesign -inc.com / источник / MIDIplay_X.htm

0 голосов
/ 19 октября 2011
...