USB2.0のハブを購入 Ubuntuでサウンドデバイスを繋ぐテストほか (U2H-SS4BF1BK)

USB2.0のポートを増やそうと、USBハブを購入しました。
買ったのは U2H-SS4BF1BK です。

その他購入品
ついでにその他、あれこれ購入。

キーボード他を繋いで使用中

サウンドデバイスをタコ足配線して使ってみるテスト。
キーボードとペンタブレットを繋いだ状態の通常使用(?)ではまったく問題ありません。
さすがにサウンドデバイスを繋いでマイクで通話した時は音にノイズが入りました。具体的には、声は聞こえるけれどノイズが同じくらい乗って、実用は厳しいくらい。
ただし、ヘッドホンで音楽を聴くだけならば、気がつくような遅延もノイズもありませんでした。
また、当然ながら Ubuntu 12.04およびUbuntu14.04 で問題なく使用できました。

今回はバスパワーで取り回しのしやすい製品としてこれを選びました。
ACアダプタ付きの外部電源供給可能な製品は、これより少し高いようだというのも理由のひとつです。

USBのLANアダプタを購入 (UE100TX-G3)


特にすぐ必要というわけではないのですが、USB接続のLANアダプタを購入しました。
購入したのは UE100TX-G3 です。

UE100TX-G3 動作確認の様子

どこかで読んだ「原因の切り分けなどに便利だからLinux使いは一台持っておくべき」という助言に従い、以前に一度おなじものを買って持っていたのですが、大学卒業の際、後輩にあげてしまって、それから今まで代わりを買っていませんでした。
そういった事情ですので、
・安い
・あまり早くなくても良い
・素直に認識してくれること
がこの製品を選んだ理由になります。
この製品はUSB2.0の100base-Tなので遅いということはなく、普通に使うには十分だと思います。
また、WindowsとMacで挿してすぐ使えるということは、Linuxでも標準的なドライバで動く可能性が高いと考えられます。(そもそも以前、同じ製品を持っていたので、すでに動作確認済み。)

もちろん、(改めて) Ubuntu12.04 での動作も確認。
設定不要で問題なくインターネット接続することができました。
(なんとなく、USB3.0ポートに差してみましたが、当然問題ありません。)

どうやらAmazonにはもう少し安い製品も存在するようです…。
でも最初の一台は、秋葉原で一度だけ見かけた値段の700円で買いました。

Ubuntu 64bit環境で32bit Wineをビルドする (Ubuntu14.04 and 12.04)

Ubuntu 64bit 環境で、 32bit Wineをビルドする手順です。
以前32bit Ubuntu環境でのWineビルド手順について書いた際に残した課題でした。

Ubuntu 12.04 上の Wine1.7.11 および、Ubuntu 14.04 上の Wine1.7.18 にて、ビルド成功を確認しています。

ビルドした32bit Wineのwinecfg

Ubuntu 64bit環境でのWineビルドは後回しにしていたのですが、ktmizugaki様の日記でchrootの手法によるWineのビルドにあっさり成功しているのを見た後で、lxcコンテナ版をやってみたところあっさり上手く行きました。
パッケージ版のWineは競合するのではないかと思っていたのですが、依存ライブラリを入れておくためにあえてインストールしておくというのも、たしかに理にかなっていると思いました。
閑話休題。

Wineの公式Wikiには64bit Wineをビルドする手順が3種類あり、(なぜか)3つもページが存在します。(そして1ページにつき1手順、という書き方ではない。)
しかし、2014/01時点で、Wikiに書かれているLXCを使った方法は、私の環境では上手く行きません。(原因は大したことではないのですが。2014/03/22追記。Wikiは修正されました。)

私が32bit Wineをビルドした際、上手く行った手順は以下の通りです。

LXCコンテナ(仮想マシン)の作成とログイン

