2020年2月4日火曜日

充電ステーション・充電スタンドとマグネットケーブルの規格

急に家族の充電事情をなんとかしたくなってしまった。
どこもそうだと思うが、スマホが普及しマイクロ USB、Lightning、USB-C での充電のため、小さな AC アダプタをあちこち付けて適当なところに置いて充電している。まあみっともないのである。

今回は購入前の妄想の記録である。購入したらまた書きたい。

まず考えたのは充電ステーション・充電スタンドと呼ばれる商品。検索しても電気自動車向けの情報がたくさん出てくる、細分化が必要な単語…

MixMart 6ポートUSB充電器 6台同期 同時充電 充電ステーション デスクトップ 充電スタンド iPhones/iPad/Nexus/Galaxy/タブレットPC スマートフォンなど充電対応 シルバー
こんな感じのもので、中華製品が短い充電ケーブル込みで 3000~4000 円程度で売っているので、これでも十分整理できるし良いかもしれない。しかし、使わないときにケーブルびろんびろん。それに電源周りはケチると火元になりうるのできちんとした物にした方が良い。

そこで、定番で信頼性のある Anker の充電器を利用することにした。Anker は充電スタンド的な商品は販売していないので、単に複数ポートの充電器になる。

Anker PowerPort I PD - 1 PD & 4 PowerIQ(PD対応 60W 5ポート USB-C急速充電器)【PSE認証済/PD対応/PowerIQ】 iPhone 11 / 11 Pro / 11 Pro Max/XR、MacBook、Galaxy S10 / S10+、その他Android各種対応(ブラック)
3500円程度で USB-C の Power Delivery にも対応している 60w のタイプ。他の USB ポートも Anker 独自の Quick Charge 互換規格 PowerIQ で急速充電可能。ここまでの性能の充電スタンドはない。人気もサポートもあり、信頼性が比較的高い。充電ケーブルは付属していないので手持ちのものか、追加購入が必要になるので結構高くつく。

これと充電スタンド的な商品と組み合わせる。竹製品の物もあったがぱっと見いまいち作りが良くない気がする…ちょっと場所を取るかもしれないが、こんなものを見つけた。

NuAns COLONY マルチ充電トレイ 【日本正規代理店品】 NA-CLN-TWT
謎の物体感があるが、中に Anker のような充電器を入れ、ケーブルを収め横の穴から出して上の溝にスマホやタブレットを立て掛けて使うもの。上面をスライドさせることができ、使わないときにケーブルを収納できる。素材が石的に見えるが、そういう質感の樹脂らしい。TENTO というデザイナーユニットが手掛けているとのことで、きちんとデザイナーが関わると違ったものができるものだと感心する。機能的にもよく練られており評価も高い。

この時点で最初の安物の倍の価格になってしまっているが、充電ケーブルも購入しなければならない。NuAns COLONY にケーブルをセッティングすると、まず動かさない形になってしまうので、USB-C, micro USB, Lightning の組み合わせをきちんとしておかないといけない。また、外出時に使用する場合もあるので、既存のケーブルはとっておきたい。

このようなことを考えた結果、マグネットケーブルが候補に上がった。

マグネット 充電ケーブル 3in1ケーブル 3A急速充電 データ転送 月形のLEDランプ付き タイプC マイクロUSB アイフォン各種スマホ/タブレット対応(1m)
こんな感じのもので、コネクタ部が分離しマグネットで付け替えられるものだ。これだったらあとから USB-C, micro USB, Lightning を好きに変更できるし、端末にコネクタを付けっぱなしにして、ケーブルを近付けるだけでマグネットでパチっと充電できる便利さも手に入る。また、付けっぱなしにするためには、パソコンとデータ通信するケーブルにも同じ規格のケーブルを使わないと面倒なことになる。データ通信できない充電専用のマグネットケーブルもあるので注意が必要だ。

そう、マグネット接続部の規格が問題なのである。調べても誰もまとめていない。みんなその場で使えればいいとばかりのノリである。全体で統一するとなると本数は5〜6本以上は必要になるし、不通のケーブルよりやや高いので、5000円程度になってしまう。追加購入の際にも入手性が大切になってくる。そもそも規格がわからないので、同じ製品がなくなった場合、何を購入すれば互換性があるのかわからない。どの規格が入手性が高いのか、今後長く生き残るものは?ということを考えなければいけないのに、そもそも取っ掛かりがない。

調べていると、第5世代とか第11世代とかいう書き方をしている商品があるが、それ自体何の世代なのか書かれていない。どこかのメーカーが作った技術をみんな使用している?あるいはみんな独自規格で各メーカーごとの世代を言っている?

SIKAI 第11世代最新マグネット充電ケーブル超急送3A出力充電 超強力磁気チャージ発熱なし漏れなしカードスロット式 Android/iPhone/Type-C適応チャージライン 黒 (11世代 1ケーブル+3個端子)
とりあえず世代が新しい方が急速充電の対応がよく、データ通信もできるものが多いらしい。ちなみに、Lightning は USB 2.0 らしいので USB 3.0 のこの手のマグネットケーブルはない。別に USB-C のみのマグネットケーブルでは USB 3.1 対応などとなっている場合がある。

中国の通販サイト AliExpress では流石に製造拠点だけあって最新のマグネットケーブルを安く購入できる。玉石混淆すぎてきちんとしたものを選ぶのに骨が折れるが…また、昨今の新型コロナウイルスの影響で中国からの輸入は思うように行かないかもしれない。

火災リスクを考えての購入なので、マグネットケーブルもあまりケチってはいけないと考えているが…

だれかマグネットケーブルの規格について教えてくれー!

2019年12月6日金曜日

また古い FreeBSD mpd からインターリンク MyIP に接続できなくなった

