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を使用しています。すべてのオーディオ合成、処理、ビジュアライゼーションは完全にお使いのデバイス上で行われます。オーディオデータ、周波数設定、その他の情報がサーバーに送信されることは一切ありません。

サイン波、矩形波、のこぎり波、三角波の違いは?

サイン波:単一周波数のみの最も純粋なトーン。滑らかでクリーンな音。標準参照信号として使用。矩形波:奇数倍音のみを含む。中空でブーンという音。レトロゲーム音楽で一般的。のこぎり波:すべての倍音を含む。明るく荒い音。シンセサイザーパッチでよく使用。三角波:矩形波のように奇数倍音のみだがはるかに速く減衰。柔らかくフルートのような音。

非常に低いまたは高い周波数が聞こえないのはなぜ?

一般的な人間の聴力範囲は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);

関連ツール