64bit UbuntuでWineをビルドする方法は3種類あるようですが、今回は、LXCで32bit仮想マシン環境を作成し、そこで32bitビルドを行う方法を使います。

まず、LXCにて32bit Ubuntu仮想マシンを、ホームディレクトリを共有した状態で作成します。

LXC導入(18.04ではlxc-templateを別途インストール指定が必要。)
sudo apt install lxc lxc-template -y

作成と起動のコマンドは以下。
sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386
sudo lxc-start -n my32bitbox

なお、LXCコンテナの初回作成時には、パッケージのダウンロードなどで時間がかかります。
また、コンテナ起動時に要求されるユーザ名とパスワードですが、デフォルトではユーザ名・パスワード共に 'Ubuntu' になっているはずですが、私の環境ではこれがホスト側のユーザ名とパスワードになっていました。

LXCコンテナのターミナルへ入る
sudo lxc-attach -n my32bitbox

なお、作業後にLXCコンテナを閉じる際には、仮想環境側でシャットダウンコマンドを実行します。
sudo shutdown -h now

LXC内でのビルド環境の構築

LXCコンテナに内のUbuntuに必要なアプリケーションを導入して、ビルド環境を構築します。

add-apt-repositoryの導入

LXCゲスト環境そのままでは「 add-apt-repositoryが無い 」旨のエラーが出てリポジトリを追加できないので、
sudo apt-get install python-software-properties
にて、 add-apt-repository コマンドを導入。
(software-properties-common パッケージではない。)

2014/05/13追記:  Ubuntu 14.04では software-properties-common パッケージが必要になって(戻って)いました。
2018/05/13追記: Ubuntu18.04では不要でした。

ccacheの導入

コンパイル時に使用する情報をキャッシュすることで、再ビルドを高速化します。
不具合報告をするなど、2度以上コンパイルすることがありそうならば導入しておくとよいです。
使用するなら、ccacheを追加で導入。
sudo apt-get install ccache -y

なお、ccacheの動作を確認するならば、ビルド中に
du -sm ~/.ccache/
すれば、サイズが増えていくことを確認することができます。


ビルドに必要な依存パッケージの導入

wine/ppaを導入することで、WINE最新版のビルドに必要な依存パッケージのリスト情報が追加されます。
sudo add-apt-repository ppa:ubuntu-wine/ppa

Ubuntu 14.04(正確には12.04より後)では、ソースパッケージがデフォルトで無効になっているため、aptの設定ファイルを書き換えて有効化する必要があります。

テキストエディタとしてviを使う場合は以下のようにします。
(斜文字の部分はUbuntuバージョンにより異なるので読み替えてください。)
sudo vi /etc/apt/sources.list.d/ubuntu-wine-ppa-saucy.list

具体的な書き換え内容としては、上記テキストファイル内の

   deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
   # deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main

2行目の先頭から#を外します。
この後で、sudo apt-get update からの作業を行えば、build-dep による依存パッケージの導入に成功するはずです。


(詳しく知りたい場合、32bit環境でのWineビルド記事を参照してください。)


変更後、パッケージリストを更新し、依存パッケージの追加を行います。
sudo apt-get update
sudo apt-get build-dep wine1.7 -y

Gitはあらかじめインストールしておきます。
sudo apt-get install git -y

GitリポジトリからWINE最新版ソースを取得します。
git clone git://source.winehq.org/git/wine.git ~/wine-git

ビルド

WINE 32bit版をビルドするためのディレクトリを作成します。
mkdir ~/wine32-tools

作業ディレクトリに移動して、WINEソースのconfigureを実行します。
cd ~/wine32-tools
~/wine-git/configure

ccacheを使用する場合は、この手順でconfigureの前にオプションとして追記します。
CC="ccache gcc" ~/wine-git/configure

Makefileなどが展開されるので、makeします。
並列化数はビルド環境のCPU数と同程度にしておきます。
make -j4

