小屋創作

日誌2017-11-20 16:59

11/20起,寫音樂遊戲前的準備,談音訊格式.wav檔(11/26,19:14暫停)

作者:李兒諳

其實《地水師》理論上現實世界是以養成遊戲為主才對
不過那個可以晚些再做
網路泥巴或音樂遊戲優先權較高,其中音樂遊戲是我比較想做的

多媒體相關的
在比較工程類的書籍叫做DSP(數位訊號處理)
電腦記錄聲音的方式大致上有三種
一種是存單音再播放的MIDI
另一種是DSD(Direct Stream Digital)
然而現在普遍使用的是PDM(pulse-density modulation,脈衝密度調變)
簡單來說就是記錄波形再把資訊轉交給音效卡與其相關週邊設備處理這樣

那PDM中較為單純的格式是
.wav
因為它不像MIDI要存樂譜資訊(雖然也可以不存),也沒做壓縮處理
因此檔案相當的龐大,3秒鐘就420KB左右了
早期有隨身聽時,是不能播放.wav檔的
大概就是受限於硬體的儲存空間
至於專利授權金?
.mp3才是有收專利授權金的,沒專利授權金類似壓縮技術的要用.ogg

要研究.wav檔至少要準備以下三個東西
1.十六進位編輯器(實測後,推薦 HxD )

2.維基百科WAV條目 或 http://soundfile.sapp.org/doc/WaveFormat/

3..wav檔案,可考慮從這取得↓
https://freesound.org/people/ramas26/sounds/95330/

簡單來說
0~43個bytes,也就是44個位元組是屬於wav檔案表頭的部份
用來告訴作業系統或其它軟體說這是哪類型的檔案
並且使用的是單聲道還是雙聲道
還有檔案每一小塊的大小
(計算公式為:取樣數*聲道數量*每次取樣的位元組數量)
也有種說法是計算公式為位元組*秒數*聲道數量

44位元組以後的才是音樂或者說音效、人聲的主體

這樣子...
聽起來很模糊對不對
所以才需要實際研究!!

那我研究看看
雖然有沒有結果應該都不影響做音樂遊戲

那份檔案,3秒鐘,43942個bytes(按PageDown都要段時間)
那想研究些什麼呢?
想研究如何造出人聲或特定樂器聲音甚至是口音的方法吧
又或者是與國際音標(IPA)的對應關係
嗯,檔案實在太大,我是否該用搜尋引擎看是否有現成結果再繼續研究呢?

還有要研究的是,.wav能做出多細微的聲音變化
又或者說是波型要有多陡峭與時間持續多久才會讓人大吃一驚?
突然想起來
關於波型的改變好像在電腦音樂領域有個東西叫做轉化器
透過某些操作有名偵探柯南改變聲音蝴蝶結的效果
不確定印象是否錯誤