前回繋がらなくなったのは5年前のこと
2019/12/5 から繋がらなくなっていた。メールを調べたらインターリンクからお知らせが来ていた。
マイIPサービス(PPTP版) セキュリティ強化を目的としたサーバーメンテナンスについて
 【概要】
  ご利用のサービスをアップグレードされたOSの新サーバーに移管します。
  メンテナンス後はPPTP接続に加え、L2TP接続もご利用できるようになります。

 【ご契約サービス】
  マイIP(PPTP版)から マイIP(PPTP/L2TP版)へ変更となります。

 【メンテナンスの日程】
  2019年12月05日(木) 08:00~09:00(24時間表記)

  ※メンテナンス時間内は、VPN接続がご利用いただけません。
  ※お客様の設定情報を新サーバーに移管するため、メンテナンス当日の
   07:00~09:00は、パスワード変更をお控えくださいますようお願いいたします。

 【PPTP接続における設定変更のお願い】

  PPTP接続につきましては、新サーバーでは暗号化の設定が必須となります。
  暗号化を「無効」でご利用の方は認証エラーとなりますので、以下マニュアルを
  ご参考いただきまして、メンテナンス後に設定変更をお願いいたします。
…間違いなくこれだろう…
正直、アップデートもしていない FreeBSD の mpd3.18 でつなげているので、以前も書いたがいい加減 VPS 等に移行したい。が、ごまかしごまかし自宅サーバとして使用している。一応なんとか対応できないかあがいてみる。

https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=501
に UINX 系 OS 用の MyIP 設定ツールが用意されていた。FreeBSD の対象は 10.4, 11.1 となっていて、そのままでは使えそうにないので、結果的にできる mpd.conf を参考にする。

前回同様


sudo mpd -s daemon -p /var/run/mpd.pid

で出るメッセージで動作確認をしながら設定を変更していくと、

mpd: option "ipcp" unknown

set mppc: unknown command. Try "help".

などと出てくる。流石にもう mpd のバージョンが古すぎて対応できないか?と諦めかけて "mpd3 mppc pptp" 検索しているとこんな情報がみつかった。
set ccp yes mppc
set ccp no mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless

どうやら mpd3 の時代は set mppc ではなく、set ccp で指定していたらしい。こちらで設定してみたら、つながってしまった…
また延命できてしまった…いい加減諦めて VPS に移行しようかと思ってたのに…まあ仕事忙しい時期だったので助かったけど…

最終的な mpd.conf
default:
        load MyIP

MyIP:
        new -i ng1 MyIP MyIP
        set bundle enable ipcp
        set bundle enable compression
        set bundle enable crypt-reqd
        set ccp yes mppc
        set ccp no mpp-e40
        set ccp yes mpp-e128
        set ccp yes mpp-stateless
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        set ipcp yes vjcomp
        set iface enable tcpmssfix
        set bundle disable multilink
        set bundle authname *******
        set bundle password *******
        set iface up-script /usr/local/etc/mpd/mpd.linkup.myip

        set iface idle 0
        set iface disable on-demand

        set ipcp yes vjcomp

        set link mtu 1460
        set link keep-alive 10 75
        set link disable pap chap
        set link accept chap-msv2
        set link yes acfcomp protocomp
        open

mpd.links

MyIP:
        set link type pptp
        set pptp peer *.*.*.*(接続先の MyIP サーバ)

        set pptp enable originate incoming outcall

一応記録しておきます。

2019年3月18日月曜日

Logic Pro X のスコアエディタでサスティンペダルを音の長さに反映させる方法

結論

結論から書くと、ピアノロールの[機能]>[サスティンペダルをノートの長さに変換] でサスティンペダルが消えて音の長さがサスティンペダル分の長さに変更されるので、オーバーラップなし設定のスコアであればこれで特に問題は出ないのではないかと思います。

なぜやりたい?

なぜこれをやる必要があるかというと、鍵盤でリアルタイム入力して鍵盤用の譜面を作る場合、サスティンペダルを使用することがほとんどで、そのまま譜面を表示するとこのようになります。
リアルタイム入力後のスコアエディタの状況。Ped. * などの記号がごちゃごちゃと出てしまう。
音の長さも鍵盤から指を離したタイミングまでとなり、いちいち休符が入ってしまう。
リアルタイム入力後のピアノロール。譜面の4小節目までが表示されている。
下部の線がサスティンペダルの状況。127 が踏んだ状態、0 が離した状態。
このようにサスティンペダルの記号(Ped. * など)で煩雑になってしまうので、クラシックの譜面でもない限り、サスティンペダルの指定は行わず、適宜ペダルを踏むケースが多いのではないかと思います。

譜面でサスティンペダルの指定を行わない場合は、音符の長さをサスティンペダルを踏んで伸ばしたい長さにする必要があります。でないと、普通に指を離したタイミングで音を切る、という譜面になってしまいます。上のピアノロールの通り音が途切れてしまうわけです。

てっきりスコアエディタの設定に、サスティンペダルを表示せず、音符の長さをサスティンペダルを踏んで伸ばしたい長さにするオプションがあるものと考えて探しましたが、どうも無いようです。

ネットを調べていると、「サスティンペダルをノートの長さに変換」の機能があることがわかり、使えそうということで試してみました。

「サスティンペダルをノートの長さに変換」機能を使ってみる

ピアノロールの[機能]>[サスティンペダルをノートの長さに変換]
メニューを表示した状態。
サスティンペダルをノートの長さに変換した後のピアノロール。ティンペダルが消えて音の長さがサスティンペダル分の長さに変更されている。
サスティンペダルをノートの長さに変換した後のスコアエディタ。
ペダル記号と余分な休符がなくなり、スッキリして見やすくなった。

一つ注意点あり

スコアエディタの方では「オーバーラップなし」の設定にする必要があります。通常はデフォルトで「オーバーラップなし」になっているので変更していなければ問題ないと思います。

サスティンペダルを踏んだ状態で同音連打をした場合、前のノートは切られることはなく、サスティンペダルが切れるところまで伸ばされます。ということはノートがその間重なった状態になるわけです。

