FMOD канал setVolume не работает - PullRequest
       32

FMOD канал setVolume не работает

2 голосов
/ 25 августа 2011

Я использую это:

err = channel->setVolume(someVolumeBetween0and1);

Даже если err = FMOD_OK, громкость не меняется.Я делаю что-то неправильно?Есть ли способ изменить громкость звука (канала)?Есть ли другой диапазон для громкости вместо [0, 1]?

Спасибо!

РЕДАКТИРОВАТЬ: я использую setVolume сразу после этого:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);

Ответы [ 5 ]

6 голосов
/ 12 декабря 2012

Я нашел кое-что о громкости в руководстве FMOD: " Когда воспроизводится звук, он будет использовать частоту, громкость, панорамирование, уровни и приоритет звука по умолчанию ... Чтобы изменить атрибуты канала до того, как звук будет слышензапустите канал в режиме паузы, установив флаг paused в значение true и вызвав соответствующие функции на основе канала. После этого отключите канал с помощью Channel :: setPaused."

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

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, true, &channel);
err = channel->setVolume(someVolumeBetween0and1);
err = channel->setPaused(false);

или, вы можете попробовать это тоже:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
err = channel->setVolume(someVolumeBetween0and1);
2 голосов
/ 21 марта 2012

изменить порядок setVolume и playSound, это работает в моем проекте

1 голос
/ 25 августа 2011

Я не уверен на 100%, но может потребоваться остановить / приостановить звук перед установкой громкости, чтобы разблокировать его и возобновить воспроизведение звука после установки громкости.

Другие вещи, которые нужно проверитьВозможно, звук воспроизводится на правильном канале (или вы устанавливаете громкость на правильном канале).Звук заблокирован?Является ли звук частью группы каналов, которая может перезаписывать громкость (хотя в документах FMOD говорится, что группы каналов должны масштабироваться, а не перезаписывать)?

0 голосов
/ 08 мая 2015

попробуйте

result = channle->setPaused(false);//after you set volume
0 голосов
/ 15 марта 2013

У меня была проблема с использованием FMOD, и я проехал по тем же дорогам.Я пытался приостановить звук.Я задавался вопросом, было ли это потому, что мой звук был зациклен.

В конце концов, это была проблема приложения.Я не использовал правильный объект канала.

Нет необходимости делать паузу для изменения громкости.Смысл воспроизведения звука, изначально приостановленного, затем установив громкость на значение, отличное от значения по умолчанию, а затем приостановив звук, состоит в том, чтобы избежать краткого воспроизведения этого звука с громкостью по умолчанию.

...