2010-10-06 4 views
0

[я делаю эту работу в Java, но я думаю, что вопрос зависит от языка.]Настройка MIDI Note Volume

У меня есть MIDI Note On Volume (так называемый «data2,» это 0-127), что Я настраиваю фейдер (от 0 до 127). «Математика» Я использую простой:

newData2 = oldData2 * faderVolume/127; 

Нулевой работает отлично, и 127 делает тоже самое, но объемы, близкие к нижней части диапазона являются слишком громко, особенно громкие ноты. Какое может быть другое отношение, чем линейное (в псевдокоде было бы здорово)? Мне придется подключить их в код и попробовать их, конечно.

Я понимаю, что этот вопрос зависит от инструмента, который играет Note Ons (комплект BFD в Ableton Live, который не сообщает много), но, возможно, нет, и, возможно, есть стандартный способ настройки Midi Note On громкость с фейдером.

+1

Там разница с использованием данных с плавающей запятой и целочисленных данных (для вычисления это делает большой разницы). Является ли 'newData2' целым числом? –

+0

@ The Elite Gentleman, да, это часть проблемы, я сейчас вижу. Это целое число. Может ли это объяснить проблему, которая у меня есть? –

+1

Да, потому что вы пропустили десятичные значения (что может повлиять на ваш результат). –

ответ

1

Как я уже говорил в своем комментарии, при воспроизведении звука или звука или любых звуковых технологий скорее используйте удвоения или поплавки (в зависимости от технических характеристик оборудования или API).

Вы возвращаете целое число на newData2. Скорее преобразуйте его в double или float (для точности).

например.

float newData2 = (float)oldData2 * (float)faderVolume/(float)127; 

Надеюсь, это поможет.

+0

Спасибо, это помогает, но мне придется попробовать это эмпирически. Просто попробуйте некоторые цифры, разница никогда не превышает 1, хотя это более 10% от итогового объема примечаний примерно в 15% от всех комбинаций. Если это не сработает, мне понадобится нечто более пышное. –

3

Ваше уравнение верно. Вы вычисляете скорость записи по отношению к фейдеру линейным образом. Пара примечаний ...

Параметр, который вы настраиваете, - это скорость. Это не обязательно означает объем! У двух из них есть корреляция для большинства синтезаторов (включая ваш набор ударных в Ableton), но это может быть не так, как вы думаете.

0-скорость эквивалентна примечанию и никогда не будет воспроизводить звук. Я говорю это, потому что, если разница между 0 и 1 является значащей, важно, чтобы этот объем не влиял на параметр скорости, как вы думаете.

И, наконец, традиционные микшерные фейдеры используют логарифмический закон. Вы можете поэкспериментировать с этим, но опять же я думаю, что вы лаем вверх по неправильному дереву с объемом.

Существует сообщение MIDI для объема канала, который вы должны использовать для тома, и что CC 7.

+0

Спасибо за это, @Brad +1.Что касается лай и деревьев: к сожалению, я не могу коснуться объема канала, потому что мои «фейдеры» управляют MIDI-томами групп заметок, которые воспроизводятся по тому же каналу. В любом случае, теперь все работает намного лучше, когда я удалил проблемы округления, вызванные ранним литьем. Я мог бы попробовать и логарифмическое отношение, хотя ... –