実録コンピュータ物語

趣味で使っているコンピュータ&アプリの情報を発信するブログです。

Rakudo Perl 6 2015年3月版がリリース。JITコンパイルに対応したWin 64bit版もあり

2015年3月版Rakudo Windowsインストーラが公開されました。 今回はJITコンパイル対応の64bit版パッケージもあり、32bit版よりも高速に動作するとのこと。(MoarVMバックエンドのみ)

Announce: Windows MSI Installers for release 2015.03 | rakudo.org

Rakudoは以下のURLでダウンロードできます。

http://rakudo.org/downloads/star/

Perl 6を語る(第1回)コメントとアンスペース

f:id:bosh:20150308150430p:plain

2015年のクリスマスにPerl 6のバージョン1.0がリリースされるということで、少しずつ情報を整理していきたいと思います。

第1回はPerl 6のコメントとアンスペース(Unspaces)について取り上げます。(コメントから説明するのは、Perl 6の言語仕様で最初の方にあるからです)

単行コメント

コメントは#で始まり、行の終わりまで続きます。コメントはプログラムの動作には影響を与えません。これはPerl 5や他のプログラミング言語とまったく同じです。

# これはコメント行です。内容は無視されます

say "Hello Perl 6"; # Hello Perl 6と出力する

複数行コメント

PODの=beginセクション使って複数行コメントが可能です。Perl 5と違い、最後に=cutを書く必要はありません。

=begin comment

これはコメントです。
内容は無視されます

=end comment

say "Hello Perl 6";

埋め込みコメント

Perl 6では埋め込みコメント(インラインコメント)も使うことができます。埋め込みコメントは#`で始まり、後ろに任意の括弧文字が続きます。

#`(
    これは埋め込みコメントです。
    内容は無視されます
)

say #`(これもコメント) "Hello Perl 6";

#`の後に続く文字はユニコードで定義されている括弧ならなんでも使えます。

#`『
    これは埋め込みコメントです。
    内容は無視されます
    ユニコードで使える括弧文字なら何でもOK
    () [] <> {} 「」“” 《》【】
』

say "Hello Perl 6";

括弧は複数重ねることができます。括弧を閉じる時も同じ個数にする必要があります。

#`{{
    括弧を重ねる
    } ←括弧が1個しかないので、これはコメント終了とは見なされない
}}

#`「『
   「括弧の種類が別でもOK」
』」

アンスペース

アンスペースとは、バックスラッシュ\の後に続く空白文字とコメントを構文解析に無視させる機能です。C言語で改行文字をエスケープする機能とよく似ています。

括弧文字と同様に、ユニコードで定義されている空白文字ならなんでもアンスペースできます。特にメリットはありませんが全角空白でも可能です。

(ちなみにアンスペースに限らず、Perl 6では半角と全角の空白に区別はありません。全角空白をコード中に書いても普通に動きます)

以下のコードは全て「Hello Perl 6」を出力します。バックスラッシュの後に続く空白文字(改行含む)やコメントは全て「無かった」ことにされます。

"Hello Perl 6".say; # say "Hello Perl 6" と同じ

"Hello Perl 6"\    .say;

# 分かりにくいけど全角空白でも可能
"Hello Perl 6"\    .say;

# 改行を無効化
"Hello Perl 6"\
.say;

"Hello Perl 6"\ # 途中にコメントがあっても無視される
.say;

"Hello Perl 6"\ #`(
    埋め込みコメントも全部無視される
).say;

動作確認環境と参考情報

ドラゴンクエストヒーローズでコントローラーから出る音声を消す方法

PS4版のドラゴンクエストヒーローズをプレイ中。世間では無双系と言われていますが、自分はPCゲームのOrcs Must Die!に近いという印象を受けました。

ところで、このゲームはなぜかスピーカーと同時にコントローラーからもキャラクターの音声が出力されるようになっています。(DUALSHOCK4には小型のスピーカーが付いている)

ゲーム内のボリューム設定には「ボイス」という設定しかなく、コントローラーの音量を単独で変更することはできません。そのため、PS4の周辺機器設定から手動で音量を下げる必要があります。

  1. PS4起動中にコントローラーのPSボタンを長押しする
  2. 「サウンドと周辺機器を設定する」を選ぶ
  3. 「音量コントロール(コントローラーのスピーカー)」の音量をゼロにする

これでゲーム中にコントローラーの音声が出なくなります。

HD598の標準ケーブルをXLRバランスケーブルに改造する

f:id:bosh:20150222173616j:plain

HD598のオーディオケーブルにXLRタイプコネクター(キャノンコネクター)を接続してバランス化する方法を紹介します。ケーブルが共通なのでHD518 / HD558にも適用できると思います。

