Begin Again

Begin Again

technology

Open sourceでDTMしたい!-Ardour source code build編-

f:id:Orihasam810:20200815173102p:plain
画像引用元:https://ardour.org/
Ubuntu用のDAWとしてArdourを使うことにした。
しかし、Ardour 6は基本的には有料ソフトウェアである。サブスクプランで月額$1から、買い切りプランで$45と比較的安価ではあるものの使用感の分からないソフトウェアにお金を払えるほど裕福ではないため、自分でソースコードからビルドすることで無料でArdourを使うことにした。
なお、有料でインストールしたい場合は以下のページからインストーラがダウンロードできる。(ビルドする必要がないためPCオタク以外はこちらを選択したほうが無難)
ここからは貧乏なPCオタク達のためにUbuntuでのArdourのビルド&アプリアイコンの作成について説明する。(ソースコードからビルドしただけではアプリ起動用のショートカットアイコンが存在しない。詳細は後述。)

1. Ardourのソースコードをgitリポジトリからクローンする。

Ardourソースコードを$ADとして配置するために、cd $ADを行ってからgit cloneする。

$ cd $AD
$ git clone git://git.ardour.org/ardour/ardour.git

ターミナルで上記コードを実行することでHomeディレクトリ上にソースコードがクローンされる。(任意のディレクトリに移動してそこにクローンすることも可能。)

2. ビルドに必要なライブラリをインストールする。
$ sudo apt install libboost-all-dev libasound2-dev libpulse-dev libglibmm-2.4-dev libsndfile1-dev libcurl4-openssl-dev libarchive-dev liblo-dev libtag1-dev vamp-plugin-sdk librubberband-dev libjack-jackd2-dev libfftw3-dev libaubio-dev libxml2-dev libudev-dev libusb-1.0-0-dev libdbus-1-dev libwebsockets-dev libreadline-dev libcppunit-dev -y

上記コマンドには必須でないライブラリもいくつか入っているが、使う可能性が0出ないものは全て記載した。 wiiリモコン用のライブラリは明らかに不要なのでインストールしていない。
次にビルド用の環境が整っているか確認する。

$ ./waf configure

おそらくNot foundやNoという項目が散見されるであろうが、最後に'configure' finished successfullyと表示されれば問題なくビルドできる。

3. ビルドする。

以下のコマンドを打ち込み、コーヒーでも飲みながらしばらく待てばビルドが完了する。

$ ./waf
3. Ardourを起動する。

以下のコマンドを入力することでArdourが起動する。

$ cd gtk2_ardour
$ ./ardev

これでArdourは起動するようになったが、この状態では2つの問題がある。
1つ目は、冒頭でも触れたアプリケーション起動用ショートカットが存在しないという問題、2つ目は、Ardourでオーディオ用に使用できるメモリが制限されているという問題である。

アプリランチャーアイコン問題

まず1つ目の問題について、今のままではArdourを起動するために毎回ターミナルからコマンドを打ち込まなければならない。
せっかくリッチなUIを備えたUbuntuを使用しているのに起動にコマンドが必要なのは面倒臭い。そこで、上記コマンドが実行しているardevファイルを実行するデスクトップショートカットを作成することでこの問題を解決する。
また、単にデスクトップショートカットを作成しただけでは、アイコンをドックに配置できないため、デスクトップではなく、アプリケーションディレクトリにショートカットを作成する。
まず、以下のコマンドを入力する。

$ sudo gedit /usr/share/applications/Ardour.desktop

このコマンドを打ち込み、管理者権限パスワードを入力するとテキストエディタが開く。テキストエディタに以下のテキストを書き込む。Exec欄は各自のソースコードをクローンしたディレクトリによって多少変わるため、ardevファイルのあるディレクトリを指定する。

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/home/username/ardour/gtk2_ardour/ardev
Name=Ardour
Comment=Ardour
Icon=/usr/local/share/ardour6/icons/ardour-app-icon_osx.png

テキストファイルを保存して閉じるとアプリケーション一覧にArdourが表示されているはずである。

f:id:Orihasam810:20200816192618p:plain
※画像内の著作物、商標等の知的財産の権利は、各権利者に属します。