コンパイルの最後に
"Wine build complete."
が出れば成功です。

32bit Wineの起動

Wineは実行時に「ボトル」(.wineディレクトリのこと。Windowsのc:\に相当する)を必要とし、起動時にこのディレクトリが存在しなければ自動生成します。
64bit環境で既にWineを利用している場合、ボトルは64bit版がすでに生成されていると思われます。
このままでは32bit Wineを使用することができません。
既存のボトルを削除するのが手軽な方法ではありますが、既存のアプリケーションや設定を削除したくない場合もあると思いますので、今回はWINEPREFIXを設定し、テスト用の32bit版Wineディレクトリを作ることにします。

ホストのターミナルで、コンパイル済みWineの置いてあるディレクトリに移動します。
cd ~/wine32-tools/

環境変数WINEPREFIXで、
パッケージのWineバイナリではなく、ビルドしたWineバイナリ(./wine)をパスで指定します。
WINEPREFIX=~/wine32  ./wine  winecfg

初回は起動に少し時間がかかり、ボトルを生成する旨のメッセージが表示されます。
問題なくwinecfgが起動すれば、32bit Wineのビルドに成功しています。

Ubuntu 12.04 で音楽制作を始める ( JACKサウンドサーバを動かすまでの手順)

そろそろ音楽制作を始める決心がついたので、作曲初心者がUbuntu環境でDTMを始める方法を調べ始めました。

RoseGardenとJACK(qjackctl)

最初の課題は、最低限の作曲環境を構築すること。
これを、「打ち込むと、音が出る」状態と見定めました。
ようは「キーボードとマウスで、音が出せるようになれば、あとはなんとかなる」という方針です。

DAWにはRosegardenを採用

Rosegarden に決めました。

参考は
Ubuntu Weekly Recipe 第176回 Rosegardenで作曲する
後半の手順はほぼこちらの記事のままだったのですが、それ以前に必要となるJACKが起動しなかったので、独自に手を打ちました。


JACK (JACK Audio Connection Kit)から音を出す

Rosegarden に限らず、Linux環境でDAWソフト(MIDIシーケンサー)からMIDIの音を出すのには、JACK サウンドサーバが必要となります。

デフォルトのUbuntu環境では、下記のいくつかの設定を行わないと、JACKを起動することができません。


qjackctl

JACKのD-Busエラーへの対処

D-Busエラーへの対処法は
Ubuntuフォーラム「QJackCtlの設定エラー」
に記載されていたのでそちらを設定。
qjackctlの設定項目で、D-Busのチェックボックスを外すだけなので、とてもお手軽でした。


JACK のD-Busエラー

PulseAudioが自動起動・自動再起動しない設定

デフォルト設定では、下記のコマンドでpulseaudioデーモンを停止させても、すぐ再起動してしまいます。
pulseaudio  --kill

なお、下記のコマンドで、pulseaudioのデーモンが動いていることを確認できます。
ps ax | grep pulse

PulseAudioの自動起動と自動再起動を無効にするには、設定ファイルを変更します。
sudo gedit /etc/pulse/client.conf

変更内容は以下の通り
; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio

から、
autospawn = no
daemon-binary = /usr/true

へ書き換える。


PulseAudioをアンインストールするという解決策が紹介されていることが多いですが、可能な限り削除は避けます。
Jack使用時はWebブラウザから音が出なくなるので、必要になった時にPulseAudioをすぐ起動できる状態にしておきたいからです。
特にFlashプレイヤーから音が出なくなるのが問題です。YouTubeやニコニコ動画などで参考動画を見るのに不便だからです。
(なお、ブラウザから音を出すには、PulseAudioサーバ起動後に、 ブラウザ再起動が必要です。)

PulseAudioのサーバを起動させるコマンドは
pulseaudio  --start
です。

