Soundflower と Audio MIDI設定

なんとなく接続できてるがなんだかきもいです。

OBS 音声設定の Soundflower。

Releases · mattingalls/Soundflower · GitHub

自在に利用したいので接続のつながりを少し整理しておきます。

どうしてSoundFlowerとかいるのか。

以下の問題があるそうです。

macOS版 OBS Studio既知の問題一覧 (公式サイトより引用)
・デスクトップオーディオをキャプチャする場合は、仮想音声デバイスを利用する必要があります。

OBS Studio for macOS インストール / アップデート 方法解説:OBS Studioに関する情報投稿ブロマガ - ブロマガ

ここでいう「仮想音声デバイス」が Soundflower らしいです。

OBSで設定-音声をみてみます。

選択肢には Soundflower しかありませんね。

「既定」は何なのか謎ですがとりあえず音声は受け取れてないようでした。

「デスクトップ音声」の設定

OBSがデスクトップ音声をSoundflowerからしか受け取れないことは分かりました。

あとはこの先に「デスクトップ音声」を接続すればいいのですね!

Mac設定から「サウンド」「出力」で 「Soundflower(2ch)」を選択します。

これで、いけるっちゃあいけるのですが、Macからは音がでなくなりました。

クソですね!

Audio MIDIの設定

「OBS」と「内蔵出力(スピーカーやヘッドホン)」の2つに「デスクトップ音声」をわたしたいですよね!

しかし、Mac設定から「サウンド」「出力」では「サウンドを出力する装置」は一つしか選択できません。

Mac上で「アプリケーション」「ユーティリティ」に「AudioMIDI設定」というのがあります。

これは、Macの設定「サウンド」の詳細設定ができるものです。

赤い四角のスピーカーマークが「デスクトップ音声」です。サウンド設定から「Soundflower(2ch)」を選択しましたよね。

ここで「複数出力装置」なるものを作ると分岐できるようになります。

「内蔵出力(スピーカー)」を有効にして、「標準出力装置」を右クリックで「デスクトップ音声」を接続します。

これは以下のようにつながっています。

これで、Mac上の音声を聞きながらOBS経由でゲーム配信できますね!

まとめ

「OBS」は「Soundflower」からしか「デスクトップ音声」を取得できない。

「デスクトップ音声」はひとつのデバイスしか接続できないのでその先で分岐する。

「複数出力装置」や「Soundflower」は、複数の入出力を行えるデバイスである。

だが、さまざまな理由からソフトウェアによって利用できない入出力デバイスがある。

ゲーム配信者はすごいなあ。

👉 【Catalina】SoundFlowerからBlackHoleに移行してOBS接続おさらい 

Soundflower - ニコニコ生主のためのwiki
機器セットを作成して複数のオーディオインターフェイスを組み合わせる - Apple サポート
「Audio MIDI 設定.app」を紐解く | scribble warehouse


【Kotlin】sortedWith + compareBy で並び替え

「C# でこんなの書けるけど Kotlin ではどう書くの?」 という話。


var list = new List<Person>();
list.Add(new Person(25, "Tom"));
list.Add(new Person(25, "Dave"));
list.Add(new Person(20, "Kate"));
list.Add(new Person(20, "Alice"));

// will produce: Alice, Kate, Dave, Tom
var sortedList = list
    .OrderBy(person => person.Age)
    .ThenBy(person => person.Name)
    .ToList();

Javaのコードから考えるとKotlinでももちろんシンプルな記述となります。


val sortedList = list
    .sortedWith(compareBy({ it.age }, { it.name }))


val sortedList = list
    .sortedWith(compareBy(Person::age, Person::name))


list.sortedWith(compareBy<Person> { it.age }.thenBy { it.name }.thenBy { it.address })


list.sortedWith(compareBy({ it.age }, { it.name }, { it.address }))

java - Sort collection by multiple fields in Kotlin - Stack Overflow

大文字小文字を無視する場合。


places
    .sortedWith(
        compareBy(String.CASE_INSENSITIVE_ORDER, { it.name })
     )


places
    .sortedWith(
        compareBy(String.CASE_INSENSITIVE_ORDER) { it.name }
     )


places
    .sortedWith(
        compareBy(String.CASE_INSENSITIVE_ORDER, Place::name)
     )

kotlin - How to sort objects list in case insensitive order? - Stack Overflow

降順昇順の対応やモデルに入れたり。


val sortedList = list
    .sortedWith(compareBy({ it.a }, { it.b }, { it.c }))


list.sortedWith(
    compareBy<Foo> { it.a }
        .thenByDescending { it.b }
        .thenBy { it.c }
)


class Foo(val a: String, val b: Int, val c: Date) : Comparable<Foo> {

  override fun compareTo(other: Foo)
      = compareValuesBy(this, other, { it.a }, { it.b }, { it.c })
}
val sortedList = list.sorted()


class Foo(val a: String, val b: Int, val c: Date) : Comparable<Foo> {

  override fun compareTo(other: Foo) = comparator.compare(this, other)

  companion object {
    val comparator = compareBy(Foo::a, Foo::b, Foo::c)
  }
}
val sortedList = list.sorted()

comparable - How to sort based on/compare multiple values in Kotlin? - Stack Overflow

シンプルで便利になりつつも複数の記述で書くことができてしまう最近の言語のパターン。


あの Jake Wharton さんが伝授する Android Studio を高速化する方法

直接は関係ないような気がしますが

「Kotlinを使ったら Android Studio が遅くなった」

という疑問に対して、神と呼ばれる Jake Wharton さんがコメントしています。

「プラグイン捨てれ」

I find the IDE slower when adding any plugin. Especially ones which provide a great deal of functionality such as an entire language support.

Go to preferences > plugins > and disable everything you don't need. I disabled

Android APK Support
Android Games
Android NDK
App Links Assistant
CVS
EditorConfig
Firebase (all of them)
GitHub
Google (all of them)
hg4idea
Settings repository
Subversion integration
Task management
Terminal
Test recorder
TestNG
YAML

Goes real fast now.

JakeWharton comments on Android Studio slower when using Kotlin

本体や各ウインドウの起動などかなり高速化されます。

Kotlin や Google や RxJava など多岐に渡るオープンソースプロジェクトに深く関わる Jake さんが必要ないプラグインが私たち小市民に必要なわけがありません。

一回も使ったことがないプラグインが多くあるのは間違いありません。

他の多機能アプリやソフトウェアにも同様のことがいえます。

確認してみてはいかがでしょうか。