そうなると、スコアエディタではどのように表示されるかというと、このように音符がタイで繋がれてしまうのです。これを見た奏者は後の音符は弾かず、2小節目などは、なんで全音符にしなかったんだろうと疑問に思うでしょう。
リージョンの設定で「オーバーラップなし」のチェックを外した状態のスコアエディタ。
余分なタイが表示されていて、誤解を生んでしまいそう。

ちょっと気になる問題点

譜面的にはこれでとりあえずなんとかなっていますが、いくつか問題があるのではないかと思います。
  • サスティンペダルのタイミングの問題でノートの終わりが次の音に少しかぶってしまう
    通常サスティンペダルは正確に次の音を鳴らすタイミングで離すわけではなく、少し遅らせて踏みます。次の音ぴったりを狙い、間違って早く離してしまうと音が途切れるリスクがあるためです。逆に少し遅らせると、ちょっとだけ音はかぶっているんですが、気付かない範囲に収めることは簡単です。
    このため、サスティンペダルを離すタイミングは次の音がなった少し後になっているため、そこまで前のノートが伸ばされてしまいます。
    スコアエディタでは「オーバーラップなし」になっていれば影響がなく問題は無いはずです。再生時の実音でも、サスティンペダルを踏んだときと同じ状態なのでこれも問題はないはずです。
  • ものすごく長いノートができてしまうことがある
    録音を繰り返す際にサスティンペダルを離す信号がない状態があったりすると、ずっと踏みっぱなしと判定されて、ものすごく長いノートができてしまうことがあります。譜面上おかしなことになるので、これは見つけて修正するしかありません。
  • 演奏情報が消えてしまう
    サスティンペダルの情報は消えてしまい、指を離したタイミングの情報も消えてしまうため、ピアノロールを見ても実際の演奏の状況はわからなくなってしまいます。
    なので、やはり、スコアエディタの設定でサスティンペダルを音の長さに反映するモードが必要なのではないかと思います。データは変えず、譜面上の解釈だけで解決できる問題だと思いますし。
でも、とりあえずリアルタイム入力で鍵盤の譜面を作る際には「サスティンペダルをノートの長さに変換」を使っていこうと思います。

2018年12月14日金曜日

PreSonus Studio 192 によるキューシステムの問題点

デジタルミキサーによるCUEシステム再考まとめ
オーディオインターフェイスによるCUEシステム再考まとめ

など、いろいろ考察した結果、PreSonus Studio 192 を買ったんですが、いじっているうちに一つ問題に気が付きました。

前提を知らない方にはちんぷんかんぷんな文章かもしれないので、ちょっと前置きを書きます。

Studio 192 をコントロールするにはいくつか方法があります。
UC-Surface と QMix-UC は Universal Control という PreSonus 独自の基盤ソフトを介してコントロールするアプリです。Universal Control はオーディオインターフェイスを使用する PC にインストールし、対応する PreSonus のオーディオインターフェイスのドライバ、ファームウェアも含まれています。PC へのネットワーク接続も Universal Control が提供しており、同じネットワーク内の UC-Surface QMix-UC から PC の Universal Control に接続し Studio 192 をコントロールする形になっています。

ここからが本題です。

Studio 192 を購入した目的の一つ、iPhone、Andloid スマホアプリ QMix-UC で各自のモニターミックスを自分で調整することができることは分かったんですが、これは PC を経由せずに Studio 192 内でミックスしてモニター出力するダイレクトモニタリングに限った話で、例えば Studio One でレコーディングしていたとしたら、レコーディング結果を聞きながら各自のモニターミックスをいじりたくなるかと思うんですが、それはできないらしいのです。

なぜなら、DAW からのオーディオ出力は各トラックごとに設定した出力先になっていて、各入力チャンネルに戻るわけではないからです。ダイレクトモニタリングは入力チャンネルからの信号をミックスして直接出力に出します。QMix-UC のミックスと DAW からのミックス出力は別個の話なのです。ダイレクトモニタリングのミックス結果と、Studio One のキューミックスの設定をリンクできれば良いんですが、それはできないようです。

そこで、Studio One からダイレクトモニタリングを利用できる Z-Mix 機能を試してみました。Z-Mix を使うと、入力からキューミックスへのダイレクトモニタリングも働いた上で、再生時の出力も各キューミックスの設定通りになりました。これで録音結果を聞きながら各自のモニターミックスをいじることができます。

Studio One でキューミックスの Z-Mix が有効(Z マークが青)になっている状態
が、Z-Mix を有効にすると UC-Surface と QMix-UC では Mixer Bypassed となってミックスをコントロールできなくなります。Studio One が Studio 192 の DSP ミキシングをコントロールするようになるためのようです。

Z-Mix 利用時の UC-Surface
Z-Mix 利用時の QMix-UC


Studio One Remote という Studio One をリモートコントロールする iPad アプリもあるので、そちらで Studio One のキューミックスをコントロールしようとしたところ、Studio One のコンソールよりキューミックスのコントロールはやりやすく、各キューミックスごとのミキサーコントロールが出てきました。これはかなり使えそうですが、残念ながら、iPad、Android タブレット、Windows タブレットのみ対応で、みんなが持ち歩くスマホではコントロールできません。

Studio One Remote でキューミックス HP1 を表示した状態

ちなみに、Studio 192 に付属の Studio One Artist は Studio One Remote に対応していません。Studio One Remote Support が別売り(¥1168)となっています。VST and AU and Rewire Support も別売り(¥9350)です。ブラックフライデーで半額になっていたので、私は全部入りの Professional にアップグレード(16,400円)してしまいました。もしかしたら Logic Pro X から移行する可能性もあるのでお試しです。

録音したものを聞きながら各自のモニターミックスを調整しようとしなければ QMix-UC が使えるのでスマホでコントロールできます。ただ、演奏時にしか調整できないので、演奏しながら気もそぞろにスマホをいじってモニターミックスを調整しなければいけません。各楽器のプレイヤーが手を離して止まりながらやることになるので、ちょっとうまくない流れのような気がします。

