[Sampling]

이 세상의 소리(Sound)라는 것은 아날로그이기에 Linear 하다.

그런데 컴퓨터는 디지털이므로 이 Linear한 소리를 Discrete 한 데이터로 변환해야 한다.


아날로그의 오묘하고 복잡한 특성을 전부 그대로 담기에는 용량의 문제가 있으므로

일부분만 채취(샘플링)하여 최대한 원본과 유사한 디지털 데이터를 만들게 된다.

이러한 과정 또는 행위를 샘플링이라 한다.


용어가 몇 개 있다:

(1) 샘플링 레이트(Sampling Rate) : 1초에 몇 개의 샘플을 추출할 것인지

(2) Bit Depth : 한 개의 샘플이 얼마만큼의 크기를 가지는지


당연하게도 샘플링 레이트가 높을 수록 아날로그와 유사한 디지털 값(고음질)을 얻을 수 있다.

아래 그림은 샘플링 레이트에 따른 디지털 데이터의 모양을 나타낸다. 

잘게 쪼갤 수록 아날로그의 것과 같이 부드러운 곡선이 되는 것(=원본에 가까움)을 확인할 수 있다.


(출처: http://www.morphfx.co.uk/music/edu-sampling.htm)


우리가 일반적으로 구입할 수 있는 음반 CD의 스펙은 44,100hz 16bit 이다.

1초에 44100개의 샘플을 추출하고, 각 샘플의 크기는 16bit (= 2byte short) 라는 것이다.




[나이퀴스트 샘플링 이론(Nyquist–Shannon sampling theorem)]

왜 대부분의 MP3 파일, 혹은 하드웨어들이 44,100hz 스펙을 가지고 있는지에 대해 이 것으로 설명이 가능하다.


이론의 결론만을 요약하면 다음과 같다:

A sufficient sample-rate is therefore 2B samples/second, or anything larger. 

충분한 샘플링 레이트는 대역폭의 두 배, 혹은 그 이상이다.


이론에 대한 간략한 설명


사람이 소리로 들을 수 있는 가청 주파수의 범위는 20~20000 Hz 이다.

즉 데이터의 대역폭이 20 KHz라는 것인데, 이를 왜곡(Aliasing 등) 없이 샘플링 하려면

대역폭의 2배인 40 KHz 샘플링 레이트로 샘플링 해야한다.


여기서 오차 10% 및 영상 업계 표준과의 동기화 문제 등으로 인해

현재는 44,100Hz와 48,000Hz가 범용적으로 가장 많이 사용되게 되었다.


아래는 어디서 줏어들은 것:

44,100hz : 25FPS PAL, 30FPS NTSC

48,000hz : 29.97FPS NTSC




[Sources]

https://en.wikipedia.org/wiki/Sampling_(signal_processing)

https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem

https://en.wikipedia.org/wiki/Aliasing

'컴퓨터 공학 > 석사(M.S.)' 카테고리의 다른 글

[사운드] 샘플링(Sampling) 및 관련 이론  (0) 2017.03.16
석사 연구를 시작합니다.  (0) 2017.01.11

성균관대학교 대학원 전자전기컴퓨터공학과에서 2017년 3월부터 석사 시작합니다.


이진규 교수님의 지도 하에 랩실에서 근무 예정입니다.

주 연구 분야는 모바일 시스템입니다. 모바일 센싱 및 자동차와의 융합 기능을 연구합니다.

배터리 분야도 부 연구로 진행합니다.


Real-Time Computing Laboratory (http://rtcl.skku.edu/)

연구 분야:

- Real-Time Embedded Systems

다양한 코어 시스템에서 실시간 스케줄링을 연구합니다.

멀티 쓰레드 환경에서 실시간 스케줄링을 연구합니다.

하드 리얼타임 환경에서 실행 시간을 보장하는 방법을 연구합니다.

- Cyber-Physical Systems

효율적인 배터리 충전/방전 방법을 연구합니다.

- Mobile Systems

모바일 응용과 서비스를 연구합니다.

모바일 환경에서의 에너지 소비 최적화를 연구합니다.

IoT 관련 분야를 연구합니다.

'컴퓨터 공학 > 석사(M.S.)' 카테고리의 다른 글

[사운드] 샘플링(Sampling) 및 관련 이론  (0) 2017.03.16
석사 연구를 시작합니다.  (0) 2017.01.11
System 클래스는 Java에서 제일 많이 사용되는 표준 입출력 클래스죠?
System.in(표준 입력), System.err(표준 에러 출력), System.out(표준 출력) 을 포함하죠.

그런데 왜 이 System 클래스가 java.lang 패키지에 속해 있을까요?

이유는 간단합니다.
다시 말하지만 System 클래스는 표준 입출력을 담당하고 있습니다.
그런 만큼 모든 클래스에서 접근이 자유로워야겠죠.

따라서 모든 클래스가 자동으로 import 시키게 되는
Java.lang 패키지에 속해 있는 것입니다.

물론 System 클래스의 필드들은 static으로 선언되어 있지요.

InputStream과 OutputStream은 abstract 클래스입니다.

왜 추상 클래스일까?
크게 두 가지 이유로 나눌 수 있습니다.

첫째,
두 클래스 모두 '바이트의 입, 출력을 담당하는 모든 클래스' 의 수퍼(부모) 클래스이므로
아무런 기능을 가지고 있지 않아야 합니다.

둘째,
사용하고자 하는 클래스에 맞게 read() 나 write() 메소드를
오버라이딩 하여 사용하기 위해
추상 클래스로 선언되어야 합니다.

+ Recent posts