<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="http://d.hatena.ne.jp/amarui/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/amarui/rss">
<title>丸井綜研</title>
<link>http://d.hatena.ne.jp/amarui/</link>
<description>丸井綜研</description>

<dc:creator>amarui</dc:creator>
<dc:date>2012-05-29T09:16:50+09:00</dc:date>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://d.hatena.ne.jp/amarui/20120529/1338250386"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/amarui/20120525/1337922312"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/amarui/20120505/1336196908"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/amarui/20120411/1334136221"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/amarui/20120403/1333435921"/>
</rdf:Seq>
</items>
</channel>



<item rdf:about="http://d.hatena.ne.jp/amarui/20120529/1338250386">
<title>[Julia]モンテカルロ法で円周率の(並行)計算</title>
<link>http://d.hatena.ne.jp/amarui/20120529/1338250386</link>
<description> 先日Matlabで書いたものと同じアルゴリズムを、Juliaで並行計算できるようにしました。 tic() N = 1000000; K = 1000; est_pi_total = @parallel (+) for k=1:K x = rand(N); y = rand(N); 4*( sum(x.*x + y.*y &#60; 1) / N) end printf(&#34;K=%d N=%d ==&#62; pi=%f&#92;</description>

<content:encoded><![CDATA[
<div class="section">
<p>先日Matlabで書いたものと同じアルゴリズムを、Juliaで並行計算できるようにしました。</p>
<pre class="syntax-highlight">
tic()

N = 1000000;
K = 1000;
est_pi_total = @parallel (+) for k=1:K
  x = rand(N);
  y = rand(N);
  4*( sum(x.*x + y.*y &#60; 1) / N)
end
printf(&#34;K=%d N=%d ==&#62; pi=%f&#92;n&#34;, K, N, est_pi_total / K);

toc()
</pre>

<p>MacBook Pro 13 (Mid 2009)はコア数が2個なので、使用コアが1つの時と2つの時で比較してみました。まずは標準の1コア版。</p>
<pre>
$ julia
julia&#62; load(&#34;montecarlo_pi.jl&#34;)
K=1000 N=1000000 ==&#62; pi=3.141652
elapsed time: 54.607524156570435 seconds
</pre>

<p>そして「-j」オプションで使用するコアを2に指定します。</p>
<pre>
$ julia -p 2
julia&#62; load(&#34;montecarlo_pi.jl&#34;)
K=1000 N=1000000 ==&#62; pi=3.141499
elapsed time: 43.42981815338135 seconds
</pre>

<p>若干、速くなったかな。</p>
</div>
]]></content:encoded>
<dc:creator>amarui</dc:creator>
<dc:date>2012-05-29T09:13:06+09:00</dc:date>
<dc:subject>Julia</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/amarui/20120525/1337922312">
<title>[Matlab/Octave]モンテカルロ法で円周率の計算</title>
<link>http://d.hatena.ne.jp/amarui/20120525/1337922312</link>
<description> 今年度、Octaveで簡単な統計計算をする授業をやっているのですが、その中で大数の法則と中心極限定理の説明をするための一例として、モンテカルロ法で円周率を計算する練習問題を出題しました。 座標軸上(0,0)-(1,1)に1辺が長さ1の正方形があり、それに接するような原点を中</description>

<content:encoded><![CDATA[
<div class="section">
<p><a href="http://f.hatena.ne.jp/amarui/20120525140648" class="hatena-fotolife"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/a/amarui/20120525/20120525140648_120.jpg" alt="f:id:amarui:20120525140648p:image:medium:right" title="f:id:amarui:20120525140648p:image:medium:right" class="hatena-fotolife hatena-image-right"></a></p>
<p>今年度、Octaveで簡単な統計計算をする授業をやっているのですが、その中で<a href="http://ja.wikipedia.org/wiki/大数の法則">大数の法則</a>と<a href="http://ja.wikipedia.org/wiki/中心極限定理">中心極限定理</a>の説明をするための一例として、モンテカルロ法で円周率を計算する練習問題を出題しました。</p>
<p>座標軸上(0,0)-(1,1)に1辺が長さ1の正方形があり、それに接するような原点を中心とした半径1の円（の4分の1）を考えます。ランダムに点を落としたとき、原点からの距離が1より小さければ円内、距離が1より大きければ円外にあるとできるので、円内・円外の確率から面積を概算し、それをもとに円周率を求めるというもの。</p>
<p>ランダムに点を落とす数(N)と、その実験を何回繰り返すか(K)によって、大数の法則や中心極限定理がなんとなくわかるといいなぁ、という希望です。</p>
<p>以下がそのコード。</p>
<pre class="syntax-highlight">
tic<span class="synSpecial">;</span>

K = <span class="synConstant">1000</span><span class="synSpecial">;</span>
N = <span class="synConstant">100000</span><span class="synSpecial">;</span>
est_pi = <span class="synStatement">zeros</span>(K,<span class="synConstant">1</span>)<span class="synSpecial">;</span>

<span class="synStatement">for</span> k=<span class="synConstant">1</span>:K
  x = <span class="synStatement">rand</span>(N,<span class="synConstant">1</span>)<span class="synSpecial">;</span>
  y = <span class="synStatement">rand</span>(N,<span class="synConstant">1</span>)<span class="synSpecial">;</span>
  count = <span class="synStatement">sum</span>(x<span class="synStatement">.*</span>x <span class="synStatement">+</span> y<span class="synStatement">.*</span>y <span class="synStatement">&#60;</span> <span class="synConstant">1</span>)<span class="synSpecial">;</span>
  est_pi(k) = <span class="synConstant">4</span><span class="synStatement">*</span>(count <span class="synStatement">/</span> N)<span class="synSpecial">;</span>  
<span class="synStatement">end</span>
fprintf(<span class="synConstant">1</span>, <span class="synConstant">'K=%d N=%d ==&#62; pi=%f\n'</span>, K, N, <span class="synStatement">mean</span>(est_pi))<span class="synSpecial">;</span>

toc<span class="synSpecial">;</span>
</pre>

<p>試しにK=1000、N=1000000で計算したところ3.141577となりました。Matlab 2012aでの実行時間は42.26秒 (MacBook Pro 13, Mid 2009, 2.53GHz Core 2 Duo, 8GB RAM) でした。</p>
<p>こんどはJuliaで並列計算させてみようかな。</p>
</div>
]]></content:encoded>
<dc:creator>amarui</dc:creator>
<dc:date>2012-05-25T14:05:12+09:00</dc:date>
<dc:subject>Matlab/Octave</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/amarui/20120505/1336196908">
<title>[電脳]Windows 7のマウスホイールを上下逆に</title>
<link>http://d.hatena.ne.jp/amarui/20120505/1336196908</link>
<description> Mac OS X 10.7 Lionでは、これまでのマウスホイールとは上下逆方向の挙動をします。これまではスクロールバーを上下に動かすのと同様の方向でしたが、Lionからはそれが逆です。ウェブページを閲覧しているときに、ウィンドウからはみ出て下に隠れている部分を見たければ、ス</description>

<content:encoded><![CDATA[
<div class="section">
<p>Mac OS X 10.7 Lionでは、これまでのマウスホイールとは上下逆方向の挙動をします。これまではスクロールバーを上下に動かすのと同様の方向でしたが、Lionからはそれが逆です。ウェブページを閲覧しているときに、ウィンドウからはみ出て下に隠れている部分を見たければ、スクロールホイールを上向きに転がすことになります。</p>
<p>これは、ウェブページが巻物のように紙として印刷されていると考えると納得のいく操作です。もっと下のほうを読みたければ、紙をつまんで上にスライドさせればいいのです。すでにiPhoneやiPadではおなじみのスクロール方向だったので、徐々にiOSとOS Xを近づけようとするAppleにとっては一つのステップだったのでしょう。</p>
<p>ただ、そうなるとWindowsなどとの操作の不一致が気になります。可能なことならMac以外のマウスホイールも上下逆にしてしまいたくなります。</p>
<p>そこで<a href="http://superuser.com/questions/310681/inverting-direction-of-mouse-scroll-wheel">少し調べた</a>ところ、下記のレジストリの中をいじるとホイールの上下が変えられることがわかりました。</p>
<pre>
HKEY_LOCAL_MACHINE&#92;SYSTEM&#92;CurrentControlSet&#92;Enum&#92;HID&#92;xxxx&#92;yyyy&#92;Device Parameters
</pre>

<p>まずスタートメニューから「プログラムとファイルの検索」でregedit（レジストリエディタ）を起動します。接続されているマウスのIDなど（上記xxxxおよびyyyy部）はマウス・コントロールパネルから「ハードウェア」→「プロパティ」→「詳細」→「ハードウェアID」で確かめることができます。上記レジストリ中に「FlipFlopWheel」がありますので、デフォルトで0になっている値を1に設定することでホイールの上下が入れ替わります。その後、マウスを再接続するかシステムの再起動で設定が有効になります。</p>
<p>僕は接続されているすべてのマウスでの挙動を上下反転したかったので、全レジストリを「FlipFlopWheel」で検索して、すべて1に書き換えてしまいました。</p>
</div>
]]></content:encoded>
<dc:creator>amarui</dc:creator>
<dc:date>2012-05-05T14:48:28+09:00</dc:date>
<dc:subject>電脳</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/amarui/20120411/1334136221">
<title>[書評]Pd Recipe Book</title>
<link>http://d.hatena.ne.jp/amarui/20120411/1334136221</link>
<description> Max/MSPにしてもSuper ColliderにしてもC/C++を使うにしても、オーディオ・プログラミングの世界は書籍が圧倒的に少ないのが現状です。とくに入門書がない。ゲーム制作入門書のごく一部に「あらかじめ用意したWAVファイルを再生」くらいしか書かれておらず、肝心の音合成を</description>

<content:encoded><![CDATA[
<div class="section">
<p><a href="http://www.amazon.co.jp/gp/product/4861007801/ref=as_li_ss_il?ie=UTF8&tag=malmods-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4861007801"><img src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4861007801&MarketPlace=JP&ID=AsinImage&WS=1&tag=malmods-22&ServiceVersion=20070822" border="0"></a><img width="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=malmods-22&l=as2&o=9&a=4861007801" style="border:none !important; margin:0px !important;" height="1" border="0"></p>
<p>Max/MSPにしてもSuper ColliderにしてもC/C++を使うにしても、オーディオ・プログラミングの世界は書籍が圧倒的に少ないのが現状です。とくに入門書がない。ゲーム制作入門書のごく一部に「あらかじめ用意したWAVファイルを再生」くらいしか書かれておらず、肝心の音合成をどうやればいいのかは書かれていません。洋書でもこれは！と思う本に出会えることはなかなかありません。入門書とは言い難いですが、ときおり『<a href="http://www.amazon.co.jp/gp/product/4877832076/ref=as_li_ss_tl?ie=UTF8&tag=malmods-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4877832076">WAVプログラミング</a><img width="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=malmods-22&l=as2&o=9&a=4877832076" style="border:none !important; margin:0px !important;" height="1" border="0">』や『<a href="http://www.amazon.co.jp/gp/product/4797355158/ref=as_li_ss_tl?ie=UTF8&tag=malmods-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4797355158">iPhone Core Audioプログラミング</a><img width="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=malmods-22&l=as2&o=9&a=4797355158" style="border:none !important; margin:0px !important;" height="1" border="0">』といった内容の濃い書籍が出版されていますので、オーディオ・プログラミングをやりたい人は、そういった中〜上級者向けの書籍をじっくり読み、試行錯誤を繰り返してなんとかモノにする、というのが現状です。</p>
<p>まったくプログラミング経験のない人が「オーディオ・プログラミングをはじめてみたい」と思ったとき、C++やJavaを勉強した上でオーディオ特有のテクニックを勉強して、というのはハードルが高く挫折は必至です。比較的とっつきやすい<a href="http://cycling74.com/products/max/">Max</a>を使うという手も考えられますが、有料なので気軽に始めるのには難があります。無料の<a href="http://puredata.info/">Pure Data</a>はヘルプなどがすべて英語なので、こちらもハードルが高め。</p>
<p>そんな手詰まり感のあったところに、松村誠一郎著『<a href="http://www.amazon.co.jp/gp/product/4861007801/ref=as_li_ss_tl?ie=UTF8&tag=malmods-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4861007801">Pd Recipe Book</a><img width="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=malmods-22&l=as2&o=9&a=4861007801" style="border:none !important; margin:0px !important;" height="1" border="0">』が出版されました。PureDataを用いてリズムマシン、シンセサイザー、インタラクティブ・システムなどを制作することで、オーディオ・プログラミングの入り口に立てるようになるという書籍です。この書のメインである第4章のシンセサイザー制作から第5章のグラニュラー・シンセまでは個人的にかなり楽しめました。サイン波の合成から矩形波・鋸歯波、そしてウェーブ・テーブルにFM音源にグラニュラー・シンセ。理論の話も数式も出てこないので、音合成を試しながら理解できる、中高生にもおすすめできる本になっています。</p>
<p>この本でPureDataプログラミングが面白くなってきたら、次は洋書で難しめだけどAndy Farnell著『<a href="http://www.amazon.co.jp/gp/product/0262014416/ref=as_li_ss_tl?ie=UTF8&tag=malmods-22&linkCode=as2&camp=247&creative=7399&creativeASIN=0262014416">Designing Sound</a><img width="1" alt="" src="http://www.assoc-amazon.jp/e/ir?t=malmods-22&l=as2&o=9&a=0262014416" style="border:none !important; margin:0px !important;" height="1" border="0">』とか、いいかもしれません。そしてC++を勉強してPureDataのexternalとか書くと、より広くて深いオーディオ・プログラミングの世界に旅立てそうです。そのためにも、まずは松村本で第一歩。</p>
</div>
]]></content:encoded>
<dc:creator>amarui</dc:creator>
<dc:date>2012-04-11T18:23:41+09:00</dc:date>
<dc:subject>書評</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/amarui/20120403/1333435921">
<title>[音]Ambisonicsのフォーマット変換</title>
<link>http://d.hatena.ne.jp/amarui/20120403/1333435921</link>
<description> AmbisonicsのA-FormatからB-Formatに変換するMatlab/Octaveプログラムをつくろうと思ったら、あまりにあっけなかったのでここに載せておきます。 function [W,X,Y,Z] = ambisonicsABconversion(LFU, RFD, RBU, LBD) % Ambisonics Format-A to Format-B Conversion W = LFU +</description>

<content:encoded><![CDATA[
<div class="section">
<p>AmbisonicsのA-FormatからB-Formatに変換するMatlab/Octaveプログラムをつくろうと思ったら、あまりにあっけなかったのでここに載せておきます。</p>
<pre class="syntax-highlight">
<span class="synIdentifier">function</span> <span class="synIdentifier">[</span>W,X,Y,Z<span class="synIdentifier">]</span> = ambisonicsABconversion(LFU, RFD, RBU, LBD)
<span class="synComment">% Ambisonics Format-A to Format-B Conversion</span>
W = LFU <span class="synStatement">+</span> RFD <span class="synStatement">+</span> RBU <span class="synStatement">+</span> LBD<span class="synSpecial">;</span>
X = LFU <span class="synStatement">+</span> RFD <span class="synStatement">-</span> RBU <span class="synStatement">-</span> LBD<span class="synSpecial">;</span>
Y = LFU <span class="synStatement">-</span> RFD <span class="synStatement">-</span> RBU <span class="synStatement">+</span> LBD<span class="synSpecial">;</span>
Z = LFU <span class="synStatement">-</span> RFD <span class="synStatement">+</span> RBU <span class="synStatement">-</span> LBD<span class="synSpecial">;</span>
</pre>

<p>上記プログラムではマトリックス部分しか書いていませんが、他にもマイクの応答をあわせたりする必要があります。<a href="http://kokkinizita.linuxaudio.org/papers/tetraproc.pdf">Fons Adriaensenによる文献</a>にコンパクトにまとまっています。</p>
</div>
]]></content:encoded>
<dc:creator>amarui</dc:creator>
<dc:date>2012-04-03T15:52:01+09:00</dc:date>
<dc:subject>音</dc:subject>
</item>
</rdf:RDF>

