NetBSDからumidi(4)機器としてAndroidスマートフォンを使ってみる

これは、NetBSD Advent Calendar 2020の21日目の記事です。

はじめに

Androidスマートフォンで、USB接続するとumidi(4)として認識される機能のあるものがあります。 これはどういう動作をするのか気になっていました。 今回は、この機能がMIDI入力とMIDI出力の両方として利用できるものだと分かったので、NetBSDから使ってみたいと思います。

Androidスマートフォンの準備

今回使ったAndroidスマートフォンは、Sony Xperia XZというAndroid 8の搭載された端末です。 普段は、自宅内のAsteriskの内線子機として使っている端末です。 これをUSBケーブルで、NetBSD端末につなげると、MIDIデバイスになるための接続を選択する画面が表示されます。 MIDIデバイスになる項目を選択しましょう。

どうやら、Androidスマートフォン単体ではMIDIデバイスにはなれないようです。 今回は、MIDIインプット機器とMIDIアウトプット機器のいずれにもなれる Dreamhound Studios製のMIDI Keyboardというアプリを 利用することにします。

このMIDI Keyboardアプリを起動させると、画面左上にMIDIメニューが表示されています。そこではInpiutとOutputについて、それぞれ指定できます。 標準ではいずれも(none)になっています。つまり、NetBSDとMIDI通信をすることができません。 これをいずれも「Android USB周辺機器ポート」に切り替えておきます。

NetBSDで録音・再生する

NetBSDには、midiplay(1)とmidirecord(1)というコマンドが標準で用意されており、それぞれMIDIファイルの再生、MIDIファイルへの録音ができます。 まずは、当該部分のdmesgを確認してみましょう。umidi1として認識されていることが分かりました。

umidi0 at uhub5 port 1 configuration 1 interface 1
umidi0: Sony (0x0fce) F8332 (0xc1e7), rev 2.00/3.18, addr 10
umidi0: (genuine USB-MIDI)
umidi0: out=1, in=1
midi1 at umidi0: <0 >0 on umidi0

以下のように実行した上で、MIDI Keyboardアプリの表示するキーボードで演奏してみます。 -d 1で、midi1を使うことを指定しています。

$ midirecord -d 1 test.mid

こうやって録音した演奏を以下のように再生してみます。 -d 1はmidirecordの場合と同様な意味です。

$ midiplay -d 1 test.mid

今回は、ピアノ音のみを扱うアプリでしたが、他の音源を扱えるアプリがあるかもしれませんので、探して試してみたいと思います。

No comments:

Post a Comment

ローカルで大容量・多数のファイルをバックアップしたい場合

ネットワーク経由ではなく、ローカルのハードディスクドライブ間で多数・大容量のファイルをバックアップしたい場合にも、私は rsync を使っている。 途中経過を表示してくれるし、途中で止まってしまった場合にもリカバリーが簡単だろうという意図である。 幸運にも途中で止ま...