・標準ライブラリだけで作りました
・C++用簡易音楽エフェクターのヘッダーファイルです
・20種類位のエフェクターをかけることができます
・高校2年生の頃に作成し、定期的に拡張したものなのでメモリーの面などで効率が悪いかも
・説明のミスがあるかも
16bit 2ch のwavファイル
北朝鮮の音楽は著作権が無効らしいので使用
2.切りとり でフルの音源を切り取ってある
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Export(2); //チャンネル数 1でモノラル
//wd.Export(2,"Example2.wav"); //のように名前指定可
wd.Dispose(); //破棄
※ここだけフル音源を使用
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Cut(40.7, 43.8); //始点と終点を秒数で指定
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Speed(1.5,-6); //再生速度(倍率) ピッチを指定 再生速度をピッチに合わせる場合は、PITCH(ピッチ)のマクロを推奨 倍率にマイナスを付けると逆再生
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.AlgorithmicReverb(300, 0.6, 0.6); //遅延ミリ秒 倍率 原曲に混ぜる割合
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
畳み込みリバーブ
※別途IRデータをネットから探してダウンロードしてください (ここではOpenAIRのものを使用)
4~5分の曲で20~30秒かかります
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.LRdel(1000); //片側をすこし遅延 これを付けると音が広がったように感じる?
wd.ConvolutionReverb("IR.wav", 0.4,150);//IRファイル(16bit 2ch wav) 原曲に混ぜる割合 x以下の周波数無効
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
この曲は短調(ハ短調 #,♭ともに0個)なので、長調(ハ長調 #×3)に変更した例を載せる
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Custom_Scale(MAJOR_SCALE,0); //ピッチ変更用配列(int[12]) 調号数(#×1 ♭×-1)
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Flanger(1,0.5);//スピード 原曲に混ぜる割合
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
音割れ注意
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Compressor(0.25);//波形の振幅を何乗するか
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
中央にボーカルがいれば削除できる
モノラル音源になる
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Voicecanseller();
wd.LRdel(1000); //モノラルさを軽減する場合はこれを後に入れる
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
中央がボーカルのみならうまくいく
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.CenterMultiplier(5); //引数が大きいほど音が残りにくい 1~10位がいい?
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
ダウンサンプリングでしか使わないかも
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Quality(8000); //サンプリング周波数を指定
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Alien(1024, 0.1, 0.5, 1.5,1); //1フレームの長さ フレーム間の増加速度 最小速度 最大速度 開始速度
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
Youtubeによくある多重加速シリーズみたいな音
長めの音源の方が面白いと思う
#include "Music.h"
WaveData wd = WaveData("Example.wav");
wd.Multiple(3, 10); //重なる場所(秒) 速度の差(%)
wd.Export(2); //チャンネル数
wd.Dispose(); //破棄
似た機能の紹介は省略
抜けあるかも
引数はソースコードを参照してください
Youtubeにあったので作ってみた
以下解析用
2^k(k...自然数)倍ずれることがある
結構不正確