2017/05/27

Fedora26でFaustをコンパイル

Faust 2.0.a72とFaustLive 2.45をインストールします。

Faustのインストール

必要なライブラリをインストールします。私の環境では以前SuperColliderをインストールした時にいろいろいれたのでllvm-develとopenssl-develを入れたらコンパイルできました。

sudo dnf install llvm-devel openssl-devel

git cloneします。ここではfaust2ブランチをインストールします。faust.gitのurlはFaustのGitHubリポジトリから取得して置き換えてください。

git clone -b faust2 faust.git
cd faust

masterブランチの場合はmake installまで飛ばしてください。faust2ブランチをmakeするとエラーがでるので以下のファイルを修正します。コードは修正後のものです。

  • dsp_factory.hh
  • dsp_aux.hh
  • dsp_aux.cpp
  • remote_dsp_aux.cpp

dsp_factory.hhにdsp.hをインクルードして、40行目あたりのforward declarationを消します。

#include "../architecture/faust/dsp/dsp.h"

...

// struct dsp_memory_manager;
// class dsp_factory;
// class dsp;

dsp_aux.hhからfaust/dsp/dsp.hのインクルードを消してdsp_factory.hhをインクルードします。

#include "export.hh"
#include "exception.hh"
#include "dsp_factory.hh"

dsp_aux.cppからdsp_factory.hhのインクルードを消します。

// #include "dsp_factory.hh"

remote_dsp_aux.cppの634行目、jack_net_master_openの3つめの引数に適当なconst char*を与えます。jack 1.9.10で確認しました。

if ((fNetJack = jack_net_master_open(DEFAULT_MULTICAST_IP, atoi(port), "some_name", &request, &result))) {

makeします。

make all httpd

デフォルトでは/usr/local以下にインストールされます。そのままではパスが通らなかったのですが/usr以下にインストールするとうまくいきました。

sudo make install PREFIX=/usr

libHTTPDFaustがインストールされたのでremoteをmakeしてインストールします。

make remote
sudo make install PREFIX=/usr

もしインストール先を間違えた場合は以下でアンインストールできます。

sudo make uninstall

FaustLiveのインストール

必要なライブラリをインストールします。

sudo dnf install libcurl libcurl-devel liblo liblo-devel qrencode-libs qrencode-devel

ソースコードをダウンロードして解凍します。今回はSourceForgeのFaustのページからFaustLive-sources-2.45.tgzをダウンロードしました。

tar -xf FaustLive-sources-2.45.tgz
cd FaustLive-2.45

makeでこけるのでqmakeのパスを通します。まずは場所を調べます。

find /usr -name 'qmake'

私の環境では/usr/lib64/qt5/bin/qmakeにインストールされていました。Build/Linux/Makefileを開いてqmの値を修正します。

### Defining some variables
qm := /usr/lib64/qt5/bin/qmake
##qm := $(shell which qmake)
##qm := $(if $(qm4),$(qm4),qmake)

コンパイルが通るように以下のソースコードを修正します。

  • JA_audioManager.cpp
  • AudioManager.h
  • JA_audioFader.cpp
  • FLWindow.cpp

JA_audioManager.cppの関数名を修正します。

fCurrentAudio->defaultConnections();

...

return fCurrentAudio->getBufferSize();

...

return fCurrentAudio->getSampleRate();

AudioManager.hを開いてAudioManagerクラスにaudioではなくjackaudioを継承させます。

class AudioManager : public QObject, public jackaudio {

JA_audioFader.cppで使われている2個所のsave_connections()をsaveConnections()に変更します。

MainStructure/FLWindow.cppの関数名を修正します。

void FLWindow::update_AudioParams()
{
    fSettings->setValue("SampleRate", fAudioManager->getSampleRate());
    fSettings->setValue("BufferSize", fAudioManager->getBufferSize());
}

makeしてインストールします。

make NETJACK=1 REMOTE=1
sudo make install

エディタ

faust/syntax-highlightingにシンタックスハイライトに対応しているエディタと設定方法の一覧があります。

AtomのプラグインはFaustと同じGRAMEのアカウントで配布されています。Atom内蔵のプラグインインストーラから検索してインストールできます。

Vimには紹介されているものよりも高機能なvim-faustがあります。

音を出す

FaustLive Tutorialが短くまとまっています。qjackctlが必要となります。

sudo dnf install qjackctl

qjackctlはConnectボタンでルーティング画面が開き、Startボタンでクライアントが表示されるようになります。