Как я могу получить громкость звука медленно снижаться? - PullRequest
1 голос
/ 04 ноября 2011

Я могу воспроизвести звук, как это:

channel.noteOn(noteNumber, velocity);

, и я прекращаю звук, как это:

channel.noteOff(noteNumber);

, но звук должен отключиться, когда громкость равна 0Примерно так: звук воспроизводится 2000 мс, а затем громкость звука снизится через 1000 мс (после 1000 мс громкость будет равна 0), а затем звук остановится, я нашел этот код:

channel.noteOff(noteNumber, velocity);

но это не имеет никакого эффекта.Помогите мне, пожалуйста!!спасибо

Ответы [ 3 ]

1 голос
/ 05 ноября 2011

Есть два способа сделать это.

Первый (и рекомендуемый) метод - настроить envlope: Установите время выпуска , используя CC72большинством синтезаторов вы можете отрегулировать этот параметр, чтобы выбрать, как долго эта заметка будет исчезать после выпуска.

Второй способ - просто понизить громкость канала с помощью CC7.

Какой метод вы выберете, зависит от ваших потребностей.

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

Использование скорости в Note Off имеет смысл только в том случае, если патч запрограммирован реагировать на скорость ноты.Я не уверен, насколько программируемой является ваша система, но потенциально вы можете повлиять на скорость отсчета, влияющую на время выпуска огибающей амплитуды.

Если это не вариант, поэкспериментируйте с Volume (контроллер 7) и Expression (контроллер 11).Компромисс заключается в том, что они влияют на каждую ноту на этом канале.

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

Проверьте JavaDoc для этого метода . В нем говорится, что эффект может зависеть от используемого инструмента. Так что вы можете поэкспериментировать с различными инструментами и посмотреть, что там происходит.

В любом случае, я думаю, что метод setPolyPressure может быть больше, чем вы ищете. Однако, чтобы реализовать плавное затухание, вам нужно вызывать метод несколько раз с уменьшением давления. Это потребовало бы использования Timer или другой асинхронной утилиты. Кажется немного неловким, но я просто не вижу ничего, что можно было бы напрямую использовать во всем интерфейсе Java midi.

...