Oh MyUtils

톤 생성기 - 오디오 주파수 & 파형 생성기 온라인

사인파, 사각파, 톱니파, 삼각파 톤을 20Hz~20kHz 범위에서 생성합니다. 실시간 파형·스펙트럼 시각화, 멀티톤 믹싱, 음표 표시 — Web Audio API 기반 100% 클라이언트 사이드.

귀를 보호하세요. 낮은 볼륨에서 시작하세요.

Hz
440.00 Hz
가장 가까운 음표:A4
50%
시각화
100% 클라이언트 사이드 — 모든 오디오는 브라우저에서 생성되며 서버로 전송되지 않습니다

자주 묻는 질문

톤 생성기란 무엇이며 어디에 사용되나요?

톤 생성기는 특정 주파수와 파형의 오디오 신호를 생성하는 도구입니다. 스피커와 헤드폰 테스트, 오디오 장비 캘리브레이션, 악기 튜닝, 청력 범위 테스트, 이명 주파수 매칭, 음파 특성의 교육적 시연에 일반적으로 사용됩니다. 생성되는 톤은 저음(20Hz)부터 고음(20,000Hz)까지 인간 청력의 전체 범위를 포괄합니다.

이 톤 생성기를 어떻게 사용하나요?

1. 파형 유형을 선택합니다 (순수한 톤은 사인파, 풍부한 배음은 사각파/톱니파/삼각파). 2. 슬라이더, 숫자 입력 또는 프리셋 버튼으로 원하는 주파수를 설정합니다 (예: 표준 A4 튜닝 440Hz). 3. 볼륨을 적절한 수준으로 조정합니다 — 청력 보호를 위해 낮게 시작하세요. 4. 재생 버튼을 클릭하여 톤 생성을 시작합니다. 5. 파형 시각화로 실시간 오디오 신호 형태를 관찰합니다. 6. 스펙트럼 보기로 전환하여 신호의 주파수 내용(배음)을 확인합니다. 7. 멀티 톤 탭에서 여러 주파수를 동시에 믹싱할 수 있습니다.

오디오 데이터가 서버로 전송되나요?

아니요. 이 도구는 100% 클라이언트 사이드이며 브라우저에 내장된 Web Audio API를 사용합니다. 모든 오디오 합성, 처리, 시각화는 전적으로 사용자의 기기에서 이루어집니다. 오디오 데이터, 주파수 설정 또는 기타 어떤 정보도 서버로 전송되지 않습니다. 초기 페이지 로드 후 완전히 오프라인으로 작동합니다.

사인파, 사각파, 톱니파, 삼각파의 차이점은 무엇인가요?

사인파: 단일 주파수(기본음)만 가진 가장 순수한 톤. 매끄럽고 깨끗한 소리. 표준 참조 신호로 사용. 사각파: 홀수 배음(3차, 5차, 7차...)만 감소하는 진폭으로 포함. 공허하고 윙윙거리는 소리. 레트로 게임 음악에서 흔함. 톱니파: 모든 배음(홀수+짝수)을 감소하는 진폭으로 포함. 밝고 거친 소리. 신디사이저 패치에 흔히 사용. 삼각파: 사각파처럼 홀수 배음만 포함하되 훨씬 빠르게 감소. 부드럽고 플루트 같은 소리.

매우 낮거나 높은 주파수가 들리지 않는 이유는?

일반적인 인간 청력 범위는 20Hz~20,000Hz이지만 개인마다 크게 다릅니다. 저주파(약 40Hz 미만)는 서브베이스를 생성할 수 있는 스피커나 헤드폰이 필요하며, 많은 노트북 스피커는 이를 재생할 수 없습니다. 고주파 청력은 나이에 따라 자연스럽게 감소합니다(노인성 난청) — 대부분의 25세 이상 성인은 15-16kHz 이상을 들을 수 없습니다. 주파수가 들리지 않으면 볼륨을 조심스럽게 높이거나, 스피커가 해당 범위를 지원하는지 확인하거나, 헤드폰으로 테스트해 보세요.

여러 톤을 동시에 생성할 수 있나요?

네. 멀티 톤 탭으로 전환하면 최대 4개의 동시 톤을 생성하고 믹싱할 수 있습니다. 각 톤에는 독립적인 주파수, 파형, 볼륨 컨트롤이 있습니다. 음정, 화음, 바이노럴 비트를 만들거나 여러 주파수의 상호작용(간섭 패턴, 맥놀이)을 테스트하는 데 유용합니다. 시각화는 모든 활성 톤의 결합된 파형을 보여줍니다.

440Hz 주파수란 무엇이며 왜 특별한가요?

440Hz는 국제 표준 콘서트 피치로, 가온다 위의 라 음(A4)으로 정의됩니다. 1955년 국제표준화기구(ISO 16)에 의해 채택되었으며 전 세계적으로 악기 튜닝의 기준 주파수로 사용됩니다. 일부 음악가와 튜닝 시스템은 432Hz(베르디 피치라고도 함)와 같은 대안적 기준을 사용하며, 이 도구에서도 프리셋으로 제공됩니다.

코드 예시

// Using the Web Audio API to generate tones in the browser

function playTone(frequency = 440, waveform = 'sine', volume = 0.5) {
  const ctx = new AudioContext();
  const oscillator = ctx.createOscillator();
  const gainNode = ctx.createGain();

  oscillator.type = waveform; // 'sine', 'square', 'sawtooth', 'triangle'
  oscillator.frequency.setValueAtTime(frequency, ctx.currentTime);
  gainNode.gain.setValueAtTime(volume, ctx.currentTime);

  oscillator.connect(gainNode);
  gainNode.connect(ctx.destination);
  oscillator.start();

  // Return stop function
  return () => {
    gainNode.gain.linearRampToValueAtTime(0, ctx.currentTime + 0.05);
    setTimeout(() => {
      oscillator.stop();
      oscillator.disconnect();
      ctx.close();
    }, 50);
  };
}

// Convert frequency to musical note name
function frequencyToNote(frequency) {
  const A4 = 440;
  const noteNames = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];

  const semitones = 12 * Math.log2(frequency / A4);
  const roundedSemitones = Math.round(semitones);
  const cents = Math.round((semitones - roundedSemitones) * 100);

  const noteIndex = ((roundedSemitones % 12) + 12 + 9) % 12;
  const octave = Math.floor((roundedSemitones + 9) / 12) + 4;

  return { note: noteNames[noteIndex] + octave, cents };
}

// Example usage
const stop = playTone(440, 'sine', 0.5);
console.log(frequencyToNote(440));    // { note: 'A4', cents: 0 }
console.log(frequencyToNote(261.63)); // { note: 'C4', cents: 0 }
setTimeout(stop, 2000);

관련 도구