改造に使ったもの

以下で紹介するものは全てAmazon.co.jpで注文できます。はんだこてなどの道具込みで4300円程度でした。

はんだこてセット

単純にベストセラー1位だったので購入。オーディオケーブルとXLRコネクターの接続に使います。(これを購入後に知ったのですが、はんだの代わりに接着剤で接続する方法もあります)

goot 電子工作用はんだこてセット X-2000E

goot 電子工作用はんだこてセット X-2000E

ワイヤーストリッパー

これもベストセラー1位だったので。ケーブルの被膜を切り取る道具です。このNo.3500E-1は直径0.5~2.0mm用で、HD598のケーブルでも使えました。

黄色のNo.3500E-2もありますが、対応する径が異なるので注意。

VESSEL ワイヤーストリッパー No.3500E-1

VESSEL ワイヤーストリッパー No.3500E-1

XLRコネクター(メス3ピン)

f:id:bosh:20150222202808j:plain

自分が使っているUSB DAC UD-301のXLRコネクターがオス3ピンなので、メス型のNEUTRIK NC3FXX-Bを2個購入。

NC3FXX-Bは接続部が金メッキですが、銀メッキのNC3FXXもあります。

NEUTRIK NC3FXX-B XLRコネクター

NEUTRIK NC3FXX-B XLRコネクター

バランスケーブル化の手順

具体的な改造方法を説明していきます。HD598はケーブルが着脱可能なので、本体から外しておきます。(接続部を左回りにねじるように動かしてから引き抜く)

ステレオプラグを切り離す

オーディオケーブルを途中でカットし、プラグを切り離します。自分は端から50cmくらいの位置でカットしました。

f:id:bosh:20150222165842j:plain

ケーブルの外側の被膜を切り取る

カットした部分の端から10cmの被膜をワイヤーストリッパーで切り取ります(穴は2.0mmを使用)。うまく切れない場合はカッターナイフも併用してください。

中にはL側(白、黒)とR側(赤、青)の線が入っています。黄色っぽい繊維は不要なので切り取っておきます。

f:id:bosh:20150222171506j:plain

4本の線の被膜を切り取る

上記の線の端から4mmをワイヤーストリッパーで切り取り(穴は0.5mmを使用)、ヨリ線をねじってまとめます。これらの中にも繊維が織り込まれているので、できるだけ切り取っておきます。

f:id:bosh:20150222172731j:plain

白と黒(Lの場合)の線をブッシングに通す

ブッシング(接続具)にL / Rそれぞれの線を通しておきます。はんだ付けした後だと通せなくなるので注意。

f:id:bosh:20150222174220j:plain

インサートに銅線をはんだ付けする

インサート(内部金具)と銅線をはんだ付けして接続します。HotとColdが対応するようによく確認しましょう。なお、XLRコネクターの1番は使用しません。

HD598用ケーブルの仕様
種類 L R
Hot
Cold
XLRコネクターの仕様
番号 種類
1 GND
2 Hot
3 Cold

インサートは1、2、3と番号が表示してあります。f:id:bosh:20150222181003j:plain

はんだこてセットに入っているヒートクリップでインサートと線を固定すれば作業しやすいです。f:id:bosh:20150222175010j:plain

LとRをはんだ付けした状態f:id:bosh:20150222182446j:plain

補足:はんだの代わりに接着剤を使う

はんだを使わずにAgICの導電性接着剤で接続ができます。はんだと比べて強度が弱そうなので、導電性接着剤の上から瞬間接着剤を上塗りして補強する必要があります。(はんだこてを購入した後で知ったので、実際に試したわけではないですが)

AgIC 導電性接着剤

AgIC 導電性接着剤

コネクターを組み上げる

NC3FXX-BのページにあるAssembly Instructionを参考にしてコネクターを完成させます。

f:id:bosh:20150222173616j:plain

XLRバランス接続に使ったDAC (TEAC UD-301)

ヘッドホンアンプになるし、光デジタル入力にも対応している(主にPS3/PS4用)ということで購入したUSB DAC。LとRで回路が独立しているので、フルバランスのステレオ再生ができます。

参考にしたサイト

SourceTreeの非公式Portable版が開発されていたので試してみた

SourceTree(GitなどのGUIクライアント)をPortableAppsに対応させたSourceTreePortableが開発されていたので試してみました。

cosmomill/SourceTreePortable · GitHub

SourceTreePortableのインストール方法

# SourceTreeSetup_1.6.13.msiのファイルを抽出
>SourceTreeSetup_1.6.13.exe /extract
>msiexec /a SourceTreeSetup_1.6.13.msi /qb TARGETDIR="%temp%\SourceTree"

