バイパスできない

あらやだ。もう10月。

AVAudioUnitReverbbypassYESにすると音が出なくなって困ってるところ。

これは私が凡ミスってるだけなの・・?
そんな情報出てこないし・・

ただUnit作ってattach,connectして、bypassをYESにしてるだけなんですけども。ぐえー。

その他のエフェクトはbypassをYESにしても音が出ることを確認。
Reverbはデフォ値ならかかってないことになるんでしょうけど、そういうものなの??

AVAudioUnitですって奥様

iOS8だ!わー! まだ入れてませんけど。

自分のような小物が記事にできるようなことは何もありませんが、
今ちょうどiOSのオーディオ関連に足を突っ込んでおりまして。

見てしまった・・新しいAVFoundationのリファレンスを。
そこに・・「AVAudioUnit」という文字があることを。

AVAudioUnit!
なんということでしょう!

まだチラ見ですが、AudioUnitがより扱いやすくなる予感です。

さらに、見つけてしまいました。

バーブにプリセットが入ってる!

These constants describe the reverb presets.

Declaration
SWIFT
enum AVAudioUnitReverbPreset : Int {
    case SmallRoom
    case MediumRoom
    case LargeRoom
    case MediumHall
    case LargeHall
    case Plate
    case MediumChamber
    case LargeChamber
    case Cathedral
    case LargeRoom2
    case MediumHall2
    case MediumHall3
    case LargeHall2
}

名前が読みやすかったswiftの方のenumを抜粋。

おー、13個もあります!
どんな効果になるのかな!

ただし、AVAudioUnitReverbの場合、
公開されてるパラメータはwetDryMixのみですね。
プリセットを選び、wet/dryで調整する感じでしょうか。

私のような素人耳には全然これで十分でしょう・・・・

GainやDelayをいじる必要がある場合には
これまでと同様、AudioUnitを使わないといけないようですね。
(追記)→プロパティにaudioUnitがあるので、これ使ってAudioUnitSetParameter()すればよいですね

ああ、もっと掘り下げたいな、iOS8!。゚+.(・∀・)゚+.゚

そういえば、これまでDryWetMixだったのにwetDryMixと逆になってる。なぜ。

Objective-Cオブジェクト から CoreFoundationオブジェクトへのキャスト

(知らなかったのでメモ。。)

ARC環境下では、キャスト時に__bridgeがないと怒られる。

例:NSURL * から CFURLRef にキャスト

CFURLRef url = (__bridge CFURLRef)[NSURL URLWithString:@"path"]
理由

NS〜とかObjective-CのオブジェクトはARC対象だけど CoreFoundationは対象外だから。

上のCFURLRef urlは、 NSURLのオブジェクトがなくなる時(スコープ外に出る)まで有効。 変数の中にアドレスが残っていたとしてもアクセスしてはだめ。

O-Cオブジェクトが破棄された以後もCFオブジェクトを使用したい時は、 retainやオーナーシップ権を委譲するbridgeキャストがある。

参考

http://natsuapps.com/note/2011/11/ios5-arc-autorelease-bridge-xcode.html