[t:/]$ 지식_

MP3 음질 열화

2011/03/07

2005년 쓰다만 글.

손실 압축해서 열화됐어요는 생략.

플로팅 연산의 오류

플로팅 연산은 생각보다 정확하지 않다. 게다가 FPU 에뮬레이션이나 개발자 나름대로 가지고 있는 회피 스킬을 이용하면 이 오차는 비약적으로 커지게 된다.

퍼포먼스 우선의 오류. + 양자화의 오류.

많은 공학식에서 공학적으로 의미가 희소한 항은 임의로 삭제해버린다. 상수는 근사시킨다. 사실 정수외에는 다 어렵다.

플로팅 연산은 굉장히 어려운 난제이다. 일정 패턴의 플로팅 연산이 반복되는 경우. 영리한 개발자라면 테이블을 사용한다. 그러나 테이블은 이미 양자화 되어 있기 때문에 사잇값이라는 것이 존재하지 않고, 여기서 에러는 누적된다.

FPU도 없고 퍼포먼스도 후진 임베디드 CPU의 미미한 DSP 명령어들을 이용하기란 여간 까다로운 일이 아니다.

숙련된 개발자들은 멀티 Core 형태의 하드웨어 접근으로서 이를 상당부분 해결하곤 한다. 그러나 우리의 타겟은 언제나 가난한 법이어서 오천원짜리 칩에서 이를 해결해야 한다.

시뮬레이터나 근사식을 이용해서 테이블을 잘 뽑아 내는 것은 훌륭하지만 오차가 있다.

보간식의 오류.

테이블값에 의존하여 양자화된 값을 사용하는 경우. 항상 테이블에 없는 값은 존재하기 마련이라 보간식을 사용한다. 다차원 방정식을 사용할 수 있는 환경이 아니다.

보간식은 때때로 숙련된 경험자의 try & error 에 의해서 찾는다. 실험의 환경이 쾌적하고 정확하다면 꽤 유용한 방법이다. 관록있는 경력자의 지적은 try의 횟수와 도메인과 레인지를 줄여줄 것이다.

타이밍, 우선순위의 오류.

일정 rate로 흘러야 할 데이터의 연산에서 타이밍을 못 맞춰주어 미묘한 오류가 발생하는 것들이 있다.

그러나 때때로 개발자들은 이것을 무시한다. 유저 입장에서는 이러한 오류가 전혀 의미없을 수도 있기 때문이다.

그러나 항상 악랄한 오타쿠급 유저들은 있기 마련이어서. "버튼을 누를때 미묘하게 끊기네요" 라며 수정을 요구하곤한다.

EMI와 EMC

오디오 파일의 수많은 도시전설이 대부분 과학적으로 의미가 없으나 사실 의미 있는 경우가 많다. 그것은 주로 EMI와 EMC에서 유래하는데 가따부따 욕먹기 싫으니 생략.

우리 개발자들은 PWM이나 시리얼 통신이나 대충 단 캐퍼시터가 노이즈를 .. 생략하자..









[t:/] is not "technology - root". dawnsea, rss