メモリ制限問題

2つ目の問題について、せっかくPCにメモリを32GBも積んでいるのにメモリ使用量が制限されていては意味がない。(実際私が32GBものメモリを使用する作業を行う可能性は低いが、これは気持ちの問題である笑)
メモリ制限に関しては、ターミナルで以下のコマンドを打ち込むことでメモリ制限がなくなる。

sudo gedit /etc/security/limits.conf
@audio - memlock unlimited
sudo adduser $USER audio
reboot

メモリ制限の量を変更したい場合は、@audio - memlock unlimitedのunlimitedを好きな値に変更するだけである。

以上で、Ardourのソースコードビルドは完了である。
Linuxの場合は比較的簡単な作業のみでソースコードビルドができた。(WindowsMacではより複雑な作業が必要らしい。)
LinuxでのDTM情報は日本では乏しいため、この記事がLinux DTM界隈の盛り上がりに貢献できることを祈りたい。
Ardourの詳細な使い方等についても後々書いていこうと思う。

Open sourceでDTMしたい!-Ubntu用DAW探し編-

f:id:Orihasam810:20200815173436p:plain
画像引用元:https://opensource.org/
機械学習GPUで高速化するために、MacからUbuntuに乗り換えた。
それまで使っていたMac bookよりもマシンスペックが向上したため、どうせならUbuntuマシンでDTMもしたい。
そこで、Ubuntuで利用できるDAWを調べてみた。

LMMS (Linux MultiMedia Studio)

f:id:Orihasam810:20200816000029p:plain
画像引用元:https://lmms.io/
LMMS developersにより開発されているオープンソースDAW
任天堂 ® ファミコンゲームボーイRoland ® TB-303等の16種類のシンセサイザーを内蔵している。

Rosegarden

f:id:Orihasam810:20200815235059p:plain
画像引用元:https://rosegardenmusic.com/
Chris Cannam, Richard Bown, Guillaume Laurent, et al.らにより開発されているオープンソースDAW
MIDIシーケンスに特化している。

Qtractor

f:id:Orihasam810:20200816000135p:plain
画像引用元:http://qtractor.org/qtractor-index.html#Intro
Rui Nuno Capelaらにより開発されているオープンソースDAW
個人、ホームスタジオでの利用のための必要最低限の機能がある。

Bitwig Studio

f:id:Orihasam810:20200815234800p:plain
画像引用元:https://www.bitwig.com/en/home.html
Bitwig GmbHにより開発されている有料(無料の試用版有り)DAW
Ableton liveの開発者らによって開発された。クリップランチャーやハイブリッドトラック等の機能を備えている。

●BITWIG BITWIG STUDIO 16-TRACK【パッケージ版】

価格:17,270円
(2020/8/16 15:51時点)

Ardour

f:id:Orihasam810:20200815173102p:plain
画像引用元:https://ardour.org/
David Robillard, Robin Gareus, Nick Mainsbridgeらにより開発されているオープンソースDAW
無制限のマルチトラックレコーディングや、ビデオの取り込みと取り込んだビデオからのオーディオトラックの分離等の機能がある。

オープンソースのOSを使っているのでDAWオープンソースを使いたい!(無料が良い笑)&UIがかっこいい!というしょうもない理由からArdourを使用することにした。
今回初回したDAWフリーソフトも多いため、気になったものはインストールして試してみることをおすすめする。 Ardourは有料ソフトなのだが、Open sourceプロジェクトのためソースコードが無料で公開されているため、ソースコードから自分でビルドすることでArdourを無料で使用することができる。(ソースコードからビルドして利用することは公式に開発元が認めている。但し、ビルドについて一切のサポートは受けられない。)
ソースコードのビルドには若干の作業が必要になってくるため、次回はArdourのビルドについて解説しようと思う。

HEROKU with OpenCV-Python

HEROKUでPythonバックエンド(Flask)のアプリを動かそうとした際のエラー備忘録。

HEROKUがPythonを認識しない(requirements.txt)

