コイデマサヒロ
今回のお題
ディレクターのコイデです。最近、話題のRaspberry Pi 3(RPi3)を入手しました。
思ったよりマシンパワーがあるので、可能性を感じています。僕は、音響、音楽、ビジュアル(映像)といったあたりをテーマにしているので、その分野でできることも多そうです。いろいろ調べてみると
なるものを見つけました。面白そうな音響系のソフト類がインストール済のOSのディスクイメージです。これを利用すれば面倒なセットアップの手間が省けます。しかし、RPi2用でRPi3では動きませんでした。
それなら自分でやろう、というのが今回の目的です。
僕自身、Linuxにも慣れていませんので、学習を兼ねて標準的な環境で、インストールやソフトウェアのビルドなどを行います。さて、非プログラマな僕にもできるのでしょうか?
目次
A:基本的なセットアップ
Raspbianを利用することを前提にしています。
OSのインストールから基本的なセットアップについては詳細な解説をしているサイトが沢山ありますので、そちらに譲ります。
ここでは、気になった点などのメモ程度の話にとどめます。
- 電源は大事。定格で2.5Aが推奨されています。USB機器を接続する場合は、RPi3側から供給されますので充分余裕があった方が良いようです。
- 放熱も少し気にする。何かしらケースに入れる場合が多いと思いますが、熱が篭るとフリーズしたり危険です。
- 使わないソフト、アプリ類は思い切って削除しよう。使わないと思われるものがプリインストールされていますので、それらを削除すればかなり容量が空きます。SDカードの容量も限られますし、ビルドするときには余裕があった方が良いです。
B:Raspbianのオーディオ、MIDIの仕組みの基礎
RaspbianもLinux一種ですので、Linuxの仕組みを踏襲しています。
Linuxのオーディオ、MIDI関係のIOの仕組みにはいろいろあります。
Windowsも結構煩雑と思われがちですが、それ以上にLinuxは煩雑です。
そんな中で、ALSAとJackが基本と考えて良いと思います。
OS的にはALSAがデフォルトですが、Jackもプリインストールされています。
通常では、ALSAがあって、その上にミキサー的にJackが乗っていると考えて良いと思います。
Jackの利点としては、アプリ間でも接続できるということでしょう。
アプリ側ではJackにしか対応していないもの、両方対応しているものなどいろいろ有ります。設定等も各アプリで異なる場合があります。
オーディオ、MIDIの設定が一切ないというアプリもあります。そういう場合はJack専用です。
Jackを利用する場合は、先にJackを起動しておき、次にアプリを起動します。
Jackはこんな感じ。
ALSAの設定アプリPimixerの画面。
C:アプリのビルトとインストール
1. Pure Data Extendedのインストール
Pure Dataビジュアルプログラミング環境と言われています。Cycling74のMaxと親戚にあたるアプリです。
メイン開発者がリリースしているPure Data本体のみの通称vanillaと呼ばれるバージョンです。代表的なプラグイン的なExternalを含めたものがExtendedというバージョンです。
Extendedはメンテナンスが中止されているようで、PureDataとしてはバージョンが古いのですが、External類(プラグイン的なもの)が含まれた状態のもので、Externalを個別に手動でインストールするのも面倒なので今回はExtendedをインストールしてみます。
なお、後述しますが、SuperColliderもインストールしたい場合は、Pure Dataを先にインストールしてください。
OS側の設定ファイルを書き換えます。
$ sudo nano /etc/apt/sources.list
nanoというターミナルで動くエディタが起動します。
最後の行の
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
の頭の#を削除します。
できたら、Ctrl+O を押してEnter(Return) で上書き保存されます。
次に、Ctrl+X を押すとnanoが終了します。
念のため各種アップデートを確認&インストールします。
$ sudo apt-get update $sudo apt-get upgrade
必要なライブラリ類をインストールします。
$ sudo apt-get install ttf-dejavu-core libfftw3-3 libftgl2 libgsl0ldbl liblua5.1-0 libquicktime2
ホーム位置にもどって一時的にファイルを置く場所を作成します。
$ cd $ mkdir puredata $ cd puredata
raspbian用のインストーラ的のdebファイルをダウンロードしてインストールします。
$ wget https://puredata.info/downloads/pd-extended-0-43-3-on-raspberry-pi-raspbian-wheezy-armhf/releases/1.0/Pd-0.43.3-extended-20121004.deb $ sudo dpkg -i Pd-0.43.3-extended-20121004.deb $ sudo chmod 4755 /usr/bin/pd-extended
インストールが完了したのでインストーラを削除します。
$ cd .. $ rm -rf puredata
これでメニューにPd-extendedが表示されるようになりますが、これだと起動できませんので、正しく動くように設定を書き換えます。
$ sudo nano /usr/share/applications/pd-extended.desktop
でファイルを開き、
Exec=/usr/lib/pd-extended/tcl/pd-gui.tcl %F
という行を
Exec=pd-extended %F
と書き換えます。
Ctrl+O と押してEnterで上書き保存し、Ctrl+X で終了します。
これでメニューからPd-Extendedが利用できるようになります。
ターミナルで
$ pd-extended
としても起動できます。
Alsaで動かすよりJackで動かしたほうが安定しているようですので、、僕はJackを使うように設定しました。
[2016.5.25追記]
コメントを頂いていたようですが、消えてしまったので(すでに解決した?)ここで補足しておきます。新規ウィンドウを開いた場合、画面左上にウィンドウ上部がはみ出す形で開いてしまうようです。これだとメニューは開けますがウィンドウが動かせなくて困ります。このような場合は、[Alt]+[Space]でウィンドウメニューが開きますので、その中の「移動」を選べば好きな場所に移動できます。新規ウィンドウの場合は必ずはみ出すようですで、空のパッチファイルを作成しておき、新規作成の場合は、そのファイルを開くようにすると煩わしさが減ると思います。
[参考]
2. SuperColliderのインストール
コマンドラインベースで使えるようにする方法もありますが、今回はUIベースで利用できるSCIDEをインストールします。
サイトで紹介されている方法でうまくいくと思いますが、注意点もありますのでるようです。
まず既にインストールされているもの不要なものを削除します。Sonic Pi関連でSupreColliderが既にインストールされているようですが、これらを削除します。
当然SonicPiは利用できなくなります。まあ似たようなものをいろいろインストールしますので問題無いでしょう。
$ sudo apt-get remove --auto-remove supercollider
※[注意]Pure Dataを使いたい場合は、先にPure Dataをインストールしてください。
上記のアンインストールでPure Dataでも必要なライブラリ群も削除されてしまうためです。先にPureDataをインストールしておけばPure Dataで必要なものは削除されません。
必要なライブラリ群をインストールする。
$ sudo apt-get install libboost-dev libjack-jackd2-dev libcwiid-dev libicu-dev libasound2-dev libsamplerate0-dev libsndfile1-dev libreadline-dev libxt-dev libudev-dev libavahi-client-dev libfftw3-dev cmake gcc-4.8 g++-4.8 qt5-default qt5-qmake qttools5-dev qttools5-dev-tools qtdeclarative5-dev libqt5webkit5-dev qtpositioning5-dev libqt5sensors5-dev
次にソースをダウンロードし自前でビルドするためのセットアップ。
$ git clone --recursive git://github.com/supercollider/supercollider --depth 1 $ cd supercollider $ git submodule init && git submodule update $ mkdir build && cd build $ export CC=/usr/bin/gcc-4.8 $ export CXX=/usr/bin/g++-4.8
$ cmake -L -DCMAKE_BUILD_TYPE="Release" -DBUILD_TESTING=OFF -DSSE=OFF -DSSE2=OFF -DSUPERNOVA=OFF -DNOVA_SIMD=ON -DNATIVE=OFF -DSC_ED=OFF -DSC_WII=ON -DSC_IDE=ON -DSC_QT=ON -DSC_EL=OFF -DSC_VIM=OFF -DCMAKE_C_FLAGS="-mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon -funsafe-math-optimizations" -DCMAKE_CXX_FLAGS="-mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon -funsafe-math-optimizations" ..
ここからビルト&インストール。
$ make -j4
※[注意]参考サイトだと -j 4と jと4の間が開いていますが、それは間違いと思われます。これはコンパイルを早くするための設定で、開いているとその設定が無視されビルドに時間がかかります。
$ sudo make install $ sudo ldconfig $ cd ../.. $ rm -rf supercollider
JackもSuperColliderもメインメニューに登録されていると思いますのでそこからも起動できます。Jackはメインメニューでは非表示なっている場合は、Main Menu Editorを使って表示に切り替えができます。
ターミナルから起動する場合は、
$ qjackctrl
で、Jackを起動し、
$ scide
で、SuperColliderを起動します。
動作確認には、Twititerで公開された140文字以内のソースで試すと便利です。
http://ia800202.us.archive.org/29/items/sc140/sc140_sourcecode.txt
[参考]
Building From Source on Raspberry Pi » SuperCollider
3. Chuckのインストール
ライブコーディングスタイルの音響合成ソフト。このスタイルを流行らせた元だと思います。リリースされた当初から知ってますが、知名度等の盛り上がりに比べてゆっくりとした開発進行な気がします。まあそれだけある程度完成しているということなのかもしれませんが。
新しいバージョンをインストールするとラズパイ側の オーディオの周りの設定が壊れるようで、少し古いバージョンですが、1.0.29をインストールします。
$ wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.29.tar.bz2 $ tar -xjf alsa-lib-1.0.29.tar.bz2 $ cd alsa-lib-1.0.29 $ sudo ./configure $ sudo make $ sudo make install $ cd .. $ rm -rf alsa-lib-1.0.29
Libsndfileは標準でインストール(Ver1.0.25)されているようですので、インストールは必要ないと思います。インストールするなら以下です。
$ wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.26.tar.gz $ tar -xvf libsndfile-1.0.26.tar.gz $ cd libsndfile-1.0.26 $ sudo ./configure $ sudo make $ sudo make install $ cd .. $ rm -rf libsndfile-1.0.26
さらに必要なライブラリ類をインストールします。
$ sudo apt-get install bison $ sudo apt-get install flex
本体のソースをGitからもらってきてビルド&インストールします。
$ git clone https://github.com/ccrma/chuck.git --recursive $ cd chuck/src/ $ make linux-alsa
Jackで使う場合は、make linux-jack で。僕はこちらは試していません。
$ sudo make install $ make clean
Chuck本体はコマンドラインで使用するものですが、実際の利用には次にインストールするminiAudicleをお勧めします。
[参考]
electro-music.com :: View topic - Chuck on the Raspberry Pi?
4. miniAudicleのインストール
miniAudicle : Integrated Development Environment for ChucK
miniAudicleはGUIフロントエンドです。
比較的軽く、Chuckが使いやすくなります。
必要なライブラリ類を先にインストールします。
sudo apt-get install libqt4-dev libqscintilla2-dev
Gitから最新ソースをダウンロードしビルド&インストールします。
$ git clone https://github.com/ccrma/miniAudicle.git --recursive $ cd miniAudicle/src $ make linux-alsa $ sudo make install $ make clean
メニューの登録はMain Menu Editorを使って手動で行います。
アイコンは、~/miniAudicle/src/qt/icon/miniAudicle.png にあるものを使うと良いでしょう。
5. Csoundのインストール
Csoundもスクリプトベースの音響合成ルールです。CはC言語のCですがスクリプトがC言語ベースなのではなく、CsoundがC言語で作られているからということのようです。
Csoundは、apt-getでインストール可能ですが、自前でビルドしてみます。
Csound本体はCUIベースでGUIを持たないので、GUIフロントエンドであるScoundQtというものもあります。こちらもapt-getでインストール可能です。自前でもビルドできましたがうまく動かないようです。apt-getでインストールしたバージョンの方が多少マシでしたが、それでも安定しないようです。
現状では、コマンドライン版であるCsound本体のみを利用するのが良さそうです。
CsoundQtについてはうまく言ったら改めて紹介します。
Csoundは、他にもいろいろGUIフロントエンドがありますので、別の機会で試してみたいと思います。
Csoundの本体のビルドは紹介しておきます。
本家で紹介されている方法を踏襲します。
csound/BUILD.md at develop · csound/csound · GitHub
既にPureDataのインストールで行っていますが、インストールしていない場合は、
$ sudo nano /etc/apt/sources.list
でファイルを開き、
deb-src http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
の#を外します。
Csoundのビルドに必要なものをインストールします。
$ sudo apt-get build-dep csound
ソースのダウンロード&ビルドします。
$ cd $ mkdir csound $ cd csound $ git clone https://github.com/csound/csound.git csound $ mkdir cs6make $ cd cs6make $ cmake ../csound -DBUILD_CSOUND_AC=OFF -DCMAKE_BUILD_TYPE="Release" $ make -j6 $ sudo make install $ sudo ldconfig $ make clean
Pythonとの連携が必要な場合は、必要なライブラリ類をインストールし、設定ファイルを変更します。
$ sudo apt-get install swig python-dev $ cd $ sudo nano .bashrc
最後に次の行を追加。
export PYTHONPATH=/usr/local/lib
Ctrl+Oを押してEnter で上書き保存
Ctrl+X を押して終了
念のためリブートしておきましょう。
6. Faust
国内の状況はわかりませんが、話題の、といって良いのかもしれません。これも音響合成系系のスクリプト言語です。リアルタイム動作の他、色いろいろな言語やVSTプラグイン用のソースに書きだしたり、そのままプラグインを作ってしまったりとかなりユニークかつ高機能です。実用できともいえますね。
Faust本体は、コマンドラインアプリで、
sudo apt-get install faust
でもインストールできますが、少しバージョンが古いです。
GUIフロントエンドであるFaustWorksは、
sudo apt-get install faustworks
でインストールできます。バージョンはソースからビルドしても同じようです。
いろいろ試したろころ依存関係の都合上、どちらかを自前でビルドしたら他方も自前でビルドしたほうが良さそうですので、今回はどちらもビルドしてみます。
$ sudo apt-get build-dep faust $ git clone git://git.code.sf.net/p/faudiostream/code faudiostream-code $ cd faudiostream-code $ make $ sudo make install $ make clean
これでビルド&インストール完了です。
7. Faust-Works
FaustのGUIフロントエンドもインストールしてみましょう。
$ sudo apt-get build-dep faustworks $ git clone git://git.code.sf.net/p/faudiostream/faustworks faudiostream-faustworks $ cd faudiostream-faustworks $ make $ sudo make install $ make clean
FaustのGUIフロントエンドには、FaustLiveというものがあり、そちらの方が今はおすすめのようです。今回ビルドを試みましたがうまく行きませんでした。
8. Processing
電子アートとビジュアルデザインのためのプログラミング言語と言われていますが、拡張性もあり音響系もいろいろできるようです。Aruduino IDEの元にもなっています。
https://processing.org/
で、Linux ARMv6hf版をダウンロードしてきます。解凍してアプリ本体をダブルクリックすれば起動します。
自前でのビルドは大変そうでしたので、今回は行いませんでした。
アプリをダウンロードします。
$ wget http://download.processing.org/processing-3.0.2-linux-armv6hf.tgz
ファイルを解凍し、そのディレクトリに移動します。
$ tar zxvf processing-3.0.2-linux-armv6hf.tgz $ cd processind-3.0.2
中のprocessingをクリックすれば起動します。
メニューへの登録はMain Menu Editorを使って手動で行います。
この場所を指定します。アイコンは、~/processing-3.0.2/lib/icons/ 内のものを利用しましょう。pde-128.png で良いと思います。
利用するにあたって注意があります。
ProcessingはOpenGLを利用しますが、Raspberryは標準ではOpen GL ESです。
このためそのままでは期待通りに動作しない場合が出てきます。
OpenGLを使えるようにするには、
$ sudo raspi-config
で設定ツールを起動し、
Advanced Option -> GL Driver
と進みEnableを選択します。
設定ツールを終了するとRPi3が再起動し、OpenGLが使える状態になります。
問題があった場合は、設定ツールでGL DriveをDisableにすれば良いです。
ただし、状況によっては起動できなくなる場合あります。
その場合は、SDカードをPC、Macに挿し、boot領域(ドライブ)の中の config.txtをテキストエディタで開いて、
dtoverlay=vc4-kms-v3d
という行をコメントアウトします。
それで起動するようになりますので、設定ツールを開いてGL DriverをDisableに改めて設定し直します。
9. Arduino IDE
RPi3からArduinoが使えたら何かと便利そうなのでインストールしてみます。
$ sudo apt-get install arduino
でもインストール可能ですが、これだとバージョンが古く、新しい機種をサポートしていません。もう少し新しいバージョンをインストールしてみる。
ちょうど、linux版 arm CPU用のビルドが公開されましたのでそれをインストールします。
$ wget https://downloads.arduino.cc/arduino-nightly-linuxarm.tar.xz $ tar -xvf arduino-nightly-linuxarm.tar.xz $ cd arduino-nightly $ sudo ./install.sh
これでインストールされメインメニューにも登録されますので、メニューから起動できます
10. その他
●Audacity
WinやMacでもよく使われる波形編集ソフトです。
自前でビルドを試みましたがうまく行かなったので、
$ sudo apt-get install audacity
でインストールしました。
Jack経由で使ったほうが安定している気がします。
初回起動時、エラーが出るかもしれませんが、そのまま進みJackを使う設定に変えたら次から出ませんでした。
自前でのビルドはいずれ再チャレンジしてみます。
●Patchage
オーディオ/MIDIパッチベイです。
$ sudo apt-get install patchage
ALSAとJackの互換をたもつためのパッチベイ的なツールです。
機能としては良いのですが少し重いようです。
●JACK Keyboard
jack-keyboard - A virtual keyboard for JACK MIDI
$ sudo apt-get install jack-keyboard
Jack用の仮想MIDIキーボードです。
●vkeybd
$ sudo apt-get install vkeybd
汎用の仮想MIDIキーボードです。
●Jamin
$ sudo apt-get install jamin
マスタリング用のツールですがオーディオメーター的にも使えそうです。
●Scilab
$sudo apt-get install scilab
Scilabです。数値計算システムと言われますが、デジタル信号処理等のシミュレーションをするのに適しています。RPiで使わなくても良いと思いますが...
●midisnoop
GitHub - surfacepatterns/midisnoop: Automatically exported from code.google.com/p/midisnoop
$ sudo apt-get install midisnoop
MIDIモニターです。
こういうツールはあると便利ですね。
まだまた面白そうなものはありますが、長くなりましたので今回はこのくらいで。
かなりトライ&エラーしましたが、うまくいかないものも有りました。しかし、当初の目的であるSatellite CCRMAくらいの環境にはなったのではないかと思います。
スクリプト系のツールはかなり使えそうな気がしました。それらは外部との連携も柔軟にできるようになっているものも多く、IoT的な使い方までできそうです。次はそのあたりの実用できなところも試したいところです。
また記事には入れませんでしたがソフトウェアシンセなども試してみましたが、面白そうなものも結構有り、また充分動作できました。RPi3なりの音楽制作系環境というのも実用性が感じられます。このあたりアプリも試してみたいですね。
コイデマサヒロ
ディレクター、プロデューサー、ギタリスト。mimiCopyをはじめ弊社リリースの全てソフトウェア製品の企画を担当。ネイティブアプリ開発がメインでOS問わず対応可。dubバンドのギタリストとしても活動中。