Jackとflashを繋げる方法はあるようなのですが、RoseGardenから音を出すのには関係ありませんし、ビルド作業などが必要となるので、今回は後回しにしたいところです。
参考サイト様にjackの上でpulseaudioを起動する方法が紹介されていますが、これも検証は後回し。


参考にさせていただいたのは、主に以下のサイト様です。
JackとサウンドサーバとRoseGardenの関係
http://web1.kcn.jp/haruem/Ubuntu_audio_OS.html#suondserver

Pulseaudioを削除せずにKillする方法
http://web1.kcn.jp/haruem/Ubuntu_audio_OS.html#pulseaudio
http://d.hatena.ne.jp/namerican/20120515/1337084480


Jack(qjackctl)上にて、RoseGardenとの入出力の連結

「Output Device:」に適切なデバイスを指定することでJACKから音が出るようになりました。

JACKで使用するデバイスの選択
 私の環境では、マザーボードの標準サウンド出力の他に、USBサウンドデバイスも繋がっているため、普通より選択肢が多いです。(さらに、HDMIのサウンド出力も認識されている)

PulseAudioを止めた状態で、RhythmboxやVLCで適当な音楽ファイルを聴いてみれば、JACKから音が出るようになったかどうかがわかります。

これでJACKから音が出るようになったので、RoseGardenを起動し、qjackctlのUI上で、RoseGardenの出力とJACKを連結します。





あとはRosegardenから音を出すだけです。
その手順は参考記事さまの方法のまま。

参考は
Ubuntu Weekly Recipe 第176回 Rosegardenで作曲する
後半の手順はほぼこちらの記事のままだったのですが、
まず出力用のプラグインを追加
sudo apt-get install fluidsynth-dssi

サウンドフォントを入手(コマンドによるインストールが紹介されている)
sudo apt-get install fluid-soundfont-gm -y

Rosegarden上で適当にMIDIを打ってみると、音が出ることが確認できます。

リカバリ領域の削除と、インストールディスクが使えない場合の対処法 ( Windows7 )

 予約領域あるいはリカバリ領域を削除するにあたって、Windows7 のインストールディスクが使えなかった場合の代替手段を紹介します。


Windows7のリカバリ領域と隠しパーティションのフラグ

予約領域を消す
ノートPCにプリインストールされているWindows7の場合、リカバリ領域が100MBの予約領域に相当するパーティションであり、そのサイズは私のPCでは25GBもあります。
120GBのSSDを使っていることを考えると、25GBも使えないのはもったいないです。また、25GBもあれば、Ubuntuを入れるのに十分な領域を確保できます。
というわけで、予約領域を消すことにします。 作業自体は単純で、

・Windowsの修復オプションでブートローダーを再インストール
・別OSを使うか、Windowsのコマンドを使って、隠しパーティションを削除

という、たったの2工程です。
今回は、「Windows修復オプション」が使えないという問題に突き当たったため、その解決策を防備録として記事にしました。

インストールDVDが使えない

Windows7x64のインストールディスクを入れたにもかかわらず、「このバージョンのシステム回復オプションは修復しようとするWindowsのバージョンと互換性がありません。このバージョンのWindowsと互換性のある回復ディスクを使用して下さい。」というメッセージが出て、修復オプションを使用できない場合があります。

このエラーが出る原因は多分、Windowsのサービスパックです。
もちろん、バグがあるという意味ではなくて、「サービスパックを適用したらOSは別バージョン扱い」ということです。
Windows(PC)を購入してからSP1が登場し、インターネット経由でアップデートを行った場合、インストールディスクとPC上のOSのバージョンが合わなくなり、この問題が発生するものと思われます。