f:id:Orihasam810:20200816061636p:plain
画像引用元:https://jp.heroku.com/home
HEROKUはrequirements.txtファイルによってPythonプログラムであることを認識する。 そこでrequirements.txtを作成し、Pythonプログラムのあるディレクトリに保存する。 requirements.txtの作成はpip freezを使うのが楽。 以下のコマンドを打ち込む。

pip freeze > requirements.txt

これで自分の環境にインストールされているライブラリが記述されたファイルが現在のディレクトリに作成される。
venvで仮想環境をアクティベートしている状態だと、仮想環境にインストールされているライブラリのみが書き出されるため、バージョン管理のためvenv環境で行う方が良い。

HEROKUが起動するPythonファイルを認識するためのProcfileも作成する必要がある。
こちらは拡張子が無いので、テキストエディタで作成する際に気をつける必要がある。
内容は以下の通り。

web: gunicorn Pythonファイル名:app

WSGIにgunicornを使用しているため、requirements.txtを作成する前に

pip install gunicorn

でgunicornをインストールしておく。

OpenCV関連エラー(libSM.so.6)

f:id:Orihasam810:20200816061945p:plain
画像引用元:https://opencv.org/
openCVをインポートしているプログラムをデプロイしたところ、

ImportError: libSM.so.6: cannot open shared object file: No such file or directory

というエラーがでた。 libSM.so.6がHEROKUには無いためでたエラーのようだ。
そこで、ターミナルに以下のコマンドを入力してbuildpackを追加する。

$ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt

Aptfileをテキストエディタで作成し、requirements.txtと同じディレクトリに保存する。拡張子は無いので注意。
Aptfileの内容は以下の通り。

libsm6
libxrender1
libfontconfig1
libice6

これで準備は完了したのでデプロイする。

$ git add .
$ git commit -m "add_Aptfile"
$ git push heroku master

これで無事openCVがHEROKUで使えるようになる。

WEB技術全般について体系的に学習するならこの一冊がおすすめ

プロになるためのWeb技術入門 なぜ,あなたはWebシステムを開発できないのか [ 小森裕介 ]

価格:2,508円
(2020/8/16 06:25時点)
感想(10件)

TensorFlow-2.0.0 GPU環境の構築 on Ubuntu

はじめに

f:id:Orihasam810:20200815153727p:plain
画像引用元:https://www.tensorflow.org/

Tensorflow 2.0.0がリリースされkerasと統合されるなど、ますます便利になった。
そこで、Ubuntu18.04LTSにGPU版のTensorflow 2.0.0を導入するために必要な、GPUドライバのインストールからCUDA、cuDNNのインストール、Tensorflow 2.0.0-gpuのインストールまでの手順を書いていく。
同様の記事をQiitaにも投稿していたが、Qiitaを退会したためこちらに書いておく。

環境

OS:Ubuntu 18.04 LTS GPU:nvidia Geforce GTX1660

GPUドライバのインストール

・パッケージ情報を更新する
パッケージのリポジトリから、パッケージ名、バージョン、依存関係を取得する。

$ sudo apt update

・パッケージの更新
念の為、パッケージを更新しておく。

$ sudo apt upgrade

・利用可能なドライバ一覧を表示

$ ubuntu-drivers devices

GTX1660では以下のような結果が表示された。

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002184sv00001462sd00008D91bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-435 - distro non-free recommended
driver   : nvidia-driver-430 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

推奨ドライバであるnvidia-driver-435をインストールする。

・ドライバのインストール

$ sudo apt install nvidia-driver-435

・再起動

$ sudo reboot

再起動することでインストールしたドライバを有効化させる。

CUDAのインストール

・CUDA Toolkitのダウンロード
Tensorflow2.0.0が対応しているCUDA-10.0をインストールする。
下のnvidiaのページからCUDA Toolkit 10.0の.runファイルをダウンロードする。

developer.nvidia.com

f:id:Orihasam810:20200815154203p:plain
出典:https://developer.nvidia.com/cuda-10.0-download-archive
・CUDA Toolkitのインストール
CUDAをインストールするには、Base Installerをダウンロードして、インストールする必要がある。
今回はPatchもあるため、Base InstallerとPatchをダウンロードた後、Base InstallerとPatchを保存したディレクトリに移動する。

$ cd 保存したディレクトリ

まずBase Installerを実行する。

