iOS 9音訊應用播放音訊之音量設定與聲道設定

大學霸發表於2015-11-30

iOS 9音訊應用播放音訊之音量設定與聲道設定

iOS 9音訊應用音量設定

音量又稱響度、音強,是指人耳對所聽到的聲音大小強弱的主觀感受,其客觀評價尺度是聲音的振幅大小。在iOS 9音訊應用的應用中,經常會出現播放的音樂音量過大或者過小。此時iOS 9音訊應用開發者可以使用AVAudioPlayer類中的volume屬性對音訊檔案的音量進行設定。其語法形式如下:


  • var volume: Float


其中,該屬性設定的值是浮點型別,範圍在0.01.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-3Dolby Digital)、DTS等都是以5.1聲音系統為技術藍本的。其中“.1”聲道,則是一個專門設計的超低音聲道,這一聲道可以產生頻響範圍20120Hz的超低音。其實5.1聲音系統來源於4.1環繞,不同之處在於它增加了一箇中置單元。這個中置單元負責傳送低於80Hz的聲音訊號,在欣賞影片時有利於加強人聲,把對話集中在整個聲場的中部,以增加整體效果。

6.7.1聲道

7.1聲道系統的作用簡單來說就是在聽者的周圍建立起一套前後聲場相對平衡的聲場。

通過不同聲道模式採集的聲音(錄音的聲音)在播放時由於選擇的播放聲道的模式不同,會產生不一樣的播放效果。聲音在播放時的聲道模式有3種,分別為左聲道、右聲道以及左右混合。以下就是對這3種在播放時聲道模式的介紹。


  • q  左聲道:電子裝置中模擬人類左耳的聽覺範圍產生的聲音輸出。
  • q  右聲道:電子裝置中模擬人類右耳的聽覺範圍產生的聲音輸出。
  • q  左右混合:電子裝置中模擬人類左右耳的聽覺範圍產生的聲音輸出。


iOS中對於聲音在播放時的聲道模式是可以進行設定的,此時需要使用到pan屬性,其語法形式如下:


  • var pan: Float


其中,該屬性設定的值可以為-1.00.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人!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1849660/,如需轉載,請註明出處,否則將追究法律責任。

相關文章