この状態で、リカバリ領域削除を行うためのターミナルを呼び出す方法は2つあります。・Windowsが起動する状態ならば、F8キーでセーフモードのオプションから[コンピュータの修復」を選ぶ
・システム修復ディスクを作成する。(Windowsが既に起動しない状態でも使用可能だが、システム修復ディスク自体は動作するWindows上で作らなければならない。)


F8からシステム修復のコマンドプロンプトを実行

私が使ったのは、こちらの方法でした。
Windowsが問題なく起動する状態で修復オプションを使いたいのであれば、ディスクを用意しなくて良いこちらの方法が楽です。

起動直後にF8キーを連打すると、セーフモードのオプション選択画面が現れます。
この中から、「コンピュータの修復」を選びます。
Windowsのインストールディスクと同じシステム修復画面に切り替わるので、あとは通常の手順どおりにブートローダの再インストールを行います。

リカバリ領域を削除する際の手順

OSが起動しなくなる場合があるので、作業は自己責任であり、実際に作業を行う前には必ずバックアップを取ってください。

Windowsのコマンドプロンプトから、ブートローダーを再インストールする方法は、参考サイト様「【備忘録】Windows 7 のシステム予約済みパーティションについて」をご参照ください。
ようするに、適切な状態で
bcdboot.exe C:\Windows /l ja-JP
を実行すれば良いわけです。

不要になったパーティションの削除にはUbuntuを使用しました。
GPartedを呼び出して、隠し領域フラグを削除してから、パーティションを削除しました。
GPartedをコマンドで呼び出すならば、
sudo gparted
です。

作業手順に間違いがなければ、リカバリ領域を削除した状態で、Windows7が起動します。
なお、作業後、初回の起動に時間がかかるかもしれません。
一度、ログインしてからHDD(SSD)へのアクセスが終わらず、エクスプローラーから「スタート」ボタンも押せないため、強制的に電源を落とさなければなりませんでした。
それからしばらく、今のところは問題は発生していません。

リカバリモードでのC:\(コロン・バックスラッシュ)の入力方法

修復オプションのコマンドプロンプトでコマンドを打つ際に、キー配置によって 円「¥」やコロン「:」が打てない問題に出会う場合があります。その対処法です。
(以下、全角で表記している記号は、すべて半角に読み替えてください。)
「:」コロンは、「Ctrl + ;」で入力できます。
バックスラッシュは「む」キー(「}」または「]」キー)にて入力可能です。「\」は、「¥」マークと同じ意味を持ちます。(参考サイト)

システム修復中、キー配置がUSキーボードとして認識される場合があります。
特に、私がF8からの修復オプションを使用した際は、キー配置に Japanese を選択してもキー配置がUS相当のまま変わらない現象に遭遇しました。


修復ディスク作成

今回使わないとしても、念の為に作っておいたほうが良いです。
特にブートローダを操作する今回の作業手順は、OSが起動しなくなる場合があるので、復旧手段を用意しておくのは重要です。
(私は、作業前にddコマンドでシステムのバックアップを取っています)。
Windows TIPS:Windows 7のシステム修復ディスクを作成する」を参考にして、コントロールパネルから簡単に作成することができました。

MiniDVD (80mm)を100円均一で見つけたので購入してみました

サイズの小さいDVD ( MiniDVD 80mm 規格)を100円均一で見つけて、用途もないのについ購入してしまいました。
DVD-Rで、記録サイズは片面1.4GB (約30分)とのこと。1〜4倍速対応のTAIWAN製。
ビデオカメラ用 (当然、通常のデータ保存もできる) 。

miniDVD 80mm
通常のDVDと比べたところ

日本語版WikipediaにもMiniDVDの記事はもありますが、英語版WikipediaのMiniDVDの記事には容量などの詳しい情報が記載されています。

ミニサイズのディスクといえば、西尾維新の零崎シリーズ(零崎双識の人間試験)に付いてきたカード型(しかも長方形!)のディスクを思い出します。あれには壁紙などが入っていました。



2014年現在、Amazonではまだ何種類か販売されているようです。
315円の製品が105円に値下げされて売られていましたし、もうそろそろ、80mmのDVDを使用するビデオカメラもほぼ引退したのではないかと思います。

