JavaScript

JavaScriptの継承できるクラスの書き方

インスタンス変数を参照したいときは普通に this 、自クラスや親クラスのメソッドを呼び出したいときは $this を使う。 特殊なことはしていないんだけど、変数名を工夫したら何か分かりやすくなった。 // 継承関数 var extend = function(Klass, SuperKlass)…

JavaScriptでテンプレート文字列を作る

今つくっているプログラムで必要そうだったので書いた。 やりたいこと "$0...$1の年収、$2..?"みたいなテンプレートがあって、それに $0=うわっ, $1=私, $2=低すぎ を渡すと、「うわっ...私の年収、低すぎ..?」と変換したい。 案1: string.replace template …

BlobBuilder で 外部ファイルの要らない WebWorkers はつくれる

WebWorkersで別タブ選択中もきっちり動く無敵タイマーをつくる - つまみ食う http://d.hatena.ne.jp/mohayonao/20111108/1320756534 先日書いたこのエントリーで、別タブを選択したときも精度が落ちないタイマーを作った。 でも、外部ファイルが必要だったの…

WebWorkersで別タブ選択中もきっちり動く無敵タイマーをつくる

ずっと悩んでいたのだけど、僕の書いた簡単便利プレイヤーではブラウザの別タブを選択すると音が途切れまくって格好よくなるという問題があった。原因はわかっていて setInterval でタイマー処理していると、別タブ選択時に精度が非常に悪くなる。requestAni…

永久にバッハのインベンションを演奏するやつをつくった

Endless Invention http://mohayonao.herokuapp.com/invention 何かを自動生成するようなプログラムを書くときマルコフ連鎖を使いたくなることは多いと思う。で、それ自体はそんなに難しくないんだけど、大体微妙な感じに仕上がってしまうので、なかったこと…

JavaScriptでリアルタイムに音を出すときに簡単便利なやつつくった

先日作成した「関西電気保安協会リズムマシーン」と「ONE-LINER-ORCHESTRA」が Chrome, Safari *1 (Web Audio API) Firefox (Audio Data API) Opera (HTMLAudioElement) で使えるようになりました。 どちらも pico-player.js っていう拙作ライブラリを使って…

大量の風車みたいなインターフェイスのウェブ楽器をつくった

windmills http://mohayonao.herokuapp.com/windmills くるくる回っているやつをマウスオーバーすると回転速度が変わる スペースまたは左下の「Sound OFF」をクリックで音が鳴る/止まる (Chrome, Firefox) くるくる回っているやつのスピードで音が変わったり…

僕も「非常に短いコードから音楽を生成して再生するやつ」つくった

非常に短いコードから音楽を生成して再生するやつ - hitode909のダイアリー http://d.hatena.ne.jp/hitode909/20111024/1319204646 これを見て面白かったので僕もやってみた。 ONE-LINER-ORCHESTRA http://mohayonao.herokuapp.com/one-liner-orchestra 同じ…

JavaScriptでリアルタイムに音を鳴らす方法を3つほど

最近、JavaScriptで動くMMLシーケンサーを作っています。 pico http://pico-project.appspot.com/mml/ SiONのMMLをパク参考にしているので、MMLTalks(http://mmltalks.appspot.com/)あたりのMMLをコピペすると、それなりに鳴ってくれる場合があります。思い…

Audio Data APIを使ったMMLシーケンサー、マニュアルも書いた。

MMLを拡張しまくったので、その分のマニュアルも書いた。 MMLSequencer.js 音源は VCO - VCF - VCA のアナログシンセのモデルを採用していて、 オシレータが2基、LFOが1基、ADSRタイプのエンベロープが3基ある。 LFOやエンベロープはパッチコマンドで別のモ…

JavaScript + Audio Data API を使ってMMLシーケンサーを作った2

色々処理に無駄な部分があったので削りまくっていたら、余裕が出来たところに機能を追加していったら結構高機能なシーケンサーができた。 http://mohayonao.com/MMLSequencer/ 各トラックごとにオシレーター2基、エンベロープ3基、フィルター4種(のうち…

JavaScript(Audio Data API)でMMLシーケンサーを書いた

HTML5にはAudio要素って言うのがあって、プラグインを使わずに音声を扱うことができるのだけど、 FireFox4(ベータ版)にはさらに Audio Data API っていうのがあって、これを使うと音声データを生成することすらできる。 このあたりに解説がある https://wiki…

ロケタッチの「〜にタッチ」を「〜でタッチ」にすると卑猥に見える

なんかくだらなくてすみません。 javascript:void( function() { var elems = document.getElementsByTagName('span'); for (var i in elems) { if (elems[i].className == 'entry-content' && elems[i].innerHTML.indexOf('http://tou.ch') != -1) { elems[…

ブラウザ版世界地図時計をつくった

http://mohayonao.com/WorldMapClock/ どうみても魔封波です。 よく見ると短針の先、外側に日本があるのが分かると思います。 チームラボの 世界が一つの世界時計 ってのを見て、 針を増やさなくても、世界地図を丸くのばして時計の盤面に貼付けてみたら、い…

Canvas の サイズは2種類あるが、 excanvas のサイズは1種類しかない

ブラウザに図形を描画するのに Canvas というオブジェクトがある。 だけど IE は Canvas に対応していない、 代わりに Google 謹製の excanvas.js というJavaScriptライブラリを使っている。そのとき、サイズの扱いが違っていてちょっと困ったのでそのメモ。…

筆ドローイング

筆っぽいプログラムを作ったら、やっつけのわりに結構評判がよかった。 左クリック:黒、右クリック朱、F5:最初から 練習すればそれなりに上手くなる。 http://mohayonao.sakura.ne.jp/fude.html FireFox, Chrome: 対応 Safari: 左クリックのみ対応 IE: …

大阪府立図書館の蔵書から Amazon 検索

大阪府立図書館の蔵書検索の詳細画面から Amazon の商品ページに飛ぶ。 ISBN-13 から ISBN-10 への変換が必要になったり、必要なかったり、面倒くさかったんで、やはり雑。 javascript:void(function(){var isbn=function(){var x=document.getElementsByTag…

大阪府立図書館の蔵書を検索

Amazon で本をチェック → 大阪府立図書館の蔵書検索って作業をずっと手作業で行っていた。 最近図書館に行くことも多くなり、検索回数も増えているので、いいかげん面倒くさくなってブックマークレットを書いてみた。 かなり雑。 javascript:void(function()…

マルコフ連鎖

何かをしようとして作ったらしき、マルコフ連鎖のプログラムが見つかった。JavaScript で書いてある。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Malkov</title> </meta></head></html>

Mighty Mouse の調子が悪いので Greasemonkey

MacBook で使っている Mighty Mouse のスクロールボールの調子が悪い。 掃除(http://support.apple.com/kb/HT1537?viewlocale=ja_JP&locale=ja_JP) をしてみてもよくならない。このままではWEBサイトを見ているときに手軽にスクロールできなくて困るので、Gr…

JavaScriptで中置記法から後置記法(逆ポーランド表記法)への変換

昨日作った VBScript の JavaScript版。配列操作が組み込み関数で出来るので楽ちん。 ブラウザで表示させながら、逆ポーランド表記法がどんなもんか説明しようと思ったが、 はてなダイアリーでは JavaScript が使用できなかった。