Wavファイルのフォーマットと読込

はじめに

ここでは音声ファイルであるWAVファイル(.wav)のフォーマットの説明と簡単な読込サンプルについて解説しています。
WAVファイルについては、「wav フォーマット」などで検索するとすでに他のサイトでも解説されていますので、簡単に説明します。

WAVファイルのフォーマット

WAVファイルはRIFFファイル形式をとっています。
RIFFファイル形式では、そのファイルに必要なデータをチャンクと呼ばれるブロックに分けて保存し、チャンクにFourCCと呼ばれる4Byteの識別子(ID)を付けて管理するファイル形式です。

RIFFファイルについては下記に簡単に記載しております。必要に応じてご参照ください。

今回作成するWAVファイルの読み込み関数のサンプルはこちらからダウンロードできます。 → riffsample_20231210
※Wavファイル以外にもSoundfontファイル読込サンプルなども同梱されています。

WAVファイルのチャンク

WAVファイルのチャンクと階層構造は下記となっています。各チャンクの詳細は後述します。
2つの必須チャンクがあります。

もっと見る

SoundFontの取り扱い04 – SoundFontの音色と音色情報(Hydra)チャンク

はじめに

複数回にわたってSoundFontファイル(.sf2ファイル)を読み込んでシンセサイザーなどに使えるようにパラメーターを組み立てる方法を説明しています。
ここではSoundFontファイル(.sf2)の音色の構成と音色情報(Hydra)チャンクの関係を説明いたします。

各説明のリンクはこちらにまとめております → SoundFontの読み込みと組み立て
サンプルコードなども上記のリンクにあります。

SoundFontの音色の構成について

初めにSounfFontの音色構成についておさらいいたします。

SoundFontでは音色はプリセットとして扱われ、プリセット(音色)には1つ以上のインストルメント(楽器)をキー(ノートNo)とベロシティにマッピングして構成されています。
また、インストルメント(楽器)もプリセットと同様に1つ以上のサンプル(音声波形)をキー(ノートNo)とベロシティにマッピングして構成されます。

SoundFontの音色と内部構成

SounfFontのプリセット(音色)はインストルメント(楽器)やサンプル(音声波形)をマッピングするために、ヘッダ・バッグ・ジェネレータを組み合わせた下記のような内部構成になっています。
もっと見る

SoundFontの取り扱い03 – SoundFontの音色とジェネレータについて

はじめに

複数回にわたってSoundFontファイル(.sf2ファイル)を読み込んでシンセサイザーなどに使えるようにパラメーターを組み立てる方法を説明しています。
ここではSoundFontの音色情報を組み立てる際に重要となるジェネレータについて説明します。

各説明のリンクはこちらにまとめております → SoundFontの読み込みと組み立て
サンプルコードなども上記のリンクにあります。

SoundFontの音色の構成について

ジェネレータを説明する前にSounfFontの音色構成について説明します。

SoundFontでは音色はプリセットとして扱われます。

プリセット(音色)は1つ以上のインストルメント(楽器)で構成されています。
インストルメント(楽器)のパラメータを調整してMIDIのキー(ノートNo.)とベロシティにマッピングすることで、単純な楽器の再現だけでなく演奏上の表現を広げることができるようにしています。
例として下記のようなインストルメント(楽器)の組み合わせがあります。

インストルメント(楽器)は1つ以上のサンプル(音声波形)で構成されます。
サンプル(音声波形)のパラメータを調整してMIDIのキー(ノートNo.)とベロシティにマッピングすることで、よりリアルな楽器の再現ができるようにしています。
もっと見る

SoundFontの取り扱い02 – SoundFontのフォーマット

はじめに

複数回にわたってSoundFontファイル(.sf2ファイル)を読み込んでシンセサイザーなどに使えるようにパラメーターを組み立てる方法を説明しています。
ここではSoundFontファイル(.sf2)のフォーマットについて説明します。

