読者です 読者をやめる 読者になる 読者になる

新・日々の暮らしに疲れてない?

一人バンド、火頭工房

Chrome拡張機能「タブショートカット」を公開。

どうも、火頭です。

 

ローム拡張機能「タブショートカット」を公開しました。

 

機能1. 左クリック長押しでリンクを新規タブで開きます。

機能2. 右ダブルクリックでタブを閉じます。

 

chrome.google.com

 

中々便利な機能ですので、使ってみてください。

 

注意1.  特定のボタン(例えばこのブログの記事を更新するボタン)が押せくなるバグが確認されました。クリック動作のキャンセル処理が邪魔をしていた模様。修正済みですが、もし似た症状が出た時はこの機能が悪さをしている可能性があります。その場合エクステンションを開いて機能をオフにしてください。

 

注意2.  どの拡張機能もだいたいそうですが、ページが読み込まれていない状態では作動しません。

Chrome拡張機能 左クリック長押しでページを新タブで開くショートカット機能 続き。

Chrome拡張機能 左クリック長押しでページを新タブで開くショートカット機能 の追記、改善し快適に動作するようになりました。

 

まずsetTimeout関数が作動しない問題について。

これは私の勘違いで、作動していないのはdocument.onmousedownイベントの方でした。これがあるサイトのある要素ではなぜか作動しません、最後までこの原因は不明、onmouseupやonmouseoverは作動するのに謎すぎ。

 

解決策として、作動が確認できていたonmouseoverイベントにてURLを取得、同時に「そのURLを持つ要素」に対してonmousedownイベントを取り付け、作動するよう仕組みました。onmouseoverイベントは発火しまくるのであまり好きではないのですが仕方ありません、原因がわかったら直します。

 

次、新タブに勝手に注目してしまう問題。

大幅にメスを入れました。chrome.tabsやchrome.windowsといったAPIを使えばタブを新規作成したりページを開いたりできます、ここでfocusを指定でき、これによりタブ移動を制御できました。あまり期待していなかったので、成功した時はかなり嬉しかったです。このAPIを使う方法は当初のやり方よりかなり面倒なのを知っていたので、決意するまで腰が重かったです。

 

あと、新タブ問題を制御できたということで次の課題。

長押しで新タブでページを開いた後、マウスボタンを離すとクリックイベントが発火してしまい、元タブの方でもリンクを開いてしまう問題。

 

ま、そうなるわな。関数のどこかでマウスクリックを preventDefault() などでキャンセルし、ボタンを離しても何も起こらないように、かつonmouseup時にクリック機能を復活させるため document.onclick = " "; これで戻りました。

 

一応これで完了。

どうしても作動させられないのは、iframe(まとめサイトとかで記事のタイトルがズラーって並んでる小窓みたいなアレです)の中のリンク取得や、サムネイルを自動で一覧表示しているようなサイトの場合。これらはウェブセキュリティ的にJavaScriptからリンクの取得ができないようになっていますので、無理。

 

この拡張機能、しばらくテストを重ね、問題なければ公開します。

でも作動する場合としない場合があるっていうのはちょっとなぁ...。

 

↓公開しました。

chrome.google.com

Chrome拡張機能 左クリック長押しでページを新タブで開くショートカット機能

どうも。火頭です。

仕事終わり夜のひととき、ネットサーフィンを楽しむ僕は以下の画像のような感じです。

f:id:hiatama:20161222225634p:plain

大抵はこの態勢で右手だけを動かしてページを閲覧していまして、タイピングする時はこの半身の状態からめんどくさそうに左手を伸ばして行います。

 

ロームの素晴らしい機能の一つに「コントロールキー + リンククリック」がありますよね、ページを新しいタブで開いてくれる神機能です。そうです、このコントロールキーを押すときにも私は半身の状態からめんどくさそうに左手を...

 

そこでクローム拡張機能として、マウスクリックの長押しで同じ機能を実装しようとしました。

 

 結果  一歩足りず

 

なんとクロームのポリシーだかのせいで、思うような機能には一歩及びませんでした。

※追記もありますので、改善した話も合わせてどうぞ。

 

 

処理の概要は以下↓

 

リンクを左クリック長押し → 

フラグが立ちタイマー機能が作動 → 

一定時間が経つと条件成立、onmousedownイベントからURLを取得 → window.open(取得したURL, '_blank')で新しいタブでページを開く → 

