사용자 도구

사이트 도구


음향:digital:pcm:bit_depth
[공지]회원 가입 방법
[공지]글 작성 및 수정 방법

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
음향:digital:pcm:bit_depth [2024/02/20] – [Integer VS Floating point(정수형 연산 VS 부동소수 연산)] 정승환음향:digital:pcm:bit_depth [2024/04/14] (현재) – [DAW] 정승환
줄 5: 줄 5:
 아날로그 신호를 디지털 신호로 레벨 축에 대하여 양자화하는 빈도 아날로그 신호를 디지털 신호로 레벨 축에 대하여 양자화하는 빈도
  
-<WRAP tablewidth 1--%> +<WRAP centeralign box>{{음향:digital:bit_depth:pasted:20220113-011359.png}}</WRAP>
-|{{음향:digital:bit_depth:pasted:20220113-011359.png}}+
-</WRAP>+
  
 =====bit===== =====bit=====
줄 26: 줄 24:
  
 즉 약 144dB의 범위에서\\ 즉 약 144dB의 범위에서\\
-가장 큰 전압과 가장 작은 전압의 차이를 표현할 때 자리수의 범위는 "최소" 8자리가 필요하다.(소수점 -6자리 부터 소수점 위로 +2자리까지) 하지만, 자리수가 더 많아지면 더 자세한 표현이 가능하다. 24bit 가 144dB 표현이 가능하다는 말은 "최소" 라는 전제조건이 붙는 것이다.+가장 큰 전압과 가장 작은 전압의 차이를 표현할 때 자리수의 범위는 "최소" 8자리가 필요하다.(소수점 -6자리 부터 소수점 위로 +2자리까지) 하지만, 자리수가 더 많아지면 더 자세한 표현이 가능하다. 24-bit 가 144dB 표현이 가능하다는 말은 "최소" 라는 전제조건이 붙는 것이다.
  