# SourceTreePortableのAppファルダに本体をコピーする。フォルダは適宜書き換えてください
>xcopy "%temp%\SourceTree" "C:\PortableApps\SourceTreePortable\App\SourceTree" /S
>rmdir "%temp%\SourceTree" /S

コピー完了後、SourceTreePortable.exeを実行すればSourceTreeがポータブル版として起動します。

気づいた点

起動時にGit PortableなどがAppDataフォルダにコピーされるので、少し時間がかかります。AppData内のファイルは終了時に削除され、SourceTreePortableのDataフォルダに退避されます。

foobar2000用DSP「Stereo Convolver」でヘッドホンの定位を改善させる

ヘッドホンに関してよく挙げられる話題に「頭内定位」または「脳内定位」というものがあります。ヘッドホンで音楽を聞くと頭の中で響いているように感じるという現象です。

ヘッドホンの場合は音が真横から聞こえてくるため、どうしても音の定位が変になりがちです。これを改善するfoobar2000DSPとして「Dolby Headphone Wrapper」 「Bauer stereophonic-to-binaural」「Crossfeed」などがあります。 foobar2000DSPではありませんが「Razer Surround」でバーチャル7.1ch化するという方法もあります。

この記事では類似のDSPである「Stereo Convolver」を使って頭内定位を解消する方法を紹介します。

ヘッドホンリスニング用DSPの不満点

上で紹介したDSPは導入が楽な反面、少し不満な部分もあります。

まずDolby Headphone Wrapperは定位の改善効果は高いですが、音にリバーブ(残響)がかかるため、音楽を原音に近いまま聴くという目的には不向きです。

また、サンプリング周波数が48000Hzまでしか対応しておらず、最近増えてきたハイレゾ音源を再生するにはダウンサンプリングを行う必要があります。知覚できるほどの違いはないでしょうが、微妙に損した気分になります。

Razer Surroundはリバーブがなく定位の調節もできるので優秀ですが、こちらも対応する量子化ビット数とサンプリング周波数は16bit 48000Hzまでです。

Bauer stereophonic-to-binauralとCrossfeedはサンプリング周波数の問題はクリアできますが、定位の改善効果は今ひとつのように思います。

「Stereo Convolver」はヘッドホンの特性に合わせて定位を調節可能

上で述べた不満点をほぼ全て解消できるDSPとしてStereo Convolver(foo_dsp_stereoconv)を紹介します。このDSPはHRTF(頭部伝達関数)を少しづつ変化させたサンプル音源を使って、ヘッドホンに合わせて定位の調節ができます。

設定の難易度は高いですが、かなり凝った設定が可能です。音の定位はRazer Surroundを超える全方位(360度)に設定可能な上、仰俯角(上下方向)も調節できます。以下で設定方法を説明します。

Stereo Convolverの設定手順

f:id:bosh:20150212232814p:plain

foo_dsp_stereoconvのインストール

オリジナルの配布元は削除されているようなので、代わりに Stereo Convolver (foo_dsp_stereoconv) - Hydrogenaudio Forumsからfoo_dsp_stereoconv_v1_0_1.zipをダウンロードします。

foobar2000のインストールされたフォルダ内にあるuser-componentsというフォルダの中にfoo_dsp_stereoconvというフォルダを作ります。その中に圧縮ファイル内のfoo_dsp_stereoconv.dllをコピーします。例「C:\Program Files (x86)\foobar2000\user-components\foo_dsp_stereoconv\foo_dsp_stereoconv.dll」

foobar2000が起動中の場合、プログラムを再起動すればfoo_dsp_stereoconvが読み込まれます。

サンプル音源をダウンロードしてヘッドホンで聞く

以下のサイトのデモサウンド(wavファイル)を全てダウンロードします(ダウンローダを使うと楽)。このファイルをプレイリストに順番に並べてヘッドホンで聞いていき、音の動きが最も自然だと思うファイルの番号を覚えておきます(IRC_10XX_P345)。DSPは一切使わず、原音のまま聞くようにしましょう。

http://recherche.ircam.fr/equipes/salles/listen/sounds.html

f:id:bosh:20150212233633p:plain

インパルス応答ファイルのダウンロード

デモサウンドで番号が決まったら、以下のページから対応する番号のIRC_10XX.zipをダウンロードします。

http://recherche.ircam.fr/equipes/salles/listen/download.html

設定に使うのは圧縮ファイル内の「COMPENSATED\WAV\IRC_10XX_C」というフォルダです。このIRC_10XX_Cフォルダを中身ごと任意の場所(foo_dsp_stereoconvをインストールしたフォルダなど)にコピーします。

foo_dsp_stereoconvにインパルス応答ファイルを設定する

