「おまえはアホか」をつくった
カラフル鍵盤をクリックすれば様々な音程で喋りますし、あなたのオペレーションを保存したり再生することも出来ますのでアホな友達にアホと伝えることができてとても便利。無料です。
おまアホサンプル
http://hotbros.herokuapp.com/300SpaV
http://hotbros.herokuapp.com/300klBYE
ソースコードとか
heroku + node.js/CoffeeScript + mongoDB という構成。
ソースコードはGitHubに置いた。
https://github.com/mohayonao/hotbros
サーバー、クライアントどちらもCoffeeScriptで書いて、それぞれJavaScriptにコンパイルして動かしている。wcオプションで自動コンパイルするようにすれば楽で良い。
$ coffee -wc app.coffee public/javascripts/main.coffee
ついでにサーバー側のスクリプトはnode-devで更新するたびに再起動するようにしておくと楽できる。
$ node-dev app.js
技術っぽいこと
・リアルタイムにAudioオブジェクトを作って再生
・事前に各音のwaveデータを用意しておいてfloatの配列で持っておく
・配列のインデックスを位相として捉えて位相の増分(配列をどう捜査するか)で音程を出す
・位相が2ずつ増えるなら元の音の1オクターブ高くなるし、0.5ずつ増えるなら1オクターブ低くなる
・1.5ずつ増えるなら5度上の音だし、0.75ずつ増えると4度下の音になる
・原音から離れるにつれて不自然さが大きくなる
・音程によって持続時間が異なることになるけど気にしない
・本当は配列の真ん中あたりをループするなりして長さを揃うようにするのがベター
参考にしたもの
node.jsのプログラムを自動で再起動してくれるnode-devコマンド
http://d.hatena.ne.jp/replication/20110224/1298474534
JavaScriptで音を鳴らす方法を3つほど
http://d.hatena.ne.jp/mohayonao/20110808/1312803835
おまえはアホか
http://fc2.in/s60195