各自にタブレットを持ってきてもらい、Studio One Remote でキューミックスをいじってもらうのが現状のベストなのかもしれません。Studio One のキューミックスを各自でコントロールするための QMix-One とかスマホアプリで出してくれないかな…

2018年11月23日金曜日

オーディオインターフェイスによるCUEシステム再考まとめ



ここまで Twitter で書いて、詳細は書ききれないと思ったのでブログで書きます。
10万円以下でアナログイン8ch以上アウト8ch以上、といった感じの選抜です。
どれもオーディオインターフェイスは昨今のデジタルミキサーのような IP ネットワークによるリモートコントロールの方向には行っておらず、エンジニアが操作する形になりますが、CUE ミックス自体はどれでも作ることができ、出力をマルチヘッドホンアンプか、Behringer P2 などにつなげてイヤホンかヘッドホンに出力すれば、パーソナルモニタリングシステムができます。

ただし、PreSonus だけ、Studio 192 と USB 接続した PC 上の Universal Control を介して UC Surface や QMix-UC からのリモートコントロールが可能になるらしいです。これは要注目です。

Focusrite Scarlett 18i20 Gen 2


  • アナログイン8ch/アウト10ch
  • 2016年6月発売
  • 情報源: Scarlett 2nd Gen Focusrite Control ユーザーガイド
  • Focusrite Control ではアウトがステレオとしてまとめて扱える。
  • AUXバスにまとめるやり方ではなく、custom mix を出力チャンネルに対して設定できる形になっている。CUE ミックスを作る意味合いとしてはこの方がやりやすい。
  • エフェクトは DSP ではなくソフトウェアになるらしく、ダイレクトのモニタリングではエフェクトがかけられないらしい。

ROLAND OCTA-CAPTURE UA-1010

  • アナログイン8ch/アウト8ch
  • 2010年9月発売
  • 情報源: OCTA-CAPTURE (Ver.1.5) 取扱説明書
  • ダイレクトミキサー A、B、C、Dの出力を内部パッチベイを通して出力に割り当てるようになっている。こちらも CUE ミックスを作る上では AUX バスより分かりやすい。
  • ダイレクトミキサーにてリバーブのセンド・リターンがあり、モニターにリバーブのみかけられるらしい。

TASCAM Celesonic US-20x20


  • アナログイン10ch/アウト10ch
  • 2015年9月発売
  • 情報源: リファレンスマニュアル
  • AUXバスが4つあり OUTPUT SETTING タブの出力選択で AUX を選ぶ形になっている。一般的なミキサーの考え方だが、CUE ミックスを作るイメージではない。
  • プリ・ポストフェーダーを選べ、エフェクト後の音をモニターに返せる。

Steinberg UR824


  • アナログイン8ch/アウト8ch
  • 2011年11月発売
  • 情報源: UR824 Operation Manual
  • dspMixFx にて4つのステレオミックスを作れ、Output Routing にてミックスの割当を行うらしい。
  • UR シリーズ パーフェクトガイドにエフェクトをかけたモニター出力ができることを売り文句としている。

ZOOM UAC-8


  • アナログイン8ch/アウト10ch
  • 2015年5月発売
  • 情報源: UAC-8 MixEfx リファレンス・ガイド
  • MixEfx という専用ソフトにて各出力ごとのミックス設定ができる。
  • Output の段に EFX RETURN ノブがあり、ダイレクトモニタリング時にもエフェクトをかけられる様子。


  • アナログイン8ch/アウト10ch
  • 2015年2月発売
  • 情報源: TAC-8 MixEfx リファレンス・ガイド
  • MixEfx という専用ソフトにて各出力ごとのミックス設定ができる。
  • Output の段に EFX RETURN ノブがあり、ダイレクトモニタリング時にもエフェクトをかけられる様子。
  • 基本的に UAC-8 と同じ様子。USB3.0 か Thunderbolt2 かの違い。

PreSonus Studio 192


  • アナログイン8ch/アウト10ch
  • 2016年2月発売
  • 情報源: Studio 192オーナーズ・マニュアル(英語版)
  • Z-Mix コントロールで各出力へのミックスが作成できる模様。AUX バス的な操作になっている。
  • Fat Channel プラグインが Z-Mix に対してかけられるのでダイレクトモニタリング時にもエフェクトを掛けることができるらしい。
  • UC Surface によるリモートコントロールという謳い文句があるが、Will the Studio 192 work with an iPad? によると、Studio 192 を PC と接続し、その PC と同じネットワークにつながった iPad の UC Surface からコントロールできると書かれている。
  • ここの情報によると Universal Control というアプリがネットワークアクセスを提供するらしい。
  • これで QMix-UC で各 iPhone, Android スマホからミックスをコントロールできたらこれ以上無いかもしれない。

デジタルミキサーによるCUEシステム再考まとめ

2018年10月21日日曜日

ZOOM LiveTrak L-12 の5系統モニターは CUE ボックス代わりになる?

4年前に「バンド演奏のモニター問題」という投稿をしましたが、去年、ZOOM LiveTrak L-12 というデジタルミキサーが出ていることにいまさら気が付きました。これがなんと5系統のヘッドホンモニター出力を持ち、ミキサーのシーンの扱いのようにそれぞれのモニター出力のミキシングができるという、いわゆる CUE ボックスのような機能を持つものらしいのです。

藤本健の “DTMステーション”
こんなデジミキを待っていた!ZOOMのコンパクトな12chミキサー、LiveTrak L-12が万能で超便利!

モニター機能については軽めに触れられています。

DiGiRECO
ZOOM / LiveTrak L-12

モニター機能について多めに書かれています。メトロノーム機能も各モニターごとに音量設定できるとか。

Sound & Recording Magazine
「ZOOM LiveTrak L-12」製品レビュー:マルチトラック録音とオーディオI/O機能を持つ12chミキサー

