Re: [問題] 聲音的bit轉換。。

看板C_and_CPP作者 (啤酒肚)時間15年前 (2010/12/01 16:25), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《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

12/01 17:02, , 1F
既然是 24-bit 那每個 sample 就要佔 3 byte
12/01 17:02, 1F

12/01 17:02, , 2F
不能佔 4-byte 不然解釋出來就是錯的
12/01 17:02, 2F
※ 編輯: DrStein 來自: 59.120.158.204 (12/01 17:35)

12/01 17:35, , 3F
報歉 打錯 是轉為16bit
12/01 17:35, 3F

12/01 23:10, , 4F
你介意po部份 code 嗎?
12/01 23:10, 4F

12/02 16:00, , 5F
沒事 原來是原資料為float不是int。。。囧
12/02 16:00, 5F
文章代碼(AID): #1CzWQB8m (C_and_CPP)
文章代碼(AID): #1CzWQB8m (C_and_CPP)