コイデマサヒロ
Kicksterterで資金募集をしていたBelaというBeagleboard Black用のCape(CapeとはArduinoでいうところのシールドのようなもの)を入手しました。低レイテンシーなオーディオを売りにしていたため興味を持ちました。既にKicksterterで購入した人向けの発送も終り、最近は開発もかなり活発になってきているようです。そこで、今回は そのBelaを試してみます。
目次
Part1.(本記事)
- Belaとは
- ハードウェアのスペック
- ソフトウェア環境について
Part2. (別記事:公開中)
- セットアップ
- eMMCから起動できるようにする。
- Bela IDEを使ってみる
- アップデートについて
Part3. (別記事:公開中)
- Pure Dataのパッチを動かすには
- 実際に使ってみる
2-1. Pure Dataの準備
2-2. プロジェクトの作成
2-3. パッチの作成とアップロード
2-4. アナログ/デジタルポートを試す
2-5. シンセパッチの改造
2-6. 改造したパッチを動かす - さいごに
1. Belaとは
上の写真がBela本体です。Beaglebone Blackに装着して使います。
Bela本体は、オーディオの入出力ポートの他に、外部デバイスと接続するためのアナログ、デジタルのポートを持つIOデバイスです。
Belaの『超低レイテンシーなオーディオやセンサー処理のための組み込みプラットフォーム』という触れ込みは、このIOボードだけではなく、専用のOSや開発環境も含むシステムであるということも示しています。
OSはDebian系Linuxですが、カーネルにXenomaiを採用しています。低レイテンシーというのは、このXenomai採用がキーになっているようです。
また、デフォルトではディスプレイアウトを持たないヘッドレス仕様で、スタンドアロンで単体のアプリケーションを動かすことを前提とした仕組みになっています。組み込み的と言っても、何かプロダクトを作るためのプロトタイプ環境ではなく、独自な作品/楽器を作るためのシステムということを志向しているようです。開発はロンドン大学クイーン・メアリーのCenter for Digital(C4DM)内のAugmented Instruments Laboratoryのリサーチの一環であるようです。
また、Belaは、さまざまな環境との親和性も志向しているのも特徴的です。
例えば、PureDataのパッチが読み込めたり、FaustもBela用のコードが吐き出せるようになっていたり、pyo(Python用のDSPエンジンhttp://ajaxsoundstudio.com/software/pyo/)との連携もできるようです。 また最近では、SuperColliderとの連携も強化されつつあります。このあたりは、ユーザーの協力もあるようで、オープンな環境ならです。
Belaの公式サイトはこちらです。
作例のビデオなども公開されていますので、Belaがどいうものなのかわかると思います。
2. ハードウェアのスペック
詳細はページを見てください。
オーディオ用ポートは、in x2/out x2, SpeakerOut x1(Stereo)があり、それぞれ、16bit、44.1kHzです。
その他のポートは、センサー等のためのデジタル、アナログのIOです。LEDを光らせたり、LCD繋いだり、センサーやモーターを繋いだりするためのポートです。
アナログが、イン、アウトそれぞれで8ch。通常は22.05kHzでの動作ですが、設定で、44.1kHzで4ch、88.2kHzで2chとしても利用できます。つまりオーディオ用としても扱うことができます。(実際にオーディオ用として利用するには外付け回路が必要だと思います。)
デジタルは、イン・アウト共用で16chあります。動作レートは、44.1kHzか88.2kHzで、レートに応じて利用できる最大チャンネル数も変わります。
当然ながら、Beaglebone Black側の機能も使えます。USB機器への接続が可能で、Belaシステム上でもMIDI機器を使用できます(クラスコンプライアント対応のデバイス用)。
有線でのネットワークへの接続も可能です。
ネットワークはBelaで対応しているWifiドングルもあるようですが、試してないためここでは割愛します。僕は Wifi to LANなデバイスを所有しているので、Wifiを利用したい場合はそれを使っています。(一台持ってると便利!)
またBela上にオーディオポートはあるものの端子は汎用のものなので、僕はアナログのIN、OUT用のケーブルも買いました(下記写真参照)。実際に使うとなると必須です。簡単に自作することもできますが...。
Belaの電源はBeaglebone Blackから給電されます。Beaglebone Black自体の電源は、USB経由か電源アダプタですが、Belaを使う場合は電源アダプターを利用したほうがよいと思います。またスピーカーアウト等のアナログ周りの電源用に直接Belaに電源アダプタを接続できるようにもなっています。デジタル部とアナログ部を共有するとアナログ部にノイズが増えてしまうことが多いための配慮です。
参考のためにBeagleboard Blackのスペックも記しておきます。
CPU:1GHz ARM Cortex-A8(シングルコア)
メモリ:512MB DDR3 RAM
eMMC:4GB (内蔵ストレージ)
2x PRU 32-bit microcontrollers
GPIOは、eMMCとHDMI用に一部が使われているため見た目よりは少ないです(それでもRaspberry Piよりは多いですし、アナログ入力もついています)
3. ソフトウェア環境について
OSはXenomaiカーネルを採用した独自なDebian Linuxです。GUIかつディスプレイアウトを持たないヘッドレス仕様ですので、ターミナル(ssh)かブラウザ経由でアクセスします。開発はブラウザベースのIDEがメイン環境です。
Beagleboad BlackとパソコンをUSBで繋げば、その2つでネットワーク環境が築かれます。(※1)。ブラウザで 192.168.7.2にアクセスすればBela IDEが開きます。IPアドレスは固定です(変更は可能)。ターミナルで接続する場合は、sshで192.168.7.2にrootアカウントでログインします。パスワード無しでログインできます。ブラウザIDEでもいろいろなことができるのですが、IDEでできないことはターミナルを使って作業することになります。コマンドラインでビルドすることも可能です。その場合は、コマンドライン用のビルドスクリプトが提供されていますので、それを利用します。IDEでもコマンドラインでもBelaのマナーにしたがって開発をしないと、Belaの機能を利用できませんので、そのことは留意しておきましょう。
外部ネットワーク(インターネット)への接続は可能ですが、
$ apt-get upgrade
等のアップデートはしないほうが良いようです。独自にライブラリ類がインストールされているようで、依存関係が壊れてしまう場合があるようです。
$ apt-get autoremove
も同様です。
$ apt-get update
はローカル側のリストの更新だけですので問題はありません。apt-get install 〜でのインストールもできますので、開発上何か必要なライブラリ等がでてきたら個別にインストールしたり、必要なライブラリのみアップグレードするという運用が良さそうです。
(※1)パソコンとの接続にはドライバーが必要です。このパソコンとの接続関連の仕様は、Bela特有ではなくBeaglebone Blackの仕様を踏襲しています。Belaを使う前に通常のBeaglebone Blackのシステムがどうなっているのか等は把握しておいたほうが良いです。
コイデマサヒロ
ディレクター、プロデューサー、ギタリスト。mimiCopyをはじめ弊社リリースの全てソフトウェア製品の企画を担当。ネイティブアプリ開発がメインでOS問わず対応可。dubバンドのギタリストとしても活動中。