右手だけで行えてこりゃハッピー チヒッ

 

以上です。

 

問題は新しくタブを開いた時、元のページを離れ自動で新しいタブの方を注目してしまうんです。これをコントロールするために、任意のタブに注目する focus() や注目を外す blur() というメソッドがあるんですが...これがクロームのポリシーだかで無効なんです、直してくれないかなぁ。

 

ということで、長押しすればちゃんと新タブでページを開いてくれるんですが、元のタブを離れてしまうので、戻るために余計なクリックをしなければなりません。普段行っている、気になるページを新タブで開きまくって後で順に閲覧する、という行為が余計めんどくさくなったような...

 

さらに、あるサイトでは長押し判定のタイマーとして使っているsetTimeout関数が作動しないっぽい。私が別で使っている広告表示を制御する拡張機能(ソースのロードをブロックする?)などと干渉しているのか?など悩みましたが、原因は特定できず。うまくいかないもんです。 

 

次、改善した話 へと続く。

楽曲「Woods of Ashes」を公開。

楽曲「Woods of Ashes」を公開しました。

 

結構前に作った曲で、歌入れというか声入れ(?)をしていなかったので、インスト状態になっていたのですが、こないだ完成させました。

 

というわけで私の肉声です。加工しまくって魔女声になっていますけど。

イィーヒッヒッヒ!!!

 

soundcloud.com

 

Woods of Ashes

 

dim light, to your right
where things fade away
It touched your soul, and my soul
correct me, all wrong doings

 

give away all your secrets
taste of true goodness
over head, nothing sees us
all is here, meet me in

 

woods of ashes
meet me in this

woods of ashes
it's time to fade


did you, see what's there?
the ones shape the words
going through valley of damned
when stars fall, count me in

 

woods of ashes
meet me in this

woods of ashes
it's time to fade

Web Audio API のfilterの扱いが意外と繊細だったことについて。

どうも火頭です。

記事のタイトルは少しラノベを意識してみましたがいかがでしょう?

 

自分のサイト こちら で自作の音楽を聴けるようにしていまして、これはWeb Audio APIという技術を使って楽曲を再生させています。比較的新しい技術なので、ブラウザの更新に伴いバグが出たりするのでたまに動作確認をするのですが、久しぶりにバグに出くわしました、というお話。

 

楽曲の再生途中で「音がばらばらと崩壊する」とでも言いましょうか、ジジジ...と急に音が消え始め、しばらくして音量が0になる、みたいな感じ。タイミングがまともではないので、あーバグだな、と思いました。

 

元のmp3ファイルが破損しているのかな?と思ったのですが、再生してみても異常なし。ローパスフィルターをいじったらバグが出るので、どうやら原因はフィルターにあり。

 

var default_frequency = 44100;

var new_frequency = 400;

 

filter.frequency.value = new_frequency;

 

こんな感じで変数で代入してるのがダメなんかなーとか、不毛な試行錯誤をした結果...

 

var default_frequency = 44100; ←こいつがダメだったようです。

 

数字を20000とかキリの良いものに変えたら治りました。なんじゃそりゃ!

 

正確には、元が44100だったかなんだか忘れましたが、とにかく指定する周波数が問題だったようです。わけがわからん。

 

最後に言いたいことは、私のサイトで音楽聴いてね、ということです。YouTubeとかSoundCloudにはない素敵な機能を備えてるんだからー。

 

おわり

楽曲「Happy Herring」を公開。

新曲「Happy Herring」を公開しました。

海の中って神秘的ですよね。

息が続かないのであまり潜りたくありませんが。

 

soundcloud.com

 

動画はこちら↓

youtube

Happy herring, through man's net

Happy herring, off you go

Swim well, swim well

楽曲「Southern Heat, Lazy Mood」を公開。

インストを1曲公開しました。

最近はもう寒いですが、暑い時期にはよく南米の音楽を聴いていました。

 

バキバキのプロの音楽ではなく、街中でよくわからん団体が演奏しているようなのが好きで、よくわからない複雑なリズムに「これどうなってんのかなぁ...?」と普通の感想を抱いたり。

 

そんなことを思い出しながら、リズムトラックを打ち込み、ギターを重ね、シンセを重ね。

 

インストは一人で完結する分、作るのが速くて良いです(出来はともかく)。

 

soundcloud.com