このMiniDVD、かなりの個数が陳列されていました。何か用途が思いついたら、大量に購入したいと思うのですが。

Wineのgnome-keyring-pkcs11.soが見つからないエラーの解決方法(2014年版)

今のところ実害らしいものを確認することはできませんが、Wineのターミナル出力に現れる
p11-kit: couldn't load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
というエラーを出たままにしておくのも何なので、これを解決しておくことにしました。


なお、環境はUbuntu12.04.3 amd64です。

今回は穀風様「Ubuntu (64bit) で gnome-keyring-pkcs11.so が無いと言われる」を参考にさせていただきました。
とはいえ、2014年の時点で、当時とは多少ばかり環境の事情が違うようなので、あらためて手順をメモしておく次第です。
また、上記サイト様が参考にしたリンク先の AskUbuntu「Wine can't find gnome-keyring-pkcs11.so」にも情報が追加されていたようで、こちらも参考にさせていただきました。

具体的な変更点としては、穀風様のサイトに貼ってあるコマンドはダウンロード先がリンク切れしていることと、/usr/lib32が存在しないという2点です。


まず、手順どおりのコマンド
wget https://launchpad.net/~jcollins/+archive/jaminppa/+build/1482994/+files/getlibs_2.06-0ubuntu1%7Eppa2_all.deb
では、debパッケージを取得することができませんでした。

また、AskUbuntuに記載されているうち、
sudo apt-get install --reinstall libp11-kit0
および
sudo apt-get install libp11-kit-gnome-keyring:i386
という方法が簡単そうだったのですが、残念ながらどちらも上手く行かず。

そこで、もうひとつの方法である、getlibsによるダウンロードで*keyring.soライブラリの取得を試みます。
このあたりは解説の手順どおりに。
ファイルを取得して権限を付与します。
wget https://raw.github.com/spaetzlecode/getlibs/master/getlibs
sudo chown root:root getlibs
sudo chmod +x getlibs
ファイルを配置して実行します。
sudo mv -n getlibs /usr/local/bin
sudo /usr/local/bin/getlibs -p gnome-keyring:i386
残念ながら、ここまでの手順では「/usr/lib32が無い」というエラーを返します。

そこで、パッケージを直接ダウンロードしてくる方法を試しました。
wget https://launchpad.net/~gnome3-team/+archive/gnome3/+files/gnome-keyring_3.4.1-4ubuntu1~precise1_i386.deb
インストーラなので、管理者権限で実行。
sudo /usr/local/bin/getlibs -i gnome-keyring_3.4.1-4ubuntu1~precise1_i386.deb

この方法も、同じく/usr/lib32が無いというエラーを返します。そして実際、存在しません(下のコマンドで確認)。
ls /usr/lib32

getlibsによるライブラリのインストール先は固定パスだと思われるので、インストール先ディレクトリをあらかじめ作成しておくことで、問題を回避することにしました。
sudo mkdir /usr/lib32
sudo /usr/local/bin/getlibs -i gnome-keyring_3.4.1-4ubuntu1~precise1_i386.deb
これで成功。試していませんが、getlibsに-p指定する上の方法も上手く行くのではないかと思います。

あとは手順どおりに、リンクを貼って終了です。
sudo mkdir -p /usr/lib/i386-linux-gnu/pkcs11/
sudo ln -s /usr/lib32/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so

以上の手順により、 gnome-keyring-pkcs11.so に関するエラーが出なくなるはずです。

ComfyUIでXYZ-PlotするワークフローのサンプルとTips(ComfyUI-XYZ-Stitch)

 ComfyUIでAutomatic1111的なXY-Plotをしたいのだが、ComfyUIデフォルト機能には用意されていない。     カスタムノードが必要となるのだが、Webには古いとか何故か動かないとかなXY-Plotパッケージの使ってみた系記事か、githubに上げられた...