「C で作る通知音」は、C の基礎を学び、ループからオリジナルの音声を生成したい方のための実践プロジェクトです。短い 440 Hz の音から始めて 660 Hz に変更し、2 つの音、無音の間隔、緩やかな立ち上がりと終わりを持つ実際の WAV 通知音を作る、再利用可能な C プログラムを作成します。
2 つのガイド付きラボでは、サンプル生成から短い区間の組み合わせへと進みます。独立したチャレンジでは、同じ方法を使って音の高さと時間を変えます。各単元には独立した準備済みファイルがあり、前のラボから引き継ぐのは知識だけです。ファイルや実行中のプログラムは必要ありません。
学習内容
- サンプルレート、サンプル番号、時間を、ループで生成すべきサンプル数に結び付ける。
- 正弦波の式と C の数学ライブラリで、振幅を制限した符号付き 16 ビット・モノラル PCM サンプルを生成する。
- 値がゼロの無音区間を挟んで 2 つの音を組み合わせ、各音の両端に線形のフェードインとフェードアウトを適用する。
- 再利用可能な生成プログラムをコンパイルし、実際の WAV 形式と長さを確認して、保存したファイルをブラウザーで再生・シーク・ダウンロードする。
このコースの対象者
このコースは、使い慣れた言語機能で小さな創作プロジェクトに取り組みたい C 学習者を対象としています。C Programming for Beginners が基礎固めに適しています。
前提知識: C の変数と数値、条件分岐、ループ、配列、関数、および基本的なターミナルコマンドとディレクトリ移動。サンプリング、必要なバイナリ出力呼び出し、WAV の各フィールドは使用前に説明します。ポインター、バイナリファイル、信号処理の専門知識は前提としません。
学習環境: LabEx が C コンパイラ、数学ライブラリ、準備済みのソースファイル、ブラウザーのターミナル、実際の音声ファイルを扱うプレーヤーを用意します。手元へのインストールは不要です。プログラム出力とプレーヤーのラベルは英語のままです。
よくある質問
自分でどの部分を書きますか?
サンプル生成のループ、時間の制御、無音、音ごとのフェードを実装します。用意され、仕組みも説明される書き出し処理は、サンプルを WAV のバイト列にまとめるだけで、音を代わりに生成しません。成果物は C ソース、動作する実行ファイル、実際の WAV 出力です。
どのような音声を作りますか?
このプロジェクトでは、毎秒 16,000 サンプルの符号付き 16 ビット・モノラル PCM という特定の非圧縮 WAV 形式を使います。保存されたサンプルと長さを確認します。汎用音声コーデック、フィルター、音声編集は扱いません。
録音素材やマイクは必要ですか?
必要ありません。音は録音から取り出すのではなく、自分の C プログラムで合成します。ブラウザーのプレーヤーは保存されたファイルを読み、再生・シーク・ダウンロードに使います。欠けたサンプルを補うことはありません。

