作者DrStein (啤酒肚)
看板C_and_CPP
標題Re: [問題] 聲音的bit轉換。。
時間Wed Dec 1 16:25:44 2010
※ 引述《LPH66 (-858993460)》之銘言:
: 那還不如就直接去掉 -1 來算)
: 所以式子就變成 (sample - OLDMIN) / 2^(A-B) + NEWMIN
: = sample/2^(A-B) - OLDMIN/2^(A-B) + NEWMIN
: 32 -> 16 的情形中 OLDMIN = -2^A NEWMIN = -2^B
: 也就是正好 OLDMIN/2^(A-B) 和 NEWMIN 一正一負抵消 式子剩下 sample/2^(A-B)
: 所以才有「直接右移就行了」的結論
: 而 down sample to 8 bit 時
: OLDMIN = -2^(A-1) 所以 OLDMIN/2^(A-B) = -2^(B-1) = -2^(8-1) = -128
: 但 NEWMIN 是 0 所以才說右移後要加 128
: 以上
現在用這方法去實作32bit轉16bit ,出來聲音雜音很大。
很不合理啊。。。隨便用個轉檔軟體都不會這樣。
那請問還有什麼技巧在其中呢?
是要四捨五入,而不是無條件捨去嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
推 LPH66:既然是 24-bit 那每個 sample 就要佔 3 byte 12/01 17:02
→ LPH66:不能佔 4-byte 不然解釋出來就是錯的 12/01 17:02
※ 編輯: DrStein 來自: 59.120.158.204 (12/01 17:35)
→ DrStein:報歉 打錯 是轉為16bit 12/01 17:35
→ tropical72:你介意po部份 code 嗎? 12/01 23:10
→ DrStein:沒事 原來是原資料為float不是int。。。囧 12/02 16:00