.wav檔
檔案很龐大
我試了下略有小成
一直重複貼同一段聲音(在十六進位編輯器中操作,也就是貼一串像是
47 00 16 00 5A 00 FD 00 64 01 5B 01 1C 01 C8 00 69 00 1A 00 E2 FF AE FF 99 FF C6 FF 02 00 FD FF BE FF 8E FF 9F FF E1 FF 19 00 22 00 24 00 54 00 94 00 A1 00 83 00 71 00 76 00 77 00 6D 00 68 00 6C 00 69 00 53 00 2B 00 07 00 FB FF 04 00 0C 00 12 00 21 00 3C 00 4C 00 3E 00 2B 00 37 00 53 00 59 00 59 00 71 00 7E 00 63 00 52 00 69 00 77 00 61 00 56 00 5D 00 4A 00 30 00 3C 00 4D 00 31 00 0D 00 16 00 31 00 36 00 30 00 2E 00 29 00 28 00 32 00 36 00 2F 00 31 00 39 00 2F 00 1D 00 1C 00 23 00 20 00 20 00 28 00 27 00 20 00 28 00 35 00 2C 00 16 00 0E 00 11 00 14 00 18 00 18 00 0C 00 04 00 14 00 29 00 2A 00 22 00 25 00 30 00 39 00 3D 00 36 00 27 00 22 00 2B 00 2B 00 1F 00 1E 00 27 00 1E 00 04 00 00 00 11 00 14 00 00 00 FB FF 12 00 27 00 2E 00 33 00 3A 00 38 00 36 00 3E 00 40 00 2C 00 1B 00 25 00 36 00 32 00 25 00 25 00 2B 00 24 00 19 00 18 00 19 00 15 00 15 00 1B 00 1F 00 20 00 22 00 26 00 2A 00 2F 00 35 00 3B 00 3E 00 38 00 29 00 20 00 29 00 33 00 2B 00 26 00 38 00 4C 00 46 00 38 00 3F 00 51 00 4C 00 30 00 21 00 29 00 33 00 26 00 12 00 12 00 21 00 23 00 14 00 12 00 22 00 2B 00 25 00 24 00 33 00 3C 00 2D 00 1A 00 19 00 24 00 24 00 18 00 0C 00 01 00 F1 FF E6 FF ED FF FF FF 09 00 07 00 05 00 08 00 06 00 F8 FF EE FF F6 FF 01 00 FE FF F9 FF 08 00 17 00 0C 00 F1 FF ED FF FF FF 06 00 F6 FF E5 FF E3 FF E8 FF E6 FF DD FF DD FF E9 FF E8 FF D1 FF C1 FF D0 FF E5 FF
這樣的數字)
大約貼到21900個位元組,就會有聲音(我覺得是噪音)起伏持續約一秒的效果
來換個數字試試看好了!!
並思考看看如何計算

假如用http://soundfile.sapp.org/doc/WaveFormat/
的範例52 49 46 46 24 08 00 00 57 41 56 45 66 6D
74 20 10 00 00 00 01 00 02 00 22 56 00 00 88 58
01 00 04 00 10 00 64 61 74 61 00 08 00
之後全部接1(要在十六進位底下的編輯器)
到 218B0 左右個位元組時
在一秒內會聽到兩聲清脆的聲音略有間距
(不知道頻率是多少,人耳能聽到的頻率是20~20000Hz
隨著年齡或器官狀況,甚至範圍會更小些
然後有些人聽不太出些聲音的微妙差異)

------------------11/22 15:15更新----------------------------------

研究了約6個小時
心得是:
沒聲音時,要用0來填
那負數是用來製造波形的
各位可能會想起來或發現件事情
就是波形圖在我們記憶中是長這樣的
圖在https://zh.wikipedia.org/wiki/波形
有明確的波峰波谷
可是在音頻中
各位若有用過Window Media Player中的視覺特效
可能會看到這種長條圖

又或者是
https://freesound.org/people/ramas26/sounds/95330/

咦,這也叫波形圖?
波峰波谷怎麼感覺幾乎要直線了?

原因是這樣的
音高中央A(La,拉)的頻率是440Hz,也就是說一秒鐘發生440次個波
因此看不到傳統國中物理課的波形圖
因為它發生的實在太快了
快到若畫成圖,其間隙為人類難以察覺到的
而波峰波谷的振幅又相等,看起來就像是一條以0為水平軸對稱的直線了!!
但是研究到這樣
還是不足以做出自己想要的音樂、人聲、音效的
因此尚待進一步研究
而我有些私事要處理(跟爸媽聚餐),可能21:00再更新了

哦,對,忘記提醒
找些現成的.wav檔研究時
先看第15 16個bytes(HxD編輯器的第一行最末)顯示有多少聲道
還有要看第35個bytes(HxD編輯器,橫列是20,直列是03的那個值)
代表一次取樣取多少個bits
那兩項都會影響取樣時一次要看幾個bytes?
而左右聲道的內容通常是有些不同的
只是聽覺還會經過腦部處理
因此有個效應叫做雞尾酒效應
就是在嘈雜的環境中,會對熟悉的詞聽力特別好(通常就是自己的名字或綽號)
此外也能解釋為何有幻聽
能聽到別人聽不到的
除了聽力好(20Hz~20000Hz真全能吃下)以外還有其它種解釋
「就像聽見愛情永恆的嘲 笑 聲~」

