[Swift Playgrounds] – 音をプログラミングしよう – Drawing Sounds編

2016.09.24

おばんです、開発作業のときにXcodeの本番とステージングのターゲット、それからWebAPIの本番とステージングの設定を間違えるために下手を打つと1時間くらい時間を使ってしまう田中です。

今回はSwift Playgroundsの『Drawing Sounds』というコンテンツの紹介です。

14455944_1119691991449203_199231767_o

Swift Playgroundsとは?

こちらをご覧ください。

[Swift Playgrounds] - Swift Playgroundsことはじめ - 全体紹介編

Drawing Soundsとは

Drawing SoundsはSwift Playgroundsに入っているコンテンツの一つで、すでに書かれているソースコードを書き換えることで音や楽器を作り出すというものです。

IMG_0042

Drawing Sounds解説

サンプルとして書かれているコードは流れる音楽に合わせてベースの音と、スピーチ音声を合わせようというようなもの。

ソースコード解説

サンプルのソースコードにコメントアウトを追記して解説していきます。

// 連続再生するBGMのLoopクラスのインスタンスを生成。LoopTypeは.airyVox, .altPop, .aboveAndBeyondの3タイプがある。
let loop = Loop(type: LoopType.aboveAndBeyond)
// loopのボリューム設定。0から100を設定できる。
loop.volume = 5
// loopを再生する。
loop.play()

// liveView左のキーボードの設定を行う
func leftSoundProducer() -> SoundProducer {
    // ベースの音を奏でるBaseクラスのインスタンスを生成。Base()のほかにElectricGuitar()も使える。
    let instrument = Base()
    // 楽器の強弱の設定
    instrument.defaultVelocity = 80
    // 楽器のxEffectを変更する。タイプは.velocity, .pitchBend, .pressureの3タイプがある。
    instrument.xEffect = InstrumentTweak(type: InstrumentTweakType.velocity, effectFrom: 50, to: 100)
    // 楽器のfilterを変更する。タイプは.alienChatter, .cathedral, .cellphoneConcert, .cubedDistortion, .distortion, .echo, .multiEcho, .smallRoomがある。
    instrument.filter = InstrumentFilter(type: InstrumentFilterType.cathedral)
    return instrument
}

// liveView右のキーボードの設定を行う
func rightSoundProducer() -> SoundProducer {
    // スピーチで発話させたい語を入力する。語はスペース区切りで、追加した語の数だけ鍵盤の数が増減する。
    let speech = Speech(words: "Here's to the crazy ones.")
    // スピーチの速度の設定
    speech.defaultSpeed = 25
    // スピーチのボリュームの設定
    speech.defaultVolume = 60
    // スピーチのxEffectを変更する。タイプは.pitch, .speed, .volumeの3タイプがある。
    speech.xEffect = SpeechTweak(type: SpeechTweakType.pitch, effectFrom: 0, to: 100)
    return speech
}

まとめ

iOSのアプリといえば、iPhoneが出た頃からキーボードで音を奏でるアプリがよく紹介されていました。
それに近いものとしてあらかじめ便利なクラスが作られてはいるものの、簡単につくり方を学べる良い資料だと思いました。