Spotifyが公開したエフェクターライブラリ「Pedalboard」を試してみた
アドベントカレンダーもついに最終日です!
先日、Music LTでSpotifyが公開したSpotifyが公開したエフェクターライブラリ「Pedalboard」を紹介しました。
その時のスライドはこちらです。
LTでは、このライブラリを使ったちょっとしたデモもやりました。
というわけで今回はこのLTでやったデモのソースコードを解説していきます。
環境構築
pedalboardを使うにはPython3.6以上が必要です。
事前にセットアップしておきましょう。
Pythonのセットアップが完了したら、以下のコマンドで必要なライブラリをインストールします。
pip3 install numpy
pip3 install matplotlib
pip3 install librosa
pip3 install pedalboard
ソースコード
import time
import librosa
import librosa.display as display
import sounddevice as sd
from matplotlib import pyplot as plt
from pedalboard import (
Pedalboard,
Gain,
Phaser,
Reverb,
Compressor,
)
# サンプル音源を読み込む
audio, sr = librosa.load(librosa.example('vibeace', hq=True), sr=44100)
# オリジナル音源を再生
print("Play original audio")
sd.play(audio, sr)
time.sleep(15)
sd.stop()
# ボードを組んで音源を変換
board = Pedalboard([
Compressor(ratio=10, threshold_db=-20),
Gain(gain_db=15),
Phaser(),
Reverb()
], sample_rate=sr)
effected_audio = board(audio)
# エフェクトかけた音源を再生
print('Play effected audio')
sd.play(effected_audio, sr)
time.sleep(15)
sd.stop()
plt.figure()
# オリジナル音源をプロット
plt.subplot(2, 1, 1)
display.waveplot(audio, sr=sr, color='b')
plt.title('Original')
# エフェクトかけた音源をプロット
plt.subplot(2, 1, 2)
display.waveplot(effected_audio, sr=sr, color='r')
plt.title('Effected')
# グラフを表示
plt.tight_layout()
plt.show()
エフェクターを組んでいるペダルボードは以下のコードです。
board = Pedalboard([
Compressor(ratio=10, threshold_db=-20),
Gain(gain_db=15),
Phaser(),
Reverb()
], sample_rate=sr)
Pedalboard
関数内でのリストで列挙されているのがエフェクターの関数です。
それぞれの関数のエフェクターは以下のような感じです。
- Compressor: ざっくり言うと、音量のばらつきを均一にする役割があります
- Gain: これは歪んだ音を出します。音量と混同しがちですが、ゲインはトーンを調整しています
- Phaser: これでうねるような音を出力します
- Reverb: 体育館やコンサートホールで響くような音を出すときに使います
以上の関数を組み合わせてオリジナルの音を変換します。
ギターのエフェクターもこのように複数のエフェクターを組み合わせて音作りをしています。
動かしてみる
実際に動かしてみます。
動かすと、冒頭の15秒だけオリジナルとエフェクトかけたときの音源がそれぞれ流れて、最後に以下のような波形のグラフが表示されるようになります。
とても同じ音源とは思えないほど変化が分かりやすくでています。
その変化は実際に音源を聞いても分かるので、ぜひ体感してみてください!
終わりに
今回はサウンドエフェクターライブラリ「Pedalboard」を紹介しました。
とても無料で提供しているとは思えないぐらい多彩なエフェクターが提供してあり、しかも本物のエフェクターと同じぐらいかなりのクオリティでエフェクトがかかります。
さらにDTMプラグインのVST3にも対応しているので、高くて操作が複雑なDTMを自分の手で作れる可能性が広がりすごく面白いことになりそうだと実感しました。
今回はターミナルから実行するシンプルなプログラムでしたが、今後はGUIライブラリとかを使って自作DTMなんて出来たらいいなと思ってます。
完成したときにはまたMusic LTでお話しようと思うのでお楽しみに!(本当に作れるか分からないけどw)
Discussion