「モニター音に内蔵エフェクトはかからない」という気になる情報が…ボーカルさんはリバーブがかかった音をモニターしたいはず…と思ったら「LIVETRAK L-12ファームウェア・アップデート」にて「エフェクト音をモニターアウトに返す機能」を追加、とのこと。これなら問題なさそう。

あとはミキサーからどうケーブルを伸ばしてみんなのヘッドホン、イヤホンにつなげるか、ですね。リハーサルスタジオならなんとかなるか…

このまま録音する場合は生ドラムの録音が問題になりますが、これも今は YAMAHA EAD10 という素晴らしいものがあるので、リハーサルスタジオの方でこういうモニターできるミキサーと EAD10 はレンタル器材としてリクエストしたい!

12CHデジタルミキサーで、USB 経由と SD カードにマルチ録音ができて、5人までの CUE ボックスができて6万円弱ならかなりお得。用途的には Roland HS-5 とガチンコかもしれません。いつの間にか JamHub は生産終了でフェードアウトしてるし…

これでなんとかみんな自分の音が聞こえるようにしてバンドの精度を上げていきたい…

2018年8月24日金曜日

canActivate で interval() は使えない

Angular6 で AuthGuard とか Resolve とか使い始めて RxJS6 にも慣れてきて面白くなってきて、AuthGuard の canActivate で timeout() 使ったらサーバへの問い合わせを定期的に行ってエラーが返ってきたときに画面遷移を行うってのができるのでは?と思ってググってもなかなか情報が見つからないので、とりあえずこんなふうに書いてみました。
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    return interval(10000)
      .pipe(
        mergeMap(() => {
          return this.httpClient.get('/isAuthorized')
            .pipe(
              map(response => {
                return response.authorized;
              })
            );
        })
      );
トランスパイルは通りました。が、一回しか HTTP アクセスが発生しません。
デバッガで canActivate() を出たあとを追ってみたところ…

pipe(first()) \(^o^)/オワタ

https://github.com/angular/angular/blob/master/packages/router/src/pre_activation.ts#L248
  private runCanActivate(future: ActivatedRouteSnapshot): Observable<boolean> {
    const canActivate = future.routeConfig ? future.routeConfig.canActivate : null;
    if (!canActivate || canActivate.length === 0) return of (true);
    const obs = from(canActivate).pipe(map((c: any) => {
      const guard = this.getToken(c, future);
      let observable: Observable<boolean>;
      if (guard.canActivate) {
        observable = wrapIntoObservable(guard.canActivate(future, this.future));
      } else {
        observable = wrapIntoObservable(guard(future, this.future));
      }
      return observable.pipe(first());
    }));
    return andObservables(obs);
  }
timeout() の Observable を返しても最初の1回目の Observable<boolean> しか使わない、ということですね。
まあ、Guard は Route の許可をするかどうかの位置にあるものなので、一度表示した Route を拒否することは想定していない実装ということではないかと思います。
おとなしくコンポーネント内で interval() 回して画面遷移させるようにします…
そうそう、interval() の unsubscribe() も忘れずに…

2018年6月7日木曜日

Workshy Get It On コード分析(メインのみ)




Spotify でかかってきてかなり気に入ったのでコードをとってみました。
すると、この柔らかくスムースな響きからは想像していなかったんですが、b9 b13 とかオルタードテンションが使われているコード進行のようです。

key=B で # が5個付くやつです。
1行目: 通常のコード
2行目: 度数表記
3行目: 度数でオンコードをテンションに直したコード
F#dim7 on G#  |  G#7 on C  |  C#m9  |  EM7 on F#  |  F#7 on C#  |  BM9
Vdim7 on VI  |  VI7 on I#  |  IIm9  |  IVM7 on V  |  V7 on II  |  IM9
VI7(b9 b13)  |  VI7 on I#  |  IIm9  |  V7sus4(9 13)  |  V7 on II  |  IM9
基本は VI II V I の循環で、VI -> II、V -> I のときにアプローチのパッシングコードがある感じです。後半の
IVM7 on V  |  V7 on II  |  IM9
はよく使うものだと思いますが、前半の
VI7(b9 b13)  |  VI7 on I#  |  IIm9
はこの曲の特徴の根幹のような感じです。VI7 の b9 は I に b13 は V に解決しつつベースは VI7 の3度に移動して柔らかさを維持しているようです。

コードもさることながら、メロディもちょっとコード分析を惑わすような内容でした。
なので、動画の方では1コーラスのメロディを入れています。

3小節目の VI7 on I# のところでコードトーンは III(E#) なのに、メロディは E# から E に上がって半音でぶつかっています。スケールトーンではあるんですが、長くいるのでコード的に変わってしまっている気もします。

5小節目の Vdim7 on VI のところでコードトーンは I#(B#=C) ですが、思いっきり C# を踏んでます。C# C B と半音で下がるメロディですが、こちらもスケールトーンではあるんですが、長くいるのでコード的に変わってしまっている気がします。

もしかしたらぶつかるときだけバッキングで調整をしているかもしれませんが、ぶつかっていてもそのまま気にしていない気もします。

こういうときどう考えればいいんですかね…聴感上気にならないレベルであれば OK というのは作る上ではいいとして、突き詰めた場合、プロの仕事などでは一般的には避けられているのか、それともなんらかの説明の付け方があって OK なのか…

この辺悩み続けている気がします。

2018年5月15日火曜日

7b5(13) コードのボイシング

思いついた曲のモチーフのコード進行が想定したイメージにたどり着けないまま数日経っていたんですが、なんとかたどり着けたので、今回考えたことのメモをしておきます。

Im11 IV7b5 II7(b9) V7(b9 b13)

