모스 부호 소리 변환 공식과 Web Audio API 주파수 설계 가이드

원하는 텍스트나 영어 카피를 입력하여 점과 선 부호로 자동 번역하고, 표준 주파수 비프음으로 변환된 사운드를 실시간 들어보세요.

무선 통신 역사상 최초의 디지털 인코딩 중 하나인 **모스 부호(Morse Code)**는 점(., 단점)과 선(-, 장점)의 배열만으로 알파벳과 숫자를 표현하는 매우 고전적이고 아름다운 통신 수단입니다.
특히 모스 부호를 단순히 텍스트 형태의 문자열로 변환하는 것을 넘어, 웹 브라우저 환경에서 실제 무선국 음향 신호음(Beep Sound)으로 송출하기 위해서는 오디오 디지털 주파수 변동(Oscillation)과 재생 시간 타임라인 설계를 자바스크립트 오디오 라이브러리 없이 구현해 보아야 전산학적 소리 합성의 본질적인 기전을 체득할 수 있습니다. 본 글에서는 모스 오디오 신호 합성의 주파수 제어 공식과 표준 타임 기준을 해설합니다.
1. 모스 부호 오디오 신호음 합성의 수학적 시간 공식
모스 부호의 오디오 재생 시간은 **'단점(Dot) 1개의 길이'**를 기본 단위 기준 시간($U$, Unit)으로 정의하고, 모든 장점(Dash)과 간격 시간을 이 기준 시간의 배수로 수학적 계산합니다:
- 점(Dot)의 소리 길이: $1U$ (보통 WPM 속도 기준 50ms~100ms 내외)
- 선(Dash)의 소리 길이: $3U$ (단점 소리의 정확히 3배)
- 문자 내부의 점/선 간 무음 간격: $1U$ (무음 상태 유지)
- 단어 사이의 공백(Space) 간격: $7U$ (단점 길이의 7배 동안 무음 유지)
Web Audio API를 활용한 디지털 주파수 발생 원리:
브라우저 환경 내에서 별도의 음원 MP3 파일 로드 없이, 컴퓨터 프로세서 연산으로 순수 정현파(Sine Wave)를 생성하는 기본 오디오 그래프 구조는 다음과 같습니다:
[ \text{Signal}(t) = A(t) \sin(2\pi f t) ]
여기서 $f$는 비프음 주파수(일반적으로 인간이 가장 명료하게 듣는 600Hz ~ 800Hz 음역대), $A(t)$는 소리 볼륨의 포락선(Envelope) 값으로, 소리가 켜진 시간 구간 동안 $A(t) = 1$, 꺼진 구간 동안 $A(t) = 0$이 됩니다.
2. 자바스크립트 Web Audio API 연동 그래프 구조
Web Audio API의 핵심 노드 연결 흐름과 비프음 재생 구현 로직 공식은 아래와 같습니다:
// 오디오 컨텍스트 기동
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
function playBeep(durationMs, frequency = 700) {
// 오실레이터(발진기) 및 게인(볼륨 제어) 노드 생성
const osc = audioCtx.createOscillator();
const gainNode = audioCtx.createGain();
osc.connect(gainNode);
gainNode.connect(audioCtx.destination); // 스피커로 출력 연결
// 주파수 파형 지정 (정현파)
osc.type = "sine";
osc.frequency.setValueAtTime(frequency, audioCtx.currentTime);
// 클릭 잡음(Clicking Noise) 방지를 위한 볼륨 포락선 조절 (Fade-in/out)
const now = audioCtx.currentTime;
gainNode.gain.setValueAtTime(0, now);
gainNode.gain.linearRampToValueAtTime(0.5, now + 0.005); // 빠른 램프 온
gainNode.gain.setValueAtTime(0.5, now + (durationMs / 1000) - 0.005);
gainNode.gain.linearRampToValueAtTime(0, now + (durationMs / 1000)); // 램프 오프
osc.start(now);
osc.stop(now + (durationMs / 1000));
}
[!NOTE] 복잡하게 오디오 버퍼 조작 코드를 짜서 빌드할 필요 없이, 모스 부호 오디오 변환기 도구를 활용하면 텍스트를 적는 즉시 점/선 부호로 인코딩함과 동시에, Web Audio API를 활용한 정밀한 시간 지연 기전의 실제 송출 비프음 소리를 귀로 바로 들으며 학습할 수 있습니다.
원하는 텍스트나 영어 카피를 입력하여 점과 선 부호로 자동 번역하고, 표준 주파수 비프음으로 변환된 사운드를 실시간 들어보세요.
3. 고품질 오디오 신호 합성을 위한 클릭 노이즈 예방 팁
- 볼륨 급변 차단 (Gain Smoothing): 오디오 신호 파형을 순간적으로 재생했다가 0ms로 뚝 끊어버리면 브라우저 스피커 출력단에서 '툭' 하고 튀는 클릭 잡음(Click Noise)이 동반됩니다. 이를 막기 위해 위 코드처럼 아주 미세한 순간(약 5ms) 동안 선형적으로 볼륨을 올렸다가 부드럽게 낮춰주는 '게인 스무딩' 기술을 이식해야 맑고 깨끗한 아날로그 비프 신호음을 합성해 낼 수 있습니다.
- 비동기 오디오 컨텍스트 상태 관리: 최신 크롬 브라우저 정책상, 사용자가 화면을 마우스로 한 번 이상 클릭하는 직접 액션을 취하기 전에는 보안 상 비자발적인 오디오 재생(
AudioContext) 기동이 차단(Suspended)되므로, 반드시 플레이 버튼 클릭 이벤트를 거친 후에 컨텍스트를 활성화해 주는 것이 작동 신뢰성 확보에 필수적입니다.
