作者mgdesigner (魔法设计师)
看板Programming
标题Re: [问题] 系统对音乐速度的严谨度
时间Wed Mar 6 01:47:10 2013
※ 引述《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)
1F:推 stu87616:感谢详尽的解说 所以除不尽不必太在意 1.171.245.36 03/09 15:30