문제

오늘은 흥미로운 질문이 있습니다.

필요합니다 일부 포켓몬 오디오 파일을 8 비트 샘플 목록으로 변환 (0-255 값). MC6800 칩셋에 어셈블리 루틴을 작성하여 이러한 사운드를 재생해야합니다. 기능이 호출 될 때 프로그램이 루프 할 8 비트 샘플이 포함 된 배열을 포함시킬 계획입니다.

오디오 파일 (WAV/MP3)을 쉼표로 분리 된 8 비트 텍스트 샘플 값 목록으로 변환하는 방법을 알고 있습니까? 아니면이 상대적인 방법이 있습니까?

미리 감사드립니다!

도움이 되었습니까?

해결책

명령 줄 "Sox"도구 또는 Audacity Audio 편집기를 사용하여 파일을 서명되지 않은 8 비트 모노 오디오 파일로 변환 할 수 있습니다.

Audacity 1.3 이상에서 오디오를 열고 내보내기를 선택하고 "Wave, AIFF 및 기타 비 압축 유형"을 형식으로 선택한 다음 옵션을 클릭 한 다음 "기타 ..."형식 "RAW"를 선택하십시오. 헤더의 경우, 인코딩으로 8 비트 PCM에 서명했습니다. (죄송합니다. 서명되지 않은 것은 없습니다.)

명령 줄에서 1 채널의 -c 1, 헤더가 없을 경우 -t raw, 서명되지 않은 선형의 경우 -u, 샘플 당 1 바이트의 경우 Sox를 사용해보십시오.

그런 다음 "hexdump"와 같은 도구를 사용하여 파일의 바이트를 숫자로 버리고 코드에 붙여 넣을 수 있습니다.

다른 팁

만약에 삭스 가지고 있지 않으면 원시 (헤더리스) 파일을 생성하고 원시 파일을 쉼표로 구분 한 쉼표로 변환하는 데 사용해야합니다.

편집 : SOX에는 웹 페이지에서 "원시 텍스트 데이터"가 형식 중 하나로 있습니다. 첫 번째 패스에서 사운드 파일을 서명되지 않은 8 비트 선형 샘플로 변환 한 다음 출력을 위해이 옵션을 사용하려는 출력을 정확히 얻을 수 있습니다.

.wav의 경우 매우 간단한 프로세스입니다. Google 검색에서 .wav 사양을 쉽게 찾을 수 있습니다. 헤더로 구성된 다음 원시 샘플로 구성됩니다. 먼저 헤더를 읽은 다음 모든 샘플을 반복해야합니다. 일반적으로 16 개의 비트 샘플이므로 -32768에서 32767 범위에서 0-255 범위까지 정규화하려고합니다. 처음에는 간단한 스케일링을 제안합니다. 성공하지 못한 경우 샘플 사이에서 실제 최소와 최대를 찾아서 그에 따라 스케일을 조정할 수 있습니다.

오디오 형식에 따라 다릅니다. 예를 들어, 웨이브 형식은 압축되지 않은 인터리브 PCM 데이터로 구성됩니다.

IE 8 비트 스테레오 파일의 경우 각 샘플은 다음과 같이 배열됩니다.

왼쪽 샘플 1] [오른쪽 샘플 1] [왼쪽 샘플 2] [오른쪽 샘플 2] ... [왼쪽 샘플 n] [오른쪽 샘플 n].

즉, 각 8 비트 스테레오 샘플은 2 바이트로 저장됩니다. 왼쪽 채널의 경우 1이고 오른쪽의 경우 1입니다. 이것은 사운드 하드웨어에 필요한 데이터 형식입니다.

16 비트 또는 24 비트 오디오 파일은 각 방식으로 작동하지만 왼쪽 및 오른쪽 샘플은 각각 2 또는 3 바이트가됩니다.

분명히 웨이브 파일에는 수많은 Extyra 정보가 있습니다. 리프 형식을 따릅니다. www.wotsit.org와 같은 장소에서 사용하는 "청크"파일에 대한 정보를 찾을 수 있습니다.

MP3를 압축하려면 더 복잡합니다. 당신은 감압제를 잡고 MP3 인코딩 오디오에서 실행하는 것이 가장 좋습니다. 상대방에서 위와 같이 PCM 데이터를 뱉어냅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top