Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

WAVEファイルにリアルタイムで加工を施し再生する

ステレオデータのモノラル化と簡易ボーカルキャンセル機能

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/04/25 15:00

ダウンロード ソースファイル (3.2 KB)

マルチメディア系のプログラムを作成していると、音のデータを扱いたいときもあると思います。今回は読み込んだWAVEに対してモノラル化(またはボイスキャンセル)を施しながら再生してみます。もちろん曲全部をメモリに展開するようなことはしません。

目次

はじめに

 マルチメディア系のプログラムを作成していると、音のデータをリアルタイムで処理したいときもあるでしょう。今回は「WAVEファイルからデータを読み込み、加工を施した上で再生する」方法を紹介します。

 もちろんWAVEデータ全部をメモリに展開するような手抜きはしません。必要応じてファイルを読み込んでいきます。

対象読者

 本稿ではC言語を利用します。WINAPIでウィンドウプログラムを作成したことがある人が対象です。それと、内容が応用系なので、参考資料で一度勉強してからの方が理解できると思います。

 「waveOut~」「mmio~」が分かる方は大丈夫でしょう。分からない方も参考資料に載っているページに行けば、すぐに分かると思います。

必要な環境

 WINAPIを利用するのでWindowsが必要です。動作はXPのみで確認していますが、他のバージョンでも動くでしょう。それと、コンパイル時に「winmm.lib」が必要です。

概要

 今回はいろいろなテクニックを使っているため、それぞれのさわりだけを解説します。分からない部分は参考資料を当たってみてください。そちらの方が1つ1つのことを詳しく説明しています。

 それでも分からない場合は、質問してください。

行う加工処理

 今回はサンプルなので、「モノラル化」と「簡易ボーカルキャンセル」を行います。それぞれ次の演算をデータに施します。

モノラル化
(L + R) / 2
ボーカルキャンセル
(L - R)

 このボーカルキャンセルは手抜きですが、モノラル化よりも違いが分かるので採用しました。それと、これらの加工は、エコーのように時間軸に対して処理する必要がないので楽です。

注意

 今回は処理を単純化しているため、次の制限があります。

  • 読み込むWAVEファイルのパスは固定(コンパイル時に埋め込み)
  • WAVEデータは無圧縮の16ビットステレオに限定。ただし周波数は限定しない(というより、周波数は調整できる)

 mp3やoggを読み込みたい方もいると思いますが、デコード処理が必要なため、今回はパスします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 利都(りと)

    陸奥でプログラムをしている学生。 LOGOからVB6.0へ。 現在は主にC系言語を利用。 Atelier BlueにてManaged DirectXについてのTipsを書いている。 http://www.atelier-blue.com/ IL(CIL,MSIL)もしているのでそちらに興味...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5