でかなり近い所まで来ていたんですが、メロディは Im11 の 11th から IV7b5 の 13th で終わっているので、IV7b5 に 13th を入れようとしたのが苦労の始まり…
そのまま混ぜると 13th と 7th が半音でぶつかって聴感上もたぶん NG でした。なので 7th を抜いて IV6b5 としてみるとイメージから遠のいてしまう…これだと聴いた感じ #VIIb5 on IV で流れ的にも合っていません…

ルート自体変えて他のコードにしてみたり、メロディ自体を変えてみたり色々やってはみたものの、どうも元の状態の方が良かったのでもとに戻って調べなおしたり、いろいろ悩んだ結果、やっと見つけました。

何ということはない、単純に 13th を追加して IV7b5(13) で、ボイシングで 7th を 13th の1オクターブ下にするというものでした。要はボイシングの問題だったようです。

キー Dm での IV7b5, IV6b5, IV7b5(13) の聴き比べ動画です。メロディとコード進行のしっくり感では圧倒的に IV6b5 より IV7b5(13) ではないかと思います。7th はやはり必用で、13th と m7th は M7 の音程にした方がいい、と言うかしないとダメなコードに聴こえる、ということのようです。勉強になりました。ボイシング大事です。


最近このようなオルタードテンションを使ったコード進行に挑戦中で、その中で出てきたメロディ自体がこういうコードを示唆しているという事は、こういうコード進行が血肉になってきている気がして嬉しいです。

2018年4月28日土曜日

マイナーキーのダイアトニックコードのややこしさ

‪おととい思いついた曲がマイナーキーのダイアトニックコードのややこしさを教えてくれる感じでマイナーキーの経験不足を痛感しました…

ググったらこんなサイトが有りました。
マイナーのダイアトニック・コードとは?/初心者集まれ!指板図くんのギター・コード講座 第31回

要はナチュラルかハーモニックかメロディックかと言うアレですが、行ったり来たりするので聴いた感じ普通なのにややこしい…‬特に 9th の音が…
わかりやすいように Am キーに直すと、曲のメインのコード進行はこんな感じです。

| FM9 | FM9 | Em9 | Dsus4(9) D(9) |
| FM9 | FM9 | Em9 | Am9sus4 F#m7-5 |



そもそもこの進行が Am キーなのかどうかが自明ではないと思いますが、VI V I の逆進行で Am7 に解決しようとしているので、Am キーで多分間違いないと思います。動画の方では終止をわかりやすくするように2巡目の最後を Am7 にしてあります。

この循環ですが何がややこしいのかと言うと、F の音が Fm9 ではナチュラル、Em9, D ではシャープしているという点です。

上のサイトの話を勘案すると、

ナチュラルマイナースケール: FM9(9th の G がナチュラルなのでハーモニックではない)
メロディックマイナースケール: D(9)

Em9 はナチュラルマイナースケールになるんですが、問題は 9th の F# です。ナチュラルマイナースケールでは  F はシャープしないので、なんなのコレという状況です。

あまり今回のテーマとは関係ないですが F#m7-5 は FM9 に対する裏コード的なものかと思います。スケールとしては Em9 と同じでなんなのコレですが、A/F# という形でよく使われるコードで装飾的なコードなので色々あり得るしスルーします。

もしかして D メジャーキーに転調しちゃっているとか?と思ったら D(9) の時にスケール的に 7th が m7 の C なので D メジャーキーになっているわけでもなさそうです。
どう考えればいいんでしょうか…

と、ここで気が付いたのがドリアンモード。Aドリアンモードですねコレ。あまりに自然なので転調感なさすぎですが、微妙にドリアンモードの雰囲気を持ち込んでいると考えるとしっくり来そうです。

ご意見募集中です。

2016年11月1日火曜日

macOS Siera にアップデート後、ローカル Web サーバの UserDir にアクセスできない問題

おそらく macOS Siera にアップデートしてからだと思うけど、http://localhost/~user/ にアクセスできなくなっていることに気がついた。
/etc/apache2/httpd.conf で userdir_module が無効になっていたのでコメントアウトを解除。userdir で検索するといいです。

LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf

後もう一つ、/etc/apache2/users/ 以下の設定ファイルを読み込まない状態になっていたようなので /etc/apache2/httpd.conf の最後に以下の行を追加してアクセスできるようになった。

