대개 같이 오는 두 문제가 있습니다 — 파일 형식이 맞지 않고, 그중 일부만 필요합니다. WAV나 MP3를 올려 파형에서 원하는 구간을 끌어낸 뒤 MP3나 WAV로 저장하세요. 업로드는 없습니다.
예전에는 브라우저에서 오디오를 자르려면 파일을 어딘가에 올려야 했지만 지금은 아닙니다. 브라우저가 재생에 쓰는 디코더를 페이지에서도 쓸 수 있고, 그 디코더가 원본 샘플을 그대로 돌려주기 때문입니다. 샘플만 있으면 자르기는 계산입니다 — 구간을 복사하고, 앞뒤 몇 밀리초에 경사를 주어 이음매에서 소리가 튀지 않게 한 뒤, 새 헤더를 붙이면 끝입니다. 파형도 같은 샘플로 그린 것이라 녹음 앞머리의 무음을 눈으로 보고 자를 수 있습니다.
비용이 드는 것은 MP3 하나입니다. 어떤 브라우저도 MP3를 만들어 주지 않아서, 이 페이지는 자바스크립트로 컴파일한 LAME을 실제로 MP3를 요청한 순간에만 받아옵니다. 페이지를 열 때는 받지 않습니다. WAV는 샘플 앞에 44바이트 헤더를 붙인 것이 전부라 어떤 편집기에서도 열리는 대신 가장 큽니다 — 스테레오 1분이 약 10MB로, 192kbps MP3의 약 1.4MB와 비교됩니다.
아닙니다. 애초에 파일을 받을 서버가 이 사이트에는 없습니다. 브라우저가 평소 재생에 쓰는 엔진으로 오디오를 해석하고, 그 샘플로 캔버스에 파형을 그리고, 자르기는 그 샘플의 일부를 복사하는 일이며, MP3 인코딩까지 전부 사용자의 기기에서 일어납니다. 확인하고 싶다면 개발자 도구의 네트워크 탭을 열어 두거나, 페이지를 연 뒤 인터넷 연결을 끊어 보세요 — 그래도 그대로 동작합니다.
어떤 브라우저도 MP3를 만들어 주지는 않기 때문입니다. 재생(디코딩)은 하고 Opus 인코더도 들어 있지만, MP3 인코딩은 어떤 웹 API에도 없습니다. 그래서 이 페이지는 표준 인코더인 LAME을 자바스크립트로 컴파일한 것을 함께 씁니다. 약 170KB이고, MP3를 고른 상태로 자르고 변환을 처음 누를 때 받아옵니다 — 페이지를 열 때는 받지 않고, WAV만 쓰신다면 아예 받지 않습니다. 반대로 WAV는 비용이 없습니다. 디코더가 넘겨준 샘플 앞에 44바이트짜리 헤더를 붙이면 끝이기 때문입니다.
음악이라면 192kbps가 대부분의 사람이 원본과 구분하지 못하게 되는 지점이고, 기본값을 그렇게 둔 이유도 그것입니다. 말소리나 팟캐스트는 인코딩할 정보가 훨씬 적어서 128, 심지어 96으로도 충분합니다. 256이나 320은 편집 프로그램에서 한 번 더 가공할 파일에만 의미가 있습니다. 용량은 숫자에서 바로 나옵니다 — 192kbps 1분은 약 1.4MB, 같은 1분이 스테레오 WAV면 약 10MB이고, 버튼 옆의 예상 용량이 선택한 구간에 맞춰 그 계산을 대신 해 줍니다.
조금 나빠집니다. MP3는 손실 압축이라 불러온 파일은 이미 정보를 버린 상태이고, 그것을 풀었다가 다시 압축하면 조금 더 버립니다. 비트레이트를 높여도 처음에 버린 정보가 돌아오지는 않습니다. 이를 세대 손실이라고 하는데, 한 번으로는 귀에 잘 띄지 않기 때문에 여기서 MP3를 자르는 것 자체는 전혀 문제가 없습니다. 두 가지만 지키면 신경 쓸 일이 없습니다 — 원본 WAV가 남아 있다면 그쪽을 자르고, 잘라 낸 결과를 편집 프로그램에서 더 손볼 예정이라면 출력 형식을 WAV로 고르세요.
조금 다르고, 어떤 MP3도 정확히 같을 수는 없습니다. MP3는 1,152 샘플짜리 프레임 단위로 동작해서 파일 길이가 항상 프레임의 정수 배가 되고, 인코더는 맨 앞에 짧은 지연을 덧붙이며 디코더가 그만큼을 건너뛰도록 되어 있습니다. 그래서 1초를 선택해도 재생 길이는 약 1.03초가 되고 앞뒤로 몇 밀리초의 무음이 생깁니다. 효과음이나 벨소리처럼 한 번씩 재생하는 소리라면 알아차릴 수 없지만, 자기 자신에 이어 붙여 반복해야 하는 루프라면 이야기가 다릅니다. WAV에는 두 문제가 모두 없습니다 — 여기서 만든 1초짜리 WAV는 샘플 단위까지 정확히 1초입니다. 반복 재생하거나 다른 소리와 박자를 맞출 파일이라면 WAV를 고르세요.
도구가 아니라 브라우저 때문입니다. Web Audio는 모든 오디오를 하나의 컨텍스트로 해석하고, 그 컨텍스트는 한 가지 샘플레이트 — 보통 사운드 장치를 따라 44,100Hz나 48,000Hz — 로만 동작합니다. 그래서 다른 레이트로 녹음된 파일은 읽어 들이는 과정에서 변환되며, 화면에 보이는 값은 변환된 뒤의 레이트입니다. 변환 품질 자체는 높아 귀로는 알기 어렵고, 실제로 체감되는 차이는 여기서 저장한 WAV의 용량이 원본과 조금 달라질 수 있다는 정도입니다.
그쪽 페이드 값을 올리세요. 소리는 파형이라서, 파동이 한 주기의 중간을 지나는 지점에서 자르면 파일이 그 값에서 시작합니다. 무음에서 그 값으로 순간 이동하는 셈이고, 그것이 딱 소리로 들립니다. 5밀리초만 줘도 사라지며 페이드로 느껴지지도 않습니다. 타악기처럼 어택이 중요한 소리도 20~30밀리초까지는 무리 없이 견딥니다. 0으로 두는 것은 샘플을 그대로 보존해야 할 때 — 예를 들어 다른 조각에 이어 붙일 때 — 만 쓰시면 됩니다.
루프를 올린 뒤 시작점은 그대로 두고 1s 버튼을 누르면 됩니다. 시작점에서 정확히 1초가 선택됩니다. 첫 박이 0초에 딱 맞지 않는다면 왼쪽 끝을 끌어 시작점을 옮긴 다음 자르고 변환을 누르세요. 잘라 낸 것을 다시 반복 재생할 계획이라면 형식을 WAV로 고르고 페이드를 둘 다 0으로 두세요. 그래야 샘플 단위까지 정확해서 이음매가 그대로 맞물리며, MP3로는 그렇게 할 수 없습니다. 한 번씩만 재생할 소리라면 MP3에 5밀리초 기본값 그대로가 용량 면에서 낫습니다.