-<m2^16=65536 </m> +{{page>컴퓨터:integer_and_floating_point#각_데이터_형식의_표현_범위}}
- +
-<m> 2^24=166777216 </m> +
- +
-<m> 20log_10 65536/1 approx 96dB </m>  +
- +
-<m> 20log_10 16777216/1 approx 144dB </m> +
- +
-  * 16bit integer의 총 표현 가능 단계((분해능, 해상도)) = 65536 (**5자리수**)((로그로 환산하면 96dB))  +
-  * 24bit integer 의 총 표현 가능 단계 =16777216 (**8자리수**)((로그로 환산하면 144dB))  +
-  * 32bit integer 의 총 표현 가능 단계 = 4294967296 (**10자리수**) +
-  * 48bit double precision integer = 2.8147498+10<sup>14</sup> =  (**14 자리수**) +
-  * 56bit integer = 1.8014399+10<sup>16</sup> = (**16 자리수**)  +
-  * 64bit integer = 1.8446744+10<sup>19</sup> = (**19자리수**)  +
-  * 32bit float = 3.4028235+10<sup>38</sup> = (**38자리수**)((https://en.wikipedia.org/wiki/Single-precision_floating-point_format))  +
- +
-여러가지 디지털 심도의 포맷에 비추어볼 때, 32bit float point((정수형식인 128bit에 오차 살짝 있는 것과 비슷함, 하지만 정밀 공학 계산이 아닌 오디오나 그래픽 계산에서 이러한 오차는 자리수에 해 이미 의미가 전혀 없을 수도 있다. 그래서 어느 정도 표현에서의 오차가 허용되는 오디오나 비디오에서는 이러한 부동 소수 연산을 하는 것이 훨씬 더 유리한 측면이 있다.))는 이미 다른 디지털 심도 포맷들을 훨씬 초월하고 있음을 알 수 있다.+
  
 =====dBFS===== =====dBFS=====
줄 50: 줄 32:
 **dB full scale** **dB full scale**
  
-디지털 심도 포맷에 따라서 표현 가능한 최대값이 다 다르기 때문에(16bit:96dB, 24bit:144dB),  최대값이 통일이 안되어서 거꾸로 0을 최대값으로 - 단위로 표기한다. 또한 심도에 따라 표현 범위도 다 다르기 때문에 그 범위를 Full Scale 로 표현하게 된다. 일반적인 레퍼런스 레벨은 -18dBFS(24bit & above), -12dBFS(16bit)이다.+디지털 심도 포맷에 따라서 표현 가능한 최대값이 다 다르기 때문에(16-bit:96dB, 24-bit:144dB),  최대값이 통일이 안되어서 거꾸로 0을 최대값으로 - 단위로 표기한다. 또한 심도에 따라 표현 범위도 다 다르기 때문에 그 범위를 Full Scale 로 표현하게 된다. 일반적인 레퍼런스 레벨은 -18dBFS(24-bit & above), -12dBFS(16-bit)이다.
  
-최대값의 진폭(Amplitude)의 절반값을 가지는 지점을 -6dBFS로 정해서, 값을 정한다. 다시 말해서 24bit(144dB) 던, 16bit(96dB)던, 48bit(288dB)이건 상관 없이 최대값을 0dBFS, 절반값을 -6dBFS로 정하기 때문에, 디지털 심도의 차이는 "해상도"의 차이로 나타난다.((이것을 잘못 이해하여, 48bit 가 288dB 니까, 다이나믹 레인지가 정말로 2배 크다고 생각하여 288dBu나 288dBSPL인 것처럼 이해하는 사람이 있기도 하다. 또는 32bit floating point가 1440dB이라서 일반 24bit 보다 1300dB 정도의 헤드룸이 더 많다 식으로 이야기 하는 사람은 믿고 거르면 된다. full scale 이 뭘 뜻하는지도 모르는 사람임. 일반적으로 디지털에서 -18dBFS 가 레퍼런스 레벨이기 때문에, 당연히 헤드룸은 18dB이다.))+최대값의 진폭(Amplitude)의 절반값을 가지는 지점을 -6dBFS로 정해서, 값을 정한다. 다시 말해서 24-bit(144dB) 던, 16-bit(96dB)던, 48-bit(288dB)이건 상관 없이 최대값을 0dBFS, 절반값을 -6dBFS로 정하기 때문에, 디지털 심도의 차이는 "해상도"의 차이로 나타난다.((이것을 잘못 이해하여, 48-bit 가 288dB 니까, 다이나믹 레인지가 정말로 2배 크다고 생각하여 288dBu나 288dBSPL인 것처럼 이해하는 사람이 있기도 하다. 또는 32-bit 부동소가 1440dB이라서 일반 24-bit 보다 1300dB 정도의 헤드룸이 더 많다 식으로 이야기 하는 사람은 믿고 거르면 된다. full scale 이 뭘 뜻하는지도 모르는 사람임. 일반적으로 디지털에서 -18dBFS 가 레퍼런스 레벨이기 때문에, 당연히 헤드룸은 18dB이다.))
  
 {{음향:digital:bit_depth:pasted:20220113-011620.png|3bit경우}} {{음향:digital:bit_depth:pasted:20220113-011620.png|3bit경우}}
줄 59: 줄 41:
  
 {{음향:digital:bit_depth:pasted:20220113-011648.png|해상도에 따른 아날로그 전압값의 분해능}}\\ {{음향:digital:bit_depth:pasted:20220113-011648.png|해상도에 따른 아날로그 전압값의 분해능}}\\
-위의 표는 10V 를 각기 4bit16bit24bit 등으로 A/D 컨버팅 했을 때의 분해능, 해상도를 나타낸다.+위의 표는 10V 를 각기 4-bit16-bit24-bit 등으로 A/D 컨버팅 했을 때의 분해능, 해상도를 나타낸다.
  
-출처: https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter2.pdf?fbclid=IwAR30TNIbwE4D6QFizkcIuYbTIPi319DzZCUR-ZgZh-p_i23mF1mDsBYkVIY+출처: https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter2.pdf
  
 +<WRAP round box>
 [[https://en.wikipedia.org/wiki/DBFS]] [[https://en.wikipedia.org/wiki/DBFS]]
  
 The level of 0 dBFS is assigned to the maximum possible digital level.[2] For example, a signal that reaches 50% of the maximum level has a level of −6 dBFS, which is 6 dB below full scale. Conventions differ for root mean square (RMS) measurements, but all Peak measurements smaller than the maximum are negative levels. The level of 0 dBFS is assigned to the maximum possible digital level.[2] For example, a signal that reaches 50% of the maximum level has a level of −6 dBFS, which is 6 dB below full scale. Conventions differ for root mean square (RMS) measurements, but all Peak measurements smaller than the maximum are negative levels.
 +</WRAP>
  
 **쉽게 요약하면 Full scale 은 지도에서 말하는 "축척" 과 같은 개념이다. 따라서 높은 심도는 파형을 더 세밀하고 자세하게 표현하게 된다.** ((축척이 영어로 Full scale이다.)) **쉽게 요약하면 Full scale 은 지도에서 말하는 "축척" 과 같은 개념이다. 따라서 높은 심도는 파형을 더 세밀하고 자세하게 표현하게 된다.** ((축척이 영어로 Full scale이다.))
줄 76: 줄 60:
 주요 DSP 엔진에 따른 디지털 심도 연산 스펙 주요 DSP 엔진에 따른 디지털 심도 연산 스펙
  
-참고로, 여기 나오는 DSP 제품 중에, 24bit DSP를 가진 UAD나 파워코어 등은 다이내믹 계열 플러그인의 음질에 논란이 많았다.+참고로, 여기 나오는 DSP 제품 중에, 24-bit DSP를 가진 UAD나 파워코어 등은 다이내믹 계열 플러그인의 음질에 논란이 많았다.
  
-  * TDM : 48bit double precision integer +  * TDM : 48-bit 정수 배정밀도 
-  * VST : 32bit float , 내부적으로 64bit float double precision 가능 +  * VST : 32-bit 부동소수 , 내부적으로 64-bit 부동소수 배정밀도 가능 
-  * AAX : 32bit float +  * AAX : 32-bit 부동소수 
-  * UAD 2 : 32bit float +  * UAD 2 : 32-bit 부동소수 
-  * UAD 1 : 24bit integer +  * UAD 1 : 24-bit 정수 
-  * TC Powercore : 24bit integer +  * [[유저위키:dsp:tc_powercore|TC Powercore]] 24-bit 정수 
-  * [[유저위키:dsp:tc_electronic_system6000|TC System 6000]] : 32bit float (CPU) +  * [[유저위키:dsp:tc_electronic_system6000|TC System 6000]] : 32-bit 부동소수(CPU) 
-  * [[음향:software:waves:soundgrid:soundgrid_dsp_server|Waves SoundGrid DSP]] : 32bit float (CPU) +  * [[유저위키:소프트웨어:waves:soundgrid:soundgrid_dsp_server|Waves SoundGrid DSP]] : 32-bit 부동소수(CPU) 
-  * [[유저위키:아웃보드:lexicon_960l|Lexicon 960L]] : 32bit float (CPU)+  * [[유저위키:아웃보드:lexicon_960l|Lexicon 960L]] : 32-bit 부동소수(CPU)
  
 =====DAW===== =====DAW=====
  
-Cubase나 Logic 등의 DAW 에서 32bit float 으로 프로젝트를 설정하고 사용하는 경우, 24bit로 녹음 된 오디오는 추가로 8자리의 Floating point를 추가로 얻게 된다.+Cubase나 Logic 등의 DAW 에서 32-bit 부동소수 포맷으로 프로젝트를 설정하고 사용하는 경우, 24-bit로 녹음된 오디오는 추가로 8자리의 부동소수 표현을 위한 비트를 추가로 얻게 된다.
  
 {{음향:digital:bit_depth:pasted:20220113-011727.png}} {{음향:digital:bit_depth:pasted:20220113-011727.png}}
줄 100: 줄 84:
 {{음향:digital:bit_depth:pasted:20220113-011806.png}} {{음향:digital:bit_depth:pasted:20220113-011806.png}}
  
-24bit로 녹음 된 데이터를 DAW에서 32bit float으로 사용할 시 레퍼런스 레벨인 -18dBFS를 기준으로 변환하기 때문에 해상도에 영향을 미치게 된다. 즉 예를 들면 24bit 에서 32bit float으로 변환 시 가장 큰 신호값인 0dBFS는 0dBFS로 일치하도록, -18dBFS는 그도 역시 32bit float 의 -18dBFS로 full scale을 유지하게 된다. 그에 따라 시그널 처리의 해상도가 증가하게 된다. 기존 데이터의 값에는 변함이 없었지만 그 다음에 이 데이터를 가지고 DSP 처리를 하게 되면 더 세밀하고 정밀한 처리가 들어가게 되는 것이다.((따라서 32bit floating으로 변환된 데이터는 페이더를 조작하여 신호가 0dBFS 보다 더 커져도 클리핑이 발생하지 않는다. 하지만 이 데이터를 다시 24bit 등으로 렌더링하면 마스터 버스에서 0dBFS 를 초과한 데이터는 클리핑되게 된다.))+24-bit로 녹음된 데이터를 DAW에서 32-bit 부동소수 포맷으로 사용할 시 레퍼런스 레벨인 -18dBFS를 기준으로 변환하기 때문에 해상도에 영향을 미치게 된다. 즉 예를 들면 24-bit에서 32-bit 부동소수로 변환 시 가장 큰 신호값인 0dBFS는 0dBFS로 일치하도록, -18dBFS는 그도 역시 32-bit 부동소수 포맷의 -18dBFS로 full scale을 유지하게 된다. 그에 따라 시그널 처리의 해상도가 증가하게 된다. 기존 데이터의 값에는 변함이 없었지만 그 다음에 이 데이터를 가지고 DSP 처리를 하게 되면 더 세밀하고 정밀한 처리가 들어가게 되는 것이다.((따라서 32-bit 부동소수로 변환된 데이터는 페이더를 조작하여 신호가 0dBFS 보다 더 커져도 클리핑이 발생하지 않는다. 하지만 이 데이터를 다시 24-bit 등으로 렌더링하면 마스터 버스에서 0dBFS 를 초과한 데이터는 클리핑되게 된다.))
  
-특히, 이퀄라이저나 컴프레서와 같은 시그널 프로세서에서는 10dB, 20dB와 같은 높은 증폭 및 감쇄가 필요한 DSP 연산을 하게된다. 20dB 정도이면 실제  디지털 숫자로는 큰 단위의 연산(100배 증폭 및 감쇄)이므로 심도가 상당히 중요하다고 볼 수 있다.+특히, 이퀄라이저나 컴프레서와 같은 시그널 프로세서에서는 10dB, 20dB와 같은 높은 증폭 및 감쇄가 필요한 DSP 연산을 하게 된다. 20dB 정도이면 실제 디지털 숫자로는 큰 단위의 연산(100배 증폭 및 감쇄)이므로 심도가 상당히 중요하다고 볼 수 있다.
  
 Fixed point dynamic range comparison\\ Fixed point dynamic range comparison\\
줄 109: 줄 93:
 {{음향:digital:bit_depth:pasted:20220113-011828.png}} {{음향:digital:bit_depth:pasted:20220113-011828.png}}
  
-<bootnote>아날로그던 디지털이던 레퍼런스 레벨을 기준으로 신호를 처리하는 것은 변함이 없다.</bootnote>+<WRAP info>아날로그던 디지털이던 레퍼런스 레벨을 기준으로 신호를 처리하는 것은 변함이 없다.</WRAP> 
 + 
 +=====정수 VS 부동소수=====
  
-=====Integer VS Floating point(정수형 연산 VS 부동소수 연산)=====+정수형 연산(Integer)과 부동소수형 연산(Floating point)을 비교하면, 정수형 연산의 장점은 부동소수형 연산보다 연산 클럭 수가 적게 들어가서 **레이턴시 부분에서 유리하다.**는 점이다. 하지만 최근에는 부동소수 DSP의 발전으로 인하여 큰 차이는 없다.
  
-정수형 연산(Integer)과 부동 소수형 연산(Floating point)을 비교하면, 정수형 연산의 장점은 부동 소수형 연산보다 연산 클럭 수가 적게 어가서 **레이턴시 부분에서 유리하다.**는 점이다. 하지만 최근는 부동 소수 DSP의 발전으로 인하여 큰 차이는 다.+반면 부동소수의 장점은, 매우 높은 해상도이. 위에 항목들에서 설명했듯이 소수점을 동적으로 변경할 수 있는 숫자 표시 양식 때문부동소수으로 표현할 수 있는 가장 큰 숫자는 정수형에서 표현할 수 있는 가장 큰 숫자보다 **훨씬 큰 수를 표현하는 것이 가능하다.** 
  
-반면 부동 소수점의 장점은, 매우 높은 해상도다. 위에 항목들서 설명했듯이 소수점을 유동적으로 변경할 수 있는 숫자 표시 양식 때문, 부동 소수점으로 표현할 수 있는 가장 큰 숫자는 정수형에서 표현할 수 있는 가장 큰 숫자보다 **훨씬 큰 를 표현하는 이 가능하다.** +턴시에 관한 문제 때문, DSP 칩을 주력으로 사용하는 디지털 믹싱 콘솔이나, 디지털 그널 프로세서들의 경우에는 40비트나 56비트 정수형 DSP를 사용하는 경우가 있지만 점점 32비트 부동소형 DSP 또는 CPU 기반으로 바뀌는 추세이다. 
  
-레이턴시에 관한 문제 때문에, DSP 칩을 주력으로 사용하는 디지털 믹싱 콘솔이나, 디지털 시그널 프로세서들의 경우에는 40비트나 56비트 정수형 DSP를 사용하는 경우가 있지만 점점 32비트 부동 소수형 DSP 또는 CPU 기반으로 바뀌는 추세이다. +=====Reference=====
  
-참조\\ 
 https://www.analog.com/en/education/education-library/articles/relationship-data-word-size-dynamic-range.html https://www.analog.com/en/education/education-library/articles/relationship-data-word-size-dynamic-range.html
  

[홈레코딩 필독서]"모두의 홈레코딩"구매링크


음향/digital/pcm/bit_depth.1708372577.txt.gz · 마지막으로 수정됨: 2024/02/20 저자 정승환