/保存したディレクトリ$ sudo sh cuda_10.0.130_410.48_linux.run

Dキーを押して先に進み、質問に答える。今回はドライバは先にインストールしているため、ドライバのインストールはnoにする。CUDAのサンプルが必要であれば最後の質問をyesにする。

-----------------
Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]: /usr/local/cuda-10.0

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-10.0
Samples:  Not Selected

次にPatchをインストールする。

/¥保存したディレクトリ$ sudo sh cuda_10.0.130.1_linux.run

こちらも先程と同様、Dキーを押して先に進み、質問に答える。

Do you accept the previously read EULA?
accept/decline/quit: accept    

Enter CUDA Toolkit installation directory
 [ default is /usr/local/cuda-10.0 ]: /usr/local/cuda-10.0

Installation complete!
Installation directory: /usr/local/cuda-10.0

・CUDAのPATHを通す
以下のコマンドを入力する。

$ echo -e "\n## CUDA and cuDNN PATHS" >> ~/.bashrc
$ echo "export PATH=/usr/local/cuda-10.0/bin:${PATH}" >> ~/.bashrc
$ echo "export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH}" >> ~/.bashrc
$ source ~/.bashrc

・CUDAインストールの確認
以下のコマンドのCUDAが正しくインストールされたか確認する。

$ nvcc -V

結果

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

CUDA10.0がインストールできていることが確認できる。

cuDNNのインストール

・cuDNNのインストール
Tensorflow2.0.0が対応しているcuDNN7.6をインストールする。
下のnvidiaのページからcuDNN7.6の.debファイルをダウンロードする。なおダウンロードには会員登録が必要。

developer.nvidia.com

f:id:Orihasam810:20200815154448p:plain
出典:https://developer.nvidia.com/rdp/cudnn-archive
cuDNN Runtime Library for Ubuntu18.04 (Deb)と、cuDNN Developer Library for Ubuntu18.04 (Deb)の両方をダウンロードした後、保存したディレクトリに移動する。

$ cd 保存したディレクトリ

まずランタイムライブラリをインストールする。

/保存したディレクトリ$ sudo dpkg -i libcudnn7_7.6.0.64-1+cuda10.0_amd64.deb

次にディベロッパーライブラリをインストールする。

/保存したディレクトリ$ sudo dpkg -i libcudnn7-dev_7.6.0.64-1+cuda10.0_amd64.deb

・cuDNNインストールの確認
次のコマンドを入力する

$ cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

結果

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

上のように表示されればcuDNNは正常にインストールされている。

Tensorflowのインストール

Tensorflowをインストールするためにpipを導入する。最新版のpipがすでにインストールされている環境の場合、curlとpipのインストールは飛ばしてよい。 curlコマンドのインストール
URLを指定してWEB上のファイルをインストールできるcurlコマンドをインストールする。

$ sudo apt install curl

・pipのインストール
pipがインストールされていない場合、Pythonのパッケージ管理ツールpipをインストールする。Ubuntu18.04LTSを最小構成でインストールしていた場合は、Python2系はインストールされていないためpip3を導入する必要がない。Tensorflow2.0.0をインストールするためにはpipが最新のバージョンである必要があるのだが、Python2の環境がPython3の環境と共存していると、aptでインストールしたpip3をpip3でアップデートした後にエラーが起こるため、Python3のみの環境でTensorflowのインストールをしたほうが手軽。
以下のコマンドでpipをインストールするためのPythonコードをダウンロードし、プログラムを実行する。

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python3 get-pip.py

これでpipのインストールは完了。
・pipのバージョン確認
下のコマンドでpipのバージョンを確認できる。

$ pip -V
pip 19.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)

pipのバージョンが19.0未満の場合tensorflow-2.0.0をpip installすることができないためアップグレードする。

$ pip install --upgrade pip

・Tensorflow2.0.0-GPUのインストール
Tensorflow2.0.0-GPUをインストールする。
以下のコマンドを入力。

$ pip install tensorflow-gpu==2.0.0

以上でtensorflow-gpu==2.0.0のインストールが完了する。

お疲れ様でした!!
楽しいTensorflow2.0.0-GPU lifeを送ってください!