AudioKitの使い方
AudioKitというiOS/macOSの有名なオーディオライブラリがある。存在自体はずっと前から知ってはいたものの、使用したことはなかった。
とある用途でコンプレッサーを使いたくて、試してみた。
ちなみにCookbookという公式の全部入りサンプルがあるのだけど、
これはAudioKitを初めて使う場合、またごく一部の機能だけ使いたい場合には何が最小要件なのかがわかりづらい。
たとえばAudioKitUIというUIライブラリは使いたくないときにどこが省けるのかとか、このコードや設定ってマイク録音を使用しない場合にも必要なのかなとか、そういうのが「全部入り」のためにわかりづらくなっている。
本記事では「最小実装」を示す。
プロジェクトに導入する
現時点での最新、4.11.2をSPMで入れようとすると以下のようなエラーになる。
Package Resolution Failed
"AudioKit.git" could not be resolved:
https://github.com/AudioKit/AudioKit.git has no Package.swift manifest for version 4.11.2
ワークアラウンドとして、バージョン指定ではなく、v5-mainブランチを指定すると解決した。
最小実装でオーディオファイルを再生する
Cookbookにはオーディオファイルを再生するだけの最小実装のサンプルがなく(AudioKitを使う意味がないのでそりゃそうともいえるが)、DryWetMixerなどが必ず入っていて何が必要要件なのかがわかりづらい。
スタート地点として、再生だけの最小実装を探ったところ、以下のようになった。
・プロパティの定義
let engine = AudioEngine()
let player = AudioPlayer()
var sourceBuffer: AVAudioPCMBuffer {
let url = Bundle.main.url(forResource: "beat", withExtension: "aiff")!
let file = try! AVAudioFile(forReading: url)
return try! AVAudioPCMBuffer(file: file)!
}
・初期化処理
player.isLooping = true
player.buffer = sourceBuffer
engine.output = player
try! engine.start()
・再生開始
player.play()
AudioEngineは内部でAVAudioEngineを持っていて、ほぼ似たような実装。
AudioKitのエフェクター
AudioKitには次のようなエフェクターが定義されている。Nodeクラスを継承しており、実際のエフェクターのように複数つなげて使用することが可能。
### ディレイ
・Delay
・StereoDelay
・VariableDelay
### ディストーション系
・BitCrusher
・Clipper
・Decimator
・DiodeClipper
・Distortion
・RingModulator
・TanhDistortion
### ダイナミクス系
Compressor
DynamicRangeCompressor
DynamicsProcessor
Expander
PeakLimiter
TransientShaper
### エンベロープ系
・AmplitudeEnvelope
・Tremolo
### フィルター/イコライザー系
LowShelfFilter
BandPassButterworthFilter
BandPassFilter
BandRejectButterworthFilter
DCBlock
EqualizerFilter
FormantFilter
HighPassButterworthFilter
HighPassFilter
HighShelfFilter
HighShelfParametricEqualizerFilter
KorgLowPassFilter
LowPassButterworthFilter
LowPassFilter
LowShelfParametricEqualizerFilter
ModalResonanceFilter
MoogLadder
ParametricEQ
PeakingParametricEqualizerFilter
ResonantFilter
RolandTB303Filter
StringResonator
ThreePoleLowpassFilter
ToneComplementFilter
ToneFilter
### モジュレーション系
Chorus
Flanger
Phaser
### その他
めんどくさくなったので省略。リバーブ系、オートワウとかピッチシフターもある。
AudioKitエフェクターの最小実装
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/