2020年4月12日日曜日

古いタンスの鍵の開け方


20年近く鍵が締まったままの我が家の古いタンス。
引き継いだ当初から鍵が見当たらず困っていたのですが、今日とうとう鍵を開けることができました。





花の形をした金属の部分は、引き出しが開かないように止めているカンヌキを上げ下げするための取っ手です。
鍵かかかっている状態ではこの取っ手が動きません。
取っ手は金属のプレート=カンヌキが爪のように鍵穴内部の向かって左側の方に引っかかって動かなくなっているだけなので、細いL字型の金具を突っ込んで、その引っ掛かりを解除してやれば取っ手が動き、引き出しも開きます。

参考URL:http://yasudaya-kagu.com/archives/15899

2020年3月29日日曜日

Linux 低遅延 low latency DTM 環境構築

はじめに

これはLinuxでの低遅延DTM環境構築のためのメモです。
PCにLinuxをインストールしてDTM環境を構築しようとしたものの何がなんだか訳が分からず行き詰まってしまっている方のための一助となれば幸いです。

大まかな流れはArchWiki英語ページの Professional audio の内容に沿っており、とりあえずはQuickscan Jack スクリプトのエラー出力をひとつひとつ試行錯誤しながらクリアしていくという形で行われました。
そして最終的にJACK Audio Connection Kit又はqjackctl及びDTMの立ち上げ時のエラー出力を潰していくという形で行われました。

PC環境

CPU:core i3 550
メモリ:8GB
オーディオデバイス:Intel 3400 Series
Distr:Arch Linux
DE:LXDE


1.pro-audioパッケージ(jack2を選ぶ)をインストールする。

2.AURからrealtime kernel patchsetをインストールする。
linux-rtまたはlinux-rt-ltsをインストール
$ yay -S linux-rt

3.ユーザーを realtime グループに追加する。
$ sudo gpasswd -a ユーザー名 realtime
ついでに audio グループにも追加
$ sudo gpasswd -a ユーザー名 audio

4.CPU frequency scaling の governor を performance に設定する。
cpupowerをインストール
$ sudo pacman -S cpupower
/etc/default/cpupower を開き、内容を変更(行頭の#をコメントアウト)
governor='performance'
cpupower.serviceを有効にして起動時にサービスを実行させる。
$ sudo systemctl enable cpupower.service

5.threadirqsカーネルパラメータを追加する。*realtime kernel patchsetをインストールすると自動的に設定されるようです。でも見てみたらなかったので念の為。
/etc/default/grubを開き、
GRUB_CMDLINE_LINUX_DEFAULT="threadirqs"
を追加し、grub.cfg ファイルを生成
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

6.noatime をファイルシステムのマウントオプションに追加する
/etc/fstabのoptionsの列に noatime を追加

7.RTC割り込み周波数の増加。
シェルスクリプト作成 /usr/bin/max2048.sh
----------------------------------------------------------------
#!/bin/sh
exec /usr/bin/echo 2048 > /sys/class/rtc/rtc0/max_user_freq
exec /usr/bin/echo 2048 > /proc/sys/dev/hpet/max-user-freq

----------------------------------------------------------------
systemdファイル作成 /etc/systemd/system/max2048.service
----------------------------------------------------------------
[Unit]
Description=max2048
[Service]
ExecStart=/usr/bin/max2048.sh
[Install]
WantedBy=multi-user.target

----------------------------------------------------------------
2つのファイルに実行権限を与え、max2048.serviceを有効にして起動時にサービスを実行させる。
$ sudo systemctl enable max2048.service

8.swappinessの値を10に減らす
ファイル作成  /etc/sysctl.d/90-swappiness.conf
----------------------------------------------------------------
vm.swappiness = 10
----------------------------------------------------------------

9.ファイルの最大監視数を増やす
ファイル作成 /etc/sysctl.d/90-max_user_watches.conf
----------------------------------------------------------------fs.inotify.max_user_watches = 600000
----------------------------------------------------------------

10.再起動する。 

Quickscan JACK scriptによる確認

$ git clone git://github.com/raboof/realtimeconfigquickscan.git
$ cd realtimeconfigquickscan
$ perl ./realTimeConfigQuickScan.pl




おめでとうございます!すべての項目でgoodが表示されました。ちょっと快感です。飽きるまでなんどもスクリプトを実行してみてください笑。

JACK Audio Connection Kitの設定

ホームディレクトリにjack2サウンドサーバーを呼び出すためのシェルスクリプトを作成し、実行権限を与える。
startjack.sh
---------------------------------------------------------------
#!/bin/bash
jack_control ds alsa # alsaドライバを指定
jack_control dps device hw:MID # デバイスを指定
jack_control dps capture hw:MID # 入力デバイス
jack_control dps playback hw:MID # 出力デバイス
jack_control dps rate 44100 # サンプルレート
jack_control dps nperiods 2 # ピリオド/バッファー
jack_control dps period 512 # フレーム/ピリオド
jack_control dps midi-driver seq # MIDIドライバー
jack_control dps duplex true # オーディオ入出力
jack_control eps driver alsa # ?
jack_control eps realtime True # リアルタイムモード
jack_control start # jackdサーバースタート
qjackctl
jack_control stop # jackdサーバーストップ
jack_control exit # jackdbusデーモン終了
---------------------------------------------------------------

●M-AudioのMidiキーボードを使用するのでファームウェアパッケージmidisport-firmwareを追加インストールしました。
●"MID"は当方のデバイス名なのでそれぞれのPCやオーディオインターフェイス(nperiodsの値を3に変更)に応じて変更してください。
●肝は最初にすべての設定のパラメーターを呼び出してから最後にjack_control startでjackdサーバー(jackdbus)を立ち上げているところです。
●最初にjackサーバーを立ち上げてしまうとその後の設定がサーバーに反映されないようです。
●つづいてqjackctlを立ち上げていますがこれはエラーの確認用のGUIとして立ち上げているだけで、設定に問題がなければqjackctlを飛ばしてardourなどのDTMソフトを立ち上げても問題ありません。
●そして終了時にjack_control stopでサウンドサーバーを停止し、jack_control exitでjackdbusデーモンを完全に停止します。
●平常時にalsaを使用しないのであれば上記のスクリプトを起動時に読み込み、jackdサーバーを停止させない方法もアリかと思いますが、DTMなどで入出力のデバイスを頻繁に変更する場合は、その都度デバイスに合わせたスクリプトを読み込む必要があります。
●なお、alsa出力のみ対応のMIDIデバイスを使用する際はa2jmidid -eを経由するといいようですが当方ではすべてJackdで対応できているので使用しておりません。
●このセッティングでレイテンシーは23.2m/sec、いまのところとても安定しています。


祝!エラー表示がなくなりました。

補足

4月1日
●実際にOSのインストールから始めてDTM環境構築をゼロからおさらいしました。それにより若干記事に修正が入りました。
●以前はaudioグループのmemorylockの設定で/etc/security/limits.confの編集が必要でしたがrealtimeグループに入ることでそれも必要なくなりました。ただしpro-audioパッケージ内のrealtime-privilegesのインストールが必須のようです。
●ArchWiki日本語ページのプロオーディオは更新が滞っているようなので英語ページのほうが間違いがないと思います。