|
29 апреля 2018, 23:23 | |
|
LV8 |
HP | |
MP | | Стаж: 15 лет |
Постов: 3515 |
|
Благодарю, разобрался. Мне нужно было не ноты играть (в моем случае код работает с потоком данных, а не с индивидуальными нотами - уровень абстракции выше), мне нужно было изменить основную громкость на порте MIDI. Штатные средства DirectMusic позволяют это делать, но работает это только с программным синтезатором Microsoft, а с аппаратными синетазаторами и эмуляторами аппаратных синтезаторов - нет. Я думал каким-либо образом захватить буфер DirectSound, в котором производится финальное микширование (DirectMusic в конечном счете использует буферы DirectSound) и поколдовать с ним, или создать свой буфер, перенаправить на него вывод синтезатора и опять же, поколдовать с ним, но в конце-концов сообразил, что тупил. Вывод аппаратного синтезатора ни в какой буфер не направляется, он идет прямиком на колонки. И чтобы изменить громкость, нужно не с буферами химичить, а подать эксклюзивное системное сообщение (SysEx) контроллеру MIDI порта.Если тебе дадут линованную бумагу, пиши поперек. |
|
|