(附帶一提:
視覺也有左右眼看到內容不同的情形
一般感覺不到也是大腦解譯在背後作祟的關係
而立體電影就是掌握左右眼看到不同內容大腦解釋方式的原理來做的
因此覺得看立體電影不舒服時
遮或閉一隻眼睛在看電影應該就會好很多)

因為聲音是種振動僅是一般情形
但不是只要有聲音就代表一定有振動啊
所以聲音與聲波才放在國中課程
各種領域的一般情形會放在基礎教育
而往上時才會講特例或背後更深的原因
可能是學校不信任學生,又或者是擔心基礎教育時的老師壓力太大吧

好啦!!
說了那麼多還是要繼續研究.wav格式
在掌握個大概前別太早放棄
不然我肯定又會心猿意馬的
在不作為中虛耗自己的光陰(時間)

------------------------------------------------------------
我想了一下
我取得.wav的方式大多是用Moo0 Recorder用錄的
那可以比較幾個檔案的差異
6分25秒(505秒)的大山百合香版的《ここにしか咲かない花》.wav
是64.9MB,除以505後相當於一秒鐘需要1.315MB
也因此檔案過大傳不上Github
而我錄我自己的 啊 的聲音 , 不到一秒 需要134 KB
我修改我自己 啊不到一秒的,變成啊七次,五秒,需要6.84MB

也許可以比較一下檔案頭的不同處
有可能找出檔案大小的差異原因

又或者是引入忘記是國小自然課的操縱變因與控制變因
也就是一次只改一個地方實驗看看效果有何不同

以下是《ここにしか咲かない花》.wav檔案表頭(Header)
52 49 46 46 44 7B 0E 04 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00
04 00 10 00 64 61 74 61 18 7B 0E 04

.wav檔案表頭佔44個位元組
但16進位編輯器是從00 00開始
所以是從00 00 到 橫軸是02 縱軸是0B為止才是.wav檔案表頭
44=16+16+12 = 2C(十六進制)
也就是,會有1的誤差!!

以下是,啊七次的表頭,也就是test_啊.wav
52 49 46 46 44 1B 02 00 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00
02 00 10 00 64 61 74 61 00 00 0F 00

以下是只啊一聲,啊.wav的表頭,跟啊七次只有倒數第四、第三、第二個byte內容不同
(但我啊七聲的那個檔案,把除了表頭以外的複製貼上多次直到橫軸變成006D8100)
52 49 46 46 44 1B 02 00 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00
04 00 10 00 64 61 74 61 18 1B 02 00

現在再次對比.wav檔案格式
https://zh.wikipedia.org/wiki/WAV

52 49 46 46 是 RIFF 這是保證不會變的,類似.bmp,.jpg一類圖檔開宗明義的表頭
再來日文音樂檔 44 7B 0E 04 與 我自己錄的啊 44 1B 02 00,是ChunkSize
看此篇應該會是
http://soundfile.sapp.org/doc/WaveFormat/
子區塊2的大小+36(這是十進位的值,相當於十六進制16+16+4=24(十六進制))
我們來看看子區塊是在第幾個到第幾個位元組40到44bytes,也就是28~2C
日文音樂檔的第28~2C個位元組(byte)是18 7B 0E 04
啊音效檔的第28~2C個位元組(byte)是 18 1B 02 00
會發現變的常數是+44了
(注意+44這是十進制,十六進制是2C,這數字好熟,不就是.wav檔頭大小嗎)
這有沒有可能是64位元電腦的影響呢?
(雖然Moo0 Voice Recorder是x86應用程式,不是x64應用程式)

其實若稍微點一下維基百科旁邊的語言列
你會注意到這則維基百科條目,中文與英文的內容很明顯不一致
我理論上應該要潛心閱讀的才對,但我先試著瞎撞看看,等行不通再硬啃英文維基百科

今天就先研究到這樣吧
我情緒突然有些起伏
覺得不吐不快

2

0

LINE 分享

相關創作

近況-015

Yu gi oh dl kot 戰隊招募

【書語】先射箭在畫靶,活在心象與理解交錯間的人們「簡輯」

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】