各説明のリンクはこちらにまとめております → SoundFontの読み込みと組み立て
サンプルコードなども上記のリンクにあります。

SoundFontファイルのフォーマット

SoundFontファイルはRIFFファイル形式をとっています。
RIFFファイル形式では、そのファイルに必要なデータをチャンクと呼ばれるブロックに分けて保存し、チャンクにFourCCと呼ばれる4Byteの識別子(ID)を付けて管理するファイル形式です。

RIFFファイルについては下記に簡単に記載しております。必要に応じてご参照ください。

SoundFontファイルのチャンク

SoundFontファイルのチャンクと階層構造は下記となっています。各チャンクの詳細は後述します。
もっと見る

RIFFファイルについて – RIFFファイルの概要と読み込み

はじめに

ここではRIFFファイルとフォーマットの概要と読み込むためのクラスの実装について説明します。

今回の作成するクラスのソースファイルはこちらにあります。 → riffsample_20231210
※WavファイルやSoundfontファイル読込サンプルも同梱されています。

RIFFファイル形式をもとにして作られたファイルの取り扱についても下記にまとめています。

RIFFファイルとは

RIFFファイルとは「Resource Interchange File Format」の略になります。
MicrosoftとIBMが提案したマルチメディア用のファイルフォーマットで、音声や動画などのデータ(=Resource)をアプリケーション間でやり取り(Interchange)するためのファイルフォーマットになります。

アプリケーション固有の情報をファイルに付与しても、他のアプリケーションでの読み込みに影響をなくすように設計されたファイルフォーマットです。
もっと見る

SoundFontの取り扱い01 – SoundFontの概要と前提知識について

はじめに

複数回にわたってSoundFontファイル(.sf2ファイル)を読み込んでシンセサイザーなどに使えるようにパラメーターを組み立てる方法を説明しています。
ここではSoundFontの概要と仕様書・参考資料について説明します。

各説明のリンクはこちらにまとめております → SoundFontの読み込みと組み立て

SoundFontとは

SoundFontとはE-MU Systems社のウェーブテーブル音源チップ EMU8000シリーズ用に開発された規格です。
音色ファイル(SoundFontファイル)をEMU8000シリーズに読み込ませることで、サンプラーのように音色を自由に追加・変更できる規格です。

SoundFont規格は内容が公開されており、さまざまなソフトウェアシンセサイザー(音源)やサンプラーで利用できるようになっています。

EMU8000シリーズは1990年代のCreative社製サウンドカード Sound Blasterシリーズに搭載されていました。
コンピューターの性能が貧弱でmp3やwav、ソフトウェア音源(MIDI音源)を十分に扱えなかった時代に、Sound Blasterだけで外部MIDI音源なしにいい音が扱え、さらにSoundFontで好みに合わせて自由に音色を追加・変更できるという画期的な製品でした。

しかし、Sound Blasterシリーズはゲームでの利用を想定していたためDTMなどのMIDI音源としてはあまり普及せず、現在(2018年6月頃)のSound BlasterシリーズにはEMU8000シリーズを含めMIDI音源機能は搭載されなくなっているようです。

対象としているEMU8000シリーズ自体はなくなりましたが、現在でも「規格内容が公開されている」「過去に作られたSoundFontファイルがそのまま使える」「ソフトウェア音源の性能が向上しDTMで使いやすくなった」などの点から、利用されている規格になります。

SoundFontを取り扱うための前提知識

SoundFontの規格ではウェーブテーブル音源やサンプラー、シンセサイザーなどのデジタル楽器・音源の知識が必要となります。
MIDIに関する簡単な知識(Note On/Off、ベロシティ、Control Change、ピッチベンド程度)やサンプルループや音量・フィルタ・エンベロープ(ADSR)・LFOなど音色を作成するための用語や仕組みについてはご理解していただいている前提となります。
もっと見る