Re: [問題] 系統對音樂速度的嚴謹度
※ 引述《stu87616 (DoubleLight)》之銘言:
: 標題: [問題] 系統對音樂速度的嚴謹度
: 時間: Fri Mar 1 12:30:57 2013
: 因為個人興趣的關係,經常會處理一些音樂專案,
: 這邊先提一下一些音樂小知識,
: 音樂有所謂BPM(beats per minute),
: 也就是一分鐘會有幾拍,通常古典音樂會在120-150左右,
: 現代搖滾180左右,都是作曲家(和演奏家)隨自己意思決定這樣。
: 這邊可以看出音樂速度系統是非常"類比"的(這樣形容不知道對不對),
: 電腦的作業方式是依靠tick運作,速度越快的音樂tick間隔越短,
: 將tick與拍子進行同步,就能依照速度播放音樂了,
如果是已經「錄製好的音樂」就是這樣。
: 但要如何做?
: 將BPM逆算回來,求出一拍的間隔就是60 / bpm
這樣算會有點混淆...我用我的方式來說....
如果一首歌是120BPM速度,以取樣頻率44100Hz錄在CD上...
120BPM表示1拍=60/120=0.5s=500ms(毫秒)
取樣頻率44100Hz的意思是每秒會平均切割成44100「格」,紀錄那一秒內發生的聲波「振
動歷程」,換句話說120BPM的1拍有22050格
: 拿現代搖滾180來說,這麼一算正好是1/3,除不盡呀,
在已經錄好的音樂時,在AD(類比轉數位)取樣的時候,已經被決定好了。
180BPM的呢?1拍是60/180=333ms(除不盡)....
但是電腦取樣可不是用拍來計算,是用一秒幾格,例如說我們還是用44100Hz的話,就是
一秒中取樣進三拍,三拍用那44100格子來紀錄,其實不管你音樂幾BPM,都可以記錄下來
這就是其他網友回答原PO的部份,是在AD DA成層面的問題,也就是就算十多年前的舊電腦
,例如Windows 95+Pentium 133 CPU一樣可以播放好CD音樂,或者wav檔,其實電腦也不懂
他撥的音樂是幾BPM,他只知道每秒內把44100格子播出來就對了。
倒是這邊,不同的機器播出來的速度可能會有一點點微妙的不同,例如用電腦放CD,或者
用CD隨身聽放CD,耳朵夠靈敏的話,其實有時會發現,有一邊可能稍快一點點,因為有的
機器他認知的一秒可能是實際世界的0.99秒,或者是1.01秒,因此會有這小小地差距。
: 抱歉,其實我根本看不懂AD和DA這些縮寫是啥(汗
AD->類比訊號轉數位訊號 DA->數位轉類比訊號..建議去看多媒體概論的書,裡面應該講
很詳盡....
: 看你們提到波型之類的,似乎是指wav音頻,
: 我主要是想問,像是midi這類由電腦自行生成的類型,
~~~~~~~~~~
: 速度的儲存位址可能就只有一個數字(BPM),那能夠多嚴謹?
這個跟處理預錄好的就不一樣了....
跟你的"timer"有關係,如果你有高精度timer(能做到精準到1ms的都還算差的了),加上
系統有對音頻發音有夠好的realtime支援,你就可以很精準。
反之好比以Windows來說(我現在不是用windows),在應該是Win Vista之前,沒裝所
謂的錄音卡(高級音效卡),提供少於16ms的latency的話(音樂錄音製作上可以接受),
你是無法把做音樂做好的,因為latency是高達150ms左右,最新的Windows不知道改善了這
一點沒....
如果你有編曲軟體,有的編曲軟體允許你選擇要用的timer,然後請開編曲軟體的節拍器,
你會聽到有的timer似乎會導致不準確的漸漸變慢..
: ※ 編輯: stu87616 來自: 1.163.69.63 (03/05 00:24)
: → azureblaze:midi的bpm是推算出來的 118.168.57.194 03/05 01:37
: → azureblaze:實際儲存的是每拍時間長度(整數微秒) 118.168.57.194 03/05 01:38
: ↑↑↑↑就是這個
: 這個"整數微秒"怎麼決定好的?
: 如我在意的,一定除不乾淨嘛,怎麼處理那些餘數?
這你不用擔心,高精度的timer都是精密到1ns,也就是1/1000ms,也就是
1/1000,000秒,而180bpm就算差個1~2ms,人耳也是聽不出來的..
(
ps.180BPM一拍長度333.3ms,姑且算333好了,也許編曲軟體就真的偷懶用整除的333也說
不定..
8分音符=166.5ms
16分音符=83.25ms
32分音符=41.6ms
所以就算最細的32分音符,差1~2ms還是非常小的誤差
)
額外說....有一種拍子叫做三連音,一拍內切成三等分,真人實際在彈的時候,也是「除不
盡」啊,但是只要在人耳聽覺可以接受的範圍內,有誤差我們還是聽不出來
。
: → azureblaze:另外再一個整數決定每拍幾個tick 118.168.57.194 03/05 01:38
: → azureblaze:所有的事件都會發生再tick上 118.168.57.194 03/05 01:38
: → azureblaze:所以其實全部都是整數運算 118.168.57.194 03/05 01:39
: → azureblaze:至於跟實際時間的差距 118.168.57.194 03/05 01:39
: → azureblaze:一般應用會以音樂時間為準 118.168.57.194 03/05 01:40
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最後其實就如同樓上a大所說。
: → azureblaze:所以根本不會去理實際時間 118.168.57.194 03/05 01:43
: → azureblaze:從計時器開始就不準了 1.171.59.231 03/05 10:54
--
用初音的《暗黑恭喜恭喜》跟大家拜年 http://ppt.cc/xuYA
愛蔥少女熱愛的青蔥麗麗量產化了 http://youtu.be/l36SAefX9IY
Linux雜誌作數位音樂專欄連載中 http://tinyurl.com/3srn4lk
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.166.38
※ 編輯: mgdesigner 來自: 123.195.166.38 (03/06 01:57)
推
03/09 15:30, , 1F
03/09 15:30, 1F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章