読者です 読者をやめる 読者になる 読者になる

わしろのめも

たいした話はしません

Scilabで歪みエフェクターを再現してみる

Scilabはwavファイルを操作する機能があり,それを使って予め.wav形式で録音されているクリーントーンのギターの音を歪ませてみよう,という遊びです.簡単で楽しいのでコスパいいですよ.

元になるファイルはこちらを使います.ファイル名でネタバレ気味ですが Deep Purple の Smoke on the Water のイントロのリフです.

[y,Fs,bits] = wavread("smoke.wav"); //y:信号 Fs:サンプリングレート bits:ビット数
y = y(1,:); //2chのwavファイルを1chに
plot2d(y) //元データをプロット

f:id:beybr6:20160717142625p:plain
今回はこの信号を±0.05でクリッピングしてみる

y_dis = y; //元データとの比較のためy_disを歪ませる
size(y_dis) //以下のwhile文のループ回数の確認

k=1
while k<=441000 //size(y_dis)の出力:441000
if y_dis(1,k) > 0.05 then
y_dis(1,k) = 0.05; //最大値0.05でクリッピング
end
if y_dis(1,k) < -0.05 then
y_dis(1,k) = -0.05; //最小値-0.05でクリッピング
end
k=k+1;
end

subplot(2,1,1)
plot2d(y)
subplot(2,1,2)
plot2d(y_dis)

playsnd(y,Fs) //クリーンサウンド出力
playsnd(y_dis,Fs) //歪みサウンド出力

f:id:beybr6:20160717142146p:plain

while文の代わりに min(),max() 関数を使う方法もあったのですが忘れました.

おしまい