2015-05-06 3 views
2

У меня есть фоновая песня, которую я использую в бесконечном цикле, пока мое приложение используется. Кроме того, что звук/громкость слишком высока ... Я хотел бы, чтобы играть на половину объема ... Это, как я загрузить музыку:Нижняя громкость звука AVAudioPlayer

//background music for in-game loop 
backgroundLoop = [[NSBundle mainBundle] pathForResource:@"Background" ofType:@"wav"]; 
GameMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:backgroundLoop] error:NULL]; 
GameMusic.delegate = self;   //need <...> in .h 
GameMusic.numberOfLoops = -1;  //play infinite loop 

Я попробовал несколько вещей , но ничто не влияет на объем дорожки. Я попытался это:

GameMusic.volume = 0.5f; 

и:

[GameMusic setVolume: 0.5f]; 

, но это не меняет громкость и до сих пор играет на том же максимальном уровне громкости ...

Странная вещь, если я установил том в 0.0 ([GameMusic setVolume: 0.5f];), он вообще не воспроизводится, потому что я предполагаю, что он устанавливает громкость в ноль ... но почему 0.1f или 0.5f не регулируют громкость, когда это линейный масштаб от 0 до 1?

Как снизить громкость звука? Это слишком громко.

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

Спасибо.

Update

A Wiki, показывает следующий форматы файлов поддерживаются:

- AAC (MPEG-4 Advanced Audio Coding) - ALAC (Apple Lossless) - AMR (Adaptive Multi-rate) - HE-AAC (MPEG-4 High Efficiency AAC) - iLBC (internet Low Bit Rate Codec) - Linear PCM (uncompressed, linear pulse code modulation) - MP3 (MPEG-1 audio layer 3) - µ-law and a-law

К сожалению, я изменил мой .wav к .mp3 и она по-прежнему не работает :(

+0

«Когда это линейная шкала» Я бы не стал предполагать, что если бы я был вами. Децибелы являются логарифмическими ... – matt

+0

Это то, что документация Apple заявляет в классе AVAudioPlayer, поэтому я пошел с ней. – Reanimation

+0

Хм, я понимаю, что вы имеете в виду. Интересно, что они подразумевают под этим? Тем не менее, поскольку вы говорите, что оригинал «слишком громкий», я бы рекомендовал попробовать несколько меньших значений, например '0.05f', и посмотреть, помогает ли это. Просто дикая идея ... – matt

ответ

7

Я подозреваю, что он работает, но поскольку звук звучит так громко, вы не ощущаете разницу (из-за логарифмической природы децибельной шкалы интенсивностей). Попробуйте гораздо меньшее количество, например 0.05.

+0

идеальное решение! –

2

Это, наконец, работает. Объем регулируется с использованием более низких линейных значений, таких как 0.01f и 0.08f.

Я изменил свой тип файла mp3, как wav не поддерживается:

backgroundLoop = [[NSBundle mainBundle] pathForResource:@"Background" ofType:@"mp3"]; 

, а затем установить объем загруженного аудио:

GameMusic.volume = 0.01f 

0.01f и сокращает объем в два раза (примерно по моим ушам), но может отличаться в зависимости от того, какой трек используется, если он нормализован или какой формат файла он закодирован.

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

0

Я получал ошибки в Swift 3.0, используя этот синтаксис. Я разрешил это путем проб и ошибок.Используйте следующие настройки громкости:

nameOfFile.volume = 1,0

уронить "F". Все, что выше 1.0, увеличит объем, ниже будет уменьшаться. Надеюсь это поможет. Приветствия.