foobar2000のメニューからFile/Preferences/Playback/DSP Managerに進み、Stereo Convolverをアクティブにします。Configure selectedを押して設定画面を呼び出し、Left Wav FileとRight Wav Fileに個別にインパルス応答ファイルを設定します。

f:id:bosh:20150212232814p:plain

インパルス応答ファイルは「IRC_1002_C_R0195_T120_P345.wav」のような名前になっています。1002はHRTFの識別番号です。R0195はスピーカーからの距離で、1.95mを表しています。これら2つは圧縮ファイル内では全て同じなので、設定上は気にする必要はありません。

T120はスピーカーの方位(度)を表し、左音声と右音声で選ぶべき度数が変わります。時計回りに度数が増えていき、T000(0度)は真後ろ、T090は左真横、T180は真前、T270は右真横になります。

P345はスピーカーの上下方向(度)を表し、P000は水平、P045は45度斜め上、P090は真上です。P315は45度斜め下、P345は15度斜め下になります。

初めて設定する場合

どのファイルを設定すればいいか分からない場合は、以下の手順で最適な設定を探します。

  1. 最初にLeftとRightの両方に「IRC_10XX_C_R0195_T180_P345.wav」を設定する(スピーカーが真前、少し下に設置されていると想定)
  2. 「Apply」ボタンを押して設定を適用し、適当な音楽を再生して音が前方定位になっているか確認する
  3. Leftに「IRC_10XX_C_R0195_T165_P345.wav」、Rightに「IRC_10XX_C_R0195_T195_P345.wav」を設定し、もう1度設定を適用して定位を確認する(スピーカーの位置を左右に少し広げる)
  4. 「Leftの度数を15減らし、Rightの度数を15増やす」という手順を繰り返し、音が自然に聞こえる度数を探していく
  5. 方位が決まったら上下方向(P345の部分)を変えて微調整する。上下なので、LeftとRightの度数は同じで構わない

HD598の設定例

HD598の場合はLeftが「IRC_1002_C_R0195_T120_P345.wav」、Rightが「IRC_1002_C_R0195_T240_P345.wav」で自然に聞こえるように思います。最適なHRTFは聞く人の個人差で変わってくるので、この設定が正しいとは限りません。

しかしヘッドホンが同じならば設定はだいたい似たものになるはずなので、ヘッドホンごとに最適設定のデータベースを作れば有用かもしれません。

HD598のイヤーパッドを互換品(ノーブランド)に交換してみた感想

ゼンハイザーのヘッドホンHD598のイヤーパッドを交換しようと探してみたら、低価格な互換品がAmazonで売っていたので購入してみました。

2015年2月9日時点でのHD598用イヤーパッドの価格は3686円です。

それに対して今回購入した互換品は960円で、正規品の3分の1以下の価格となっています。「HD515 HD555 HD595 HD518対応」と表記されていますが、HD598でも使用できました。

f:id:bosh:20150209214621j:plain左の黒いのがノーブランド品、右がHD598用の正規品

使ってみた感想

イヤーパッドとしての機能は問題なしです。クッション性は正規品と遜色なく、特に違和感なく使用できました。最大の難点はイヤーパッドの取り付けがものすごく難しく、すぐに外れてしまうこと。

このイヤーパッドは裏側にプラスチックのリングが付いていて、これをヘッドホン本体のツメに引っ掛けて固定する仕組みになっています。正規品はリングの剛性が高く、ヘッドホン本体に押し付ければパチッとはまります。しかし互換品の方はブリスターパックのような柔らかい素材になっていて、押しこむだけでは変形してしまってツメに引っ掛かりません。

f:id:bosh:20150209222114j:plainイヤーパッドの裏側。透明なプラスチックにツメを引っ掛けて固定する

どうにかしてツメに引っ掛ける方法を見つけたので、互換品に交換する場合は以下の手順で取り付けてみてください。

  1. ヘッドホン本体のツメ1ヶ所にリングを引っ掛ける
  2. ツメを引っ掛けた部分を指でギューッと押さえて外れないようにし、その状態のまま隣のツメも引っ掛ける(リングのプラスチックを指で裏返すように広げ、ツメの上に被せる感じで)
  3. 同じように引っ掛けた部分を指で押さえ、隣のツメを引っ掛けて・・・をリングが1周するまで繰り返す

油断するとすぐにツメから外れてしまうので、何度もリトライが必要です。イヤーパッドを引っ張ったりしないように注意しましよう。最終手段として両面テープで接着するという手もあります。

まとめ

写真だとわかりづらいですが、この互換イヤーパッドは想像以上に取り付けが困難です。何度やっても外れてしまうので、諦めて捨てようかと考えたくらいです。機能自体は問題ないので、正規品を洗浄する時などの控えとして購入するのがおすすめです。