iOS 9音頻應用播放音頻之音量設定與聲道設定
iOS 9音頻應用音量設定
音量又稱響度、音強,是指人耳對所聽到的聲音大小強弱的主觀感受,其客觀評價尺度是聲音的振幅大小。在iOS 9音頻應用的應用中,經常會出現播放的音樂音量過大或者過小。此時iOS 9音頻應用開發者可以使用AVAudioPlayer類中的volume屬性對音頻檔案的音量進行設定。其文法形式如下:
- var volume: Float
其中,該屬性設定的值是浮點類型,範圍在0.0到1.0之間。當設定的值為0.0時,表示靜音;當設定的為為1.0時,表示最大音量。
注意:如果開發者想要讓耳機系統發揮出最佳狀态,謹記把音量調到最合适的水準,如果你對現場真實的音量不熟悉,那麼就多找機會去聽現場!
【示例2-4】以下将以第一個執行個體為基礎,實作音量的調節。具體的操作步驟如下:
1.顯示更多設定項
(1)将主視圖中的Bar Button Item控件與動作showMoreSettingsView進行關聯。
(2)打開ViewController.swift檔案,編寫代碼,實作顯示更多設定項,代碼如下:
- @IBAction func showMoreSettingsView(sender: AnyObject) {
- UIView.beginAnimations("", context: nil)
- UIView.setAnimationDuration(2)
- moreSettingsView.hidden=false
- UIView.commitAnimations()
- }
2.ios9設定音量
(1)将主視圖中的Volume Slider與插座變量volumeSlider進行關聯。
(2)将主視圖中的Volume Slider與動作setVolume進行關聯。
(3)打開ViewController.swift檔案,編寫代碼,首先需要在viewDidLoad()方法中添加一行代碼,實作對音量的設定,這個音量是初始音量,代碼如下:
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- moreSettingsView.hidden=true
- let path=NSBundle.mainBundle().pathForResource("Liekkas", ofType: "mp3")
- ……
- audioEffect?.prepareToPlay()
- audioEffect?.volume=volumeSlider.value //設定音量大小
- }
(4)在ViewController.swift檔案中的setVolume()動作編寫代碼,實作通過滑塊調節音頻大小的功能。代碼如下:
- @IBAction func setVolume(sender: AnyObject) {
- audioEffect?.volume=volumeSlider.value
- self.performSelector(("hideMoreSettingsView"), withObject: self, afterDelay: 3)
- }
- //隐藏更多設定項界面
- func hideMoreSettingsView(){
- moreSettingsView.hidden=true
- }
此時運作程式,在模拟器界面中輕拍播放按鈕,此時音頻檔案就會開始播放,當開發者輕拍導航欄中的更多按鈕後,會彈出更多設定項的界面,如圖2.26所示。當開發者可以滑動滑塊來控件音量的大小。
圖2.26 設定音量
iOS 9音頻應用聲道設定
為了讓聲音可以還原真實的效果,是以有了聲道的産生。聲道是指聲音在錄制或播放時在不同空間位置采集或回放的互相獨立的音頻信号。通過聲道,開發人員可以調整聲音的強弱以及延遲模拟各種真實的聲音效果。一般情況下聲音在錄制時采用裝置的不同,可以分為單聲道、立體聲、3D環繞聲、四聲環繞、5.1聲道和7.1聲道。
1.單聲道
所謂的單聲道,就是聲音隻由一隻音箱産生,聽衆可以很明顯地聽出聲音的來源就是音箱所擺放的位置,其本身的表現力較為平淡;當通過兩個揚聲器回放單聲道資訊的時候,我們可以明顯感覺到聲音是從兩個音箱正中間傳遞到我們耳朵裡的。這種缺乏位置感的錄制方式用現在的眼光看自然是很落後的,但在聲霸卡剛剛起步時,已經是非常先進的技術了。
2.立體聲
單聲道缺乏對聲音的位置定位,而立體聲技術則徹底改變了這一狀況。它利用了兩個獨立聲道進行錄音,整個過程不加任何的聲音處理。立體聲系統的再現需要一對音箱來完成,它通過調整系統中兩隻音箱發出聲音的大小,讓我們誤認為聲源來自兩隻音箱之間直線段中的任意位置。特别是當使用耳機的時候,由于左右兩邊的聲音串音情況很少發生,是以聲音的定位比較準确;再加上比較真實的音場感覺,它的表現力比單聲道真實得多。立體聲雖然可以改變單聲道缺乏對聲音的位置定位功能,但是它的不足也是很明顯的。例如,對音箱的位置擺放要求較高,擺位的不好會直接影響聲音的表達。
3.3D環繞聲
3D 環繞聲有時也稱作3D增強立體聲(3D Enhancement)。它是一種模拟環繞聲系統。左、右聲道的立體聲信号,經過數字信号處理後,通過左、右兩路音箱,産生三維的環繞聲場效果。
4.四聲環繞
四聲道環繞規定了4個發音點,分别為前左、前右,後左、後右。聽衆則被包圍在這中間。同時還建議增加一個低音音箱,以加強對低頻信号的回放處理。這也就是如今4.1聲道音箱系統廣泛流行的原因。就整體效果而言,四聲道系統可以為聽衆帶來來自多個不同方向的聲音環繞,可以獲得身臨其境的聽覺感受,給使用者以全新的體驗。如今四聲道技術已經廣泛融入于各類中高檔聲霸卡的設計中,成為未來發展的主流趨勢。
5.5.1聲道
5.1聲道已廣泛運用于各類傳統影院和家庭影院中。一些比較知名的聲音錄制壓縮格式,譬如杜比AC-3(Dolby Digital)、DTS等都是以5.1聲音系統為技術藍本的。其中“.1”聲道,則是一個專門設計的超低音聲道,這一聲道可以産生頻響範圍20~120Hz的超低音。其實5.1聲音系統來源于4.1環繞,不同之處在于它增加了一個中置單元。這個中置單元負責傳送低于80Hz的聲音信号,在欣賞影片時有利于加強人聲,把對話集中在整個聲場的中部,以增加整體效果。
6.7.1聲道
7.1聲道系統的作用簡單來說就是在聽者的周圍建立起一套前後聲場相對平衡的聲場。
通過不同聲道模式采集的聲音(錄音的聲音)在播放時由于選擇的播放聲道的模式不同,會産生不一樣的播放效果。聲音在播放時的聲道模式有3種,分别為左聲道、右聲道以及左右混合。以下就是對這3種在播放時聲道模式的介紹。
- q 左聲道:電子裝置中模拟人類左耳的聽覺範圍産生的聲音輸出。
- q 右聲道:電子裝置中模拟人類右耳的聽覺範圍産生的聲音輸出。
- q 左右混合:電子裝置中模拟人類左右耳的聽覺範圍産生的聲音輸出。
在iOS中對于聲音在播放時的聲道模式是可以進行設定的,此時需要使用到pan屬性,其文法形式如下:
- var pan: Float
其中,該屬性設定的值可以為-1.0、0.0以及1.0。這3個值的說明如下:
- q -1.0:表示左聲道。
- q 0.0:表示左右混合。
- q 1.0:表示右聲道。
【示例2-5】以下将以第一個執行個體為基礎,實作聲道模式的設定。具體的操作步驟如下:
(1)将主視圖中的Pan Segmented Control與插座變量panSegmentedControl進行關聯。
(2)将主視圖中的Pan Segmented Control與動作setPan進行關聯。
(3)打開ViewController.swift檔案,編寫代碼,首先需要在viewDidLoad()方法中添加一行代碼,實作對聲道模式的設定,這個聲道是初始聲道。代碼如下:
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- moreSettingsView.hidden=true
- let path=NSBundle.mainBundle().pathForResource("Liekkas", ofType: "mp3")
- ……
- audioEffect?.volume=volumeSlider.value
- audioEffect?.pan = -1.0 //将聲道設定為左聲道
- }
(4)在ViewController.swift檔案中的setPan動作編寫代碼,實作通過聲道模式的設定。代碼如下:
- @IBAction func setPan(sender: AnyObject) {
- let index=panSegmentedControl.selectedSegmentIndex
- if(index==0){
- audioEffect?.pan = -1.0 //将聲道設定為左聲道
- hideMoreSettingsView()
- }else if(index==1){
- audioEffect?.pan = 0.0 //将聲道設定為左右混合
- hideMoreSettingsView()
- }else if(index==2){
- audioEffect?.pan = 1.0 //将聲道設定為右聲道
- hideMoreSettingsView()
- }
- }
此時運作程式,在模拟器界面中輕拍播放按鈕,音頻檔案就會開始播放,此時聽到的聲音是來自左聲道的;當開發者輕拍導航欄中的更多按鈕後,會彈出更多設定項的界面。在聲道這一項中開發者可以選擇聲音進行播放時所使用的聲道模式。
本文選自:iOS 9音頻應用開發基礎教程大學霸内部資料,轉載請注明出處,尊重技術尊重IT人!