.wavファイル プレイヤー – .WAV Player

概要

.WAV PlayerはGUI上から簡単にキーに.wavファイルをアサインして再生することのできるVST3プラグインです。
.wavファイルを一覧化しすぐに読み出せるようにすることで管理しやすくし、さらにキーに割り当てることでリズム用の音源としても使いやすくできればと思い作成いたしました。

下記のリンクよりダウンロードできます。

  Download→WAVPlayer_x64_v1.0

もっと見る

エフェクターの簡単な実装例 – ピッチシフター

ピッチシフターの実装例

ピッチシフターは入力信号に音程を高くしたり、低くしたりするエフェクターです。

パラメーターとして下記がよく利用されます。

パラメーター 意味 だいたいの範囲
ミックスレベル ピッチシフターのかかり具合 0~1の間
ピッチ どれだけ音を高く(低く)するか -12~12半音(-1~1オクターブ)程度

実装は読み込み速度を速めたディレイ信号を入力信号に加えて出力します。
ディレイ信号の読み込み速度を速めることで音程が変わります。

ディレイ信号はリングバッファを使用して保存します。リングバッファは「リングバッファについて」で作成したものを使用しています。
また、読み込み速度を変更した際、整数値にならない場合があるためサンプルとサンプルの間の位置の値を線形補間などを用いて割り出す必要があります。
線形補間の詳細は省略いたします。

あくまで実装例ですのでいい音質のものがほしい場合は、ご自身で試行錯誤いただくようお願いします。

【実装イメージ】
■線形補間の実装

■エフェクターの実装

上記はあくまで実装例です。
読み込み位置(上記の変数pos)が0になる時(42行目)に音声信号が不連続となりノイズが入ります。
クロスフェード等を利用して音声信号を滑らかにつなぐことでノイズは改善することができます。

質問はコメント欄や掲示板Twitterでいただけばとおもいます。
他のエフェクター実装例はこちらにもあります。 → エフェクターの簡単な実装例

掲示板
■Twitterアカウント:@vstcpp   URL:https://twitter.com/vstcpp

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)するためのファイルフォーマットになります。

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