Include /etc/apache2/users/*.conf

設定後の再起動はこのコマンドです。

sudo apachectl restart

以前の設定ファイルはここに残っているようなので、前の設定を見たいときはこちらで。

/etc/apache2/httpd.conf~previous

2016年10月19日水曜日

TypeScript で外部ディレクトリの ts ファイルを参照すると参照先もコンパイルされて出力ディレクトリ構造が変わってしまう問題

Yeoman の angular --typescript 環境では初期状態で以下のようなディレクトリ構造になっている。

この状態で grunt serve すると .tmp 以下に ts ファイルがコンパイルされて以下のように展開される。

そして、自前のライブラリを利用しようとする場合、プロジェクトルートに lib を追加して利用すると仮定する。
#そもそもここが間違いかも?app/scripts 以下に lib を置けば特に問題はないかもしれない。だが、アプリ限定のライブラリでもないので納得行かない…ルートに置く場合の対応ということで。

app.ts に以下のように参照を記述する。
/// <reference path="../../lib/jimae/testlib.ts" />
すると、grunt serve で .tmp 以下がこのようにディレクトリ構造が変わってしまい、動作しなくなる。

scripts/app/scripts となってしまっている。要は参照先の testlib.ts もコンパイルし、出力するために参照している最上位のディレクトリ(../../)を出力の baseDir にしていると考えられる。
コンパイルオプションの noResolve なども試してみたが、これは参照自体が行われなくなり、コンパイルエラーになる。仕方がないので、testlib.ts の型定義ファイルを以下のコマンドで生成し、typings 以下に配置し、そちらを参照するようにして解決した。(ライブラリにメソッド追加などが行われた場合は型定義ファイルを更新する必要がある。自動化した方がいいかも?)
tsc --declaration --declarationDir typings/jimae lib/jimae/testlib.ts
ts ファイルと同じ場所に testlib.js も生成されてしまうが削除する。
app.ts の参照は以下のように生成された d.ts ファイルに変更する。
/// <reference path="../../typings/jimae/testlib.d.ts"/>
これで .tmp 以下のディレクトリ構造は元通りに戻る。
しかし、この状態では testlib.ts がコンパイルされず、実行時に参照できないので Grunt タスクに以下のように追加する。
typescript: {
  jimaelib: {
    src: ['lib/{,*/}*.ts'],
    dest: '.tmp/lib',
    options: {
      module: 'amd', //or commonjs
      target: 'es5', //or es3
      rootDir: 'lib',
      sourceMap: true,
      declaration: true
    }
  },
  base: {
これで grunt serve 時に以下のように出力されるようになる。 index.html からは ../lib/jimae/testlib.js で参照できるので追加する。
<!-- build:js scripts/lib.min.js -->
<script src="../lib/jimae/testlib.js"></script>
<!-- endbuild -->
#ちなみに grunt タスクの typescript:base で sourcemap となっている箇所は sourceMap にしないとソースマップが生成されない。雛形のミスと思われる。また、rootDir 指定をしないと lib/jimae が rootDir になり lib/testlib.js のように出力される。lib/jimae2 などに ts ファイルが有ると lib が rootDir になり lib/jimae/testlib.js のように出力される。tsc コマンドの仕様らしいが、出力されるディレクトリ構造が変わってしまうのでいただけない。rootDir 指定を必ずするようにした方が良いと思われる。そもそもの話、grunt-typescript は TypeScript 1.6.2 に依存しており、古い実装になっているので新しいもの(AngularJS1.5等)を扱う場合は grunt-ts に乗り換えた方が良いと思われる。
そもそもの話、ts ファイルの reference 先までコンパイル出力しようとするのが問題なので、以下のリンクのように、reference 指定で ts ファイルを型定義として読み込む設定ができればいいのだが、TypeScript2.0.3 でもまだこの機能はないらしい。
https://github.com/Microsoft/TypeScript/issues/1753 TypeScript も何かと面倒ですな… Yeoman の雛形ではなく IntelliJ に依存した方がいいかもしれない…

2016年8月4日木曜日

Windows 10 で Kohan Ahriman's Gift のプレイ動画を録るまで

こないだ Windows10 アップグレードの駆け込みで PC を組んで Windows10 をクリーンインストールしたんです。コンセプトは省電力で GeForce NVEnc で動画エンコードだったんですが、たまにやっていたレトロゲーム、Kohan Ahriman's Gift が動くかどうかも不安でした。Kohan Ahriman's Gift はとても面白いので、Steam で安く買えるし面白さを伝えるためにプレイ動画も録ってみたかったのもあり、PC プレイ動画キャプチャ・配信の決定版 NVIDIA ShadowPlay のテストをしてみました。

先に結果

問題なくプレイできるようになり、キャプチャも成功しました。

Steam と Kohan Ahriman's Gift のインストール

Steam はゲーム配信プラットフォームとして有名ですが、Kohan シリーズも扱っていて Kohan Ahriman's Gift 単品だと 980 円、Kohan シリーズ3作品セットの Kohan Warchest が 1980 円とお手頃かつ Windows7 まで動作保証をしているので、Steam 経由でプレイするのが鉄板かと思います。
問題はサポート対象になっていない Windows10 で動作するかどうかです。
まず、普通に Steam と Kohan Ahriman's Gift のインストールをします。プレイしてみると、一応動きますが、マウスクリックなどの操作を行うたびに 0.5 秒ほど固まり、使いものにならない状態でした。
Kohan Windows10 でググってみると、この掲示板のスレッドが見つかりました。この問題のことを lagging in game とか言っていますね。
なんだかファイルが配布されていてそれを設置すると解決するらしいのですが、すでにファイルのリンクが切れていました。それで困っている書き込みもあったのでよく読んでみると、最後の Homra さんの書き込みを見ると Steam と互換モードの設定だけでも対応できるっぽい。手順を書いてみます。

Kohan Ahriman's Gift の Windows10 上でのラグを取り除く設定

まず、Steam の設定で Kohan Ahriman's Gift の起動オプションに cooperative をセットします。Steam のゲームリストで Kohan Ahriman's Gift を右クリックしてプロパティを選択、「一般」タブにある「起動オプション設定」に「cooperative」と入れて OK を押します。

 この状態でプレイしようとすると、色が 16bit じゃないとダメだよと言われます。
GTX950 の環境では 32 bit Color しか設定できないようなので、Kohan Ahriman's Gift の実行ファイルの互換モードの設定をします。実行ファイルは先程のプロパティダイアログの「ローカルファイル」タブ「ローカルファイルを閲覧」ボタンで開けます。通常は
C:\Program Files (x86)\Steam\steamapps\common\Kohan Ahrimans Gift
にあるようです。
Kohan_AG.exe が対象の実行ファイルなので、右クリックでプロパティを開き、
互換タブで

  • 「互換モードでこのプログラムを実行する」にチェックを入れる
  • 「Windows XP (Service Pack 3)」を選択する
  • 「カラーモードを制限する」にチェックを入れる
  • 「16ビット(65536)カラー」を選択する

以上の設定をして OK を押します。
この状態で Steam でプレイを押すと、Windows10 の警告が出ます。これは今のところ回避できていません。
とりあえず毎回聞かれるので、「はい」を押しておきます。これで起動すると、マウスクリック時のラグは無くなります。やった!
GTX950 のビデオカードではフルスクリーン時に画面いっぱいに引き伸ばされてアスペクト比が狂ってしまい、うまく解決できなかったので、プレイ時には画面解像度を 1024x768 に変更してからプレイするようにしています。これも勝手に解像度変更して欲しいところですが…

NVIDIA ShadowPlay でプレイ動画キャプチャ

次は ShadowPlay で動画が録れるかテストです。
GeForce Experimence を起動して右上にある ShadowPlay ボタンを押して左側のスイッチを押して緑色に点灯させます。
ただ、GeForce Experimence には対応ゲームとして認識されないようなので、左の ShadowPlay タブで「デスクトップのキャプチャを許可」にチェックを入れ右下に録画状態のオーバーレイが表示されたら準備完了です。
Alt+F9 で録画開始、停止ができます。これで録ったのが冒頭の動画です。

プレイ動画の解説を少し…

ランダムマップ 1対4 のハードモード CPU 戦です。強い CPU を選んでだいたいこの設定で遊んでいますが、ほとんど負けます…この動画の時はそこそこうまく行っていますが、エリートアーチャーが間に合わず、怒涛の数の暴力を見ることができます。この状況を打破して相手を全滅させるのが面白いです。友人とネット経由で協力プレイして 2対4 でもよくやります。でも負けます…たまに勝てるのでバランスはいいんでしょう。
ぱっと見、分からないひとにはわからないと思うので簡単な解説を入れながらのプレイ動画などもいずれやってみたいと思っています。

2016年2月14日日曜日

YAMAHA MD-BT01 導入

最近は MIDI も Bluetooth の時代らしいです。そこで、気になっていた電子ピアノの稼働率の悪さを改善するため YAMAHA MD-BT01 を導入してみました。最近は PC と 鍵盤の接続は USB 接続が主流で MIDI 端子しかないとちょっと扱いづらいのです。USB MIDI アダプタもじゃまくさいですし…なので、MIDI 接続を Bluetooth でできるようにするアダプタ MD-BT01 です。電源は MIDI コネクタから供給されるらしく充電とかは必要ないです。
これで何に繋げるかというと、iOS デバイスと Mac OSX です。Windows はまだ Bluetooth MIDI(MIDI over Bluetooth LE)に正式対応しておらず、KORG が独自のドライバで microKEY Air を対応させているようです。Windows はもうちょっと待った方がいいかもです。
iOS に繋げる際は GarageBand や Korg Module などの設定で認識させます。普通に鳴らせますが、第3世代 iPad なのでそもそもソフトの発音遅れがひどい^^; ストリングスくらいならなんとか…
Mac OSX の場合はユーティリティに Audio MIDI 設定と言うアプリがあるので、そこで MIDI スタジオを開くと Bluetooth のブロックがあります。それをダブルクリックして設定に入ると認識させられます。めんどくさい…まだ出始めでこなれていない感じです。
Mac OSX で Logic に繋げてみると、ほとんど遅れを感じません。USB で接続している感覚と変わらず。これはいい!
reface DX にも繋げてみましたが直に MIDI 端子が無いのでブレイクアウトケーブル経由でそこはかとなく脱腸感…USB で繋げた方がいい場合もありそう…
iPhone, iPad の場合はコネクタが空くので充電しながら使えるので効果大きいです。スタジオ練習で USB ケーブル引き回すよりは Bluetooth もいいですね。Bluetooth MIDI のデバイスがたくさんあるとどうなっちゃうんだろう?
とりあえず電子ピアノを iOS, Mac の今の環境に参加させることができてよかった。これで利用率あげられる!
Quicco Sound の mi.1 という Bluetooth MIDI 黎明期から出始めた先発品があるんですが、こちらも性能は変わらない様子。小さいし安いしこちらも試してみたいです。

2015年12月17日木曜日

generator-angular 環境で grunt-connect-proxy がうまく動かない時

たまには技術的な備忘録も。

generator-angular@0.15.1 で AngularJS の雛形を作り、サーバアプリとの接続の口をプロキシするため grunt-connect-proxy を設定したところ、公式サイトに書かれている設定だけでは grunt serve 時にエラーが出ていた。

jit-grunt: Plugin for the "configureProxies" task not found.

ググってみたところ、こんな記事を見つけた。

https://github.com/drewzboto/grunt-connect-proxy/issues/56

jit-grunt がコンフィグ名をもとにしたプラグイン認識ができていないと言う事らしい。
記事の通り、Gruntfile.js 内の jit-grunt の設定に以下の行を追加して解決した。

configureProxies: 'grunt-connect-proxy'

めでたしめでたし

2015年5月21日木曜日

ミュージカル・ソウ(のこぎり楽器)購入の顛末

2015年4月23日木曜日

iPad に直接 PJB BIGHEAD の音を録音する

せっかく買ったポータブルベースヘッドホンアンプ(?)の PJB BIGHEAD(写真左下)ですが、iPad に直接繋いで動作できなかったため、iPad で作った曲にベースを録音するときは PC で録音して iPad に送るとか面倒な事をしていました。

Apogee JAM とか iPad に直接繋げるインターフェイスもあるけど、BIGHEAD はさすがにベース用だけあってベースらしい音になります。それを録りたい…

そして、もう一度なんとかならないか試してふと気付いた。
「接続中のアクセサリは消費電力が大きすぎます。」
電力さえ取らなければ使えるの?

調べると、同じエラーの出る機器を電源供給付き USB ハブを経由して使う方法があるようです。手持ちの充電用 USB ハブで試してみると…使えました!

最初、iPad から音が出なくなった、と思いましたが、BIGHEAD の方から出るようになってました^^; デジタル接続のポータブルアンプとしても使えるわけですね。USB ハブの AC アダプタがネックでポータブルにはならないですが^^;

これで楽しい録音タイムを過ごしました^^; やっぱりハンマリングやスライドなど簡単な演奏表現が入るだけでも自然でいいですね。打ち込みでは大変ですし。

でも、BIGHEAD はバッテリー内蔵で電源なしで動作するのに USB を繋げる時は必ず充電で電源を取ってしまうと言う… 電源を取らないモードが欲しい。そうすればはさむのはカメラコネクションキットのみで済むのに…そしたら iPhone でデジタル接続のポータブルアンプとしても使えるようになるし…