Pure Data(2)
もういささか季節外れの感がするが、私はおでんが大好きである。日本酒と合わせると最高で ある。日本人に生まれて良かったなあと思うんだ。
で、おでんにゆで卵はかかせない。数個は女房が具として入れてくれるのだが、その卵の 表面が、誰かさんの顔のあばたか月面クレーターもどきなのは、ちょっと興ざめである。女房もその 事を以心伝心で汲み取ってくれていて、綺麗にたまごの殻をむけるようなグッズを試して みた(画鋲みたいなので、殻に穴を開けるやつ)ようであるが、どうも芳しくない。
そこで、綺麗にゆで卵の殻をむく方法を探してみて、依頼されましたよ。こういの、テレビ で絶対にやってそうだけど、見落としているのかな? とにかく調べてみましたよ。 そしたら、 瞬殺!ゆでたまご剥き こんなのが、Youtubeに上がっていた。ぽこっと卵が生まれる所を想像して、一人で笑って しまいましたよ。どうやら上げてくれた人は外人みたいだけど、発想が面白いな。
お次もYoutubeに上がっていたやつだけど、 ゆで卵の殻のむき方/料理の基本・調理の基本 というタイトルが付いていた。この分で行くと、いろいろなシリーズがありそうだな。じゃがいも の皮の綺麗な剥き方とか。。。
卵の殻剥きに話しを戻すと、茹で上がった卵を冷水で冷やしてから、ぐりぐりやってむく のが、一番素直そう。ええ、やってみましたよ。一個目は、力が強すぎて、卵の白身に ひびが入ってしまいました。二個目で、力加減を調整してみたら、綺麗にむけました。 あかちゃんの肌にように、つるつるになったんで、気持ちよかったぞ。是非お試しあれ。
それにしても、外人の発想は豊かだなあ。どこの人だろう? 豊かと言えば、この間 秋葉原の駅で、自動販売機のつり銭泥棒に注意しましょう、なんんてアナウンスを 聞いた時、思わずHackしてるね、と思いましたよ。
曰く、つり銭受けの所に、粘着テープを貼り付けておいて、そこにつり銭を粘着させちゃおう 、という方法みたい。この方法で、一日幾ら稼げるかは分からないけど、悪賢いやつは いるもんだな。
leiningen
暫く前の事になるけど、渋谷に行った時、leiningen なんて言うのを紹介された。 これって、clojure で、ごにょごにょやる時の便利ツールみたい。流行のフレームワーク かな。何が嬉しいかと言うと、clojureで自分が書いたコードどclojure本体及び clojure-contribを合体して、どこでも動くアプリ(jar file)が一発で作成出来る 事だ。
よく2chのlisp板あたりで、Lispで書いたコードをexeに出来ますか? って質問が あるけど、それのclojure版での回答になるな。Javaだから、Windowsでしか動きません なんて事も無いので、真剣にclojureしたい(公開)場合、頭の片隅に入れておくと いいだろう。
まずは、Railsならぬ、leiningen自身をインストールする。
$ wget http://github.com/technomancy/leiningen/raw/stable/bin/lein $ sudo install -m 755 lein /usr/local/bin/ $ lein self-install
私は、純正Javaが入っているArchLinuxで試してみた。clojure-1.1.0とその仲間が、 $HOME/.m2という所に格納されたよ。leiningen自身も、leiningen-1.1.0-standalone.jar として格納されている。デモも兼ねてますって事だな。こやつのファイルサイズが、8M超え とメタボだけど、Javaはみんなメタボだから、気にしちゃだめよ。 総本山は、ここね
leinと言うshellファイルが一応、司令塔になってる。使い方を問い合わせてみた。
[sakae@arch ~]$ lein help Leiningen is a build tool for Clojure. Several tasks are available: pom help upgrade install jar test deps uberjar clean compile version new Run lein help $TASK for details. See http://github.com/technomancy/leiningen as well.
何はなくとも、hellowworld なので、やってみる。
[sakae@arch work]$ lein new hellow Created new project in: hellow [sakae@arch work]$ cd hellow/ [sakae@arch hellow]$ emacs project.clj
hellowプロジェクトを作ると、hellow/が出来上がる。その中にひな型のproject.cljが あるので、ちと変更する。
(defproject hellow "1.0.0-SNAPSHOT" :description "FIXME: write" :dependencies [[org.clojure/clojure "1.1.0"] [org.clojure/clojure-contrib "1.1.0"]] :main hellow ) ;; <=================================== ADD
次に、コードを書く。ファイルは、src/hellow.clj
(ns hellow (:gen-class) ) (defn -main [& args] (println "Hello World!!") )
いきなり、輸出用の一式かかえこんだ版を作ってみる。
[sakae@arch hellow]$ mkdir lib [sakae@arch hellow]$ cp /usr/share/clojure/{clojure-1.1.0.jar,clojure-contrib-1.1.0.jar} lib/ [sakae@arch hellow]$ lein uberjar Compiling hellow Created /home/sakae/work/hellow/hellow.jar Including hellow.jar Including clojure-contrib-1.1.0.jar Including clojure-1.1.0.jar
上記で lib/ を作って、どこかからclojure関係者を持ってきているのは、いちいち ネットから御取り寄せを嫌ったためです。これらが用意出来れば、コマンド一発で hellowのコンパイルと 混ぜ合わせを、勝手にやってくれます。
[sakae@arch hellow]$ java -jar hellow-standalone.jar Hello World!! [sakae@arch hellow]$ ls -l hellow-standalone.jar -rw-r--r-- 1 sakae sakae 5209839 Mar 31 12:27 hellow-standalone.jar
出来上がったものを実行してみた。そのメタボっぷりを、特とご覧あれ。
電子工作
日経ソフトェアを買ってみた。楽しい電子工作なんて言うタイトルに引かれたからだ。 電子工作と言うより、組み込み技術者向けを狙ってませんか? 以前は、1000円持って いって余裕で買えたのに、今は買えなくなっている。雑誌も新聞と同じ運命だろうか?
で、今回取り上げてある石は初めて聞く メーカー だなあ。PICに変わる使いやすい石みたい。AVR系ですか。創業者はIntelに居て、飛び出して 会社を興したそうだ。そうだよなあ。いつまでもIntelにいたら、電卓の石しか作れん もんなあ。
それ違うよ。Intelの連中は、自分らでRISCを楽しみつつ、ユーザーには、そのRISC上で 動く仮想CPUを売りつけているんです。そのおかげで、ユーザーはいつも窮屈な思いを させられています。これからは、ATMELの石で伸び伸びしましょ。実験セットも5000円 以下で買えるようですから。
この記事の著者さんも、ソフト屋さんに電気を教えるの苦労してますね。オームの法則とか 、キルヒホッフの法則まで説明してるよ。キルヒホッフの法則と一口に言っても、 第一法則と第二法則の2つがある事は省略しちゃってますね。あと、電気をやるなら、 もう一つ、鳳-テブナンの定理を知っていれば、大抵の事は導出できるかな。おあがで、学生時代を 思い出しちゃいましたよ。
おいらの学生時代は、カタログ一つ手に入れるにも大変な苦労をしたな。メーカーに 苦学生です、是非カタログを送って下さいってお願いしたものだ。今は、 日本語マニュアル も公開されてて、容易に手に入る。
で、件のキットも使ってみたいんだけど、先にもっとお手軽なPureDataで、電子工作を 味わってみる。(そんじゃ、日経買った意味ないじゃんと言う声が聞こえてきそうだが、 Rubyでつぶやきとかもあったので、ま、いいか)(件記事繋がりで、うろうろしてたら Arduinoなんてのを発見、PureDataとも 繋がりがあるのね。面白いなあ。)
はて、工作は何をやる? 記事に習って、まずはピカピカだな。 千葉県の森田知事も、カジノ構想をぶち上げている昨今。カジノと言えばルーレットで しょうと短絡的に考えたおいらは、電子ルーレットもどきをやって みる事にしました。
PureDataに、LEDの代わりになりそうなオブジェクトは生憎用意されていない。しょうがない ので、v(h)radioで代用する事にした。HTMLのタグの一つであるradioと一緒で、選んだやつに 色が付く。どれも選ばれていないと言う設定が出来ればいいんだけど、その機能は無いので 諦めだ。
#N canvas 58 93 477 352 16; #X obj 42 33 hradio 15 1 0 8 empty rv empty 0 -8 0 10 -4160 -4032 -1 7; #X obj 26 33 vradio 15 1 0 8 empty fd empty 0 -8 0 10 -4160 -4032 -1 0; #X obj 26 154 hradio 15 1 1 8 empty fd empty 0 -8 0 10 -4160 -4032 -1 0; #X obj 147 49 vradio 15 1 0 8 empty rv empty 15 0 0 20 -64 -4096 -1 7; #X obj 287 221 - 7; #X obj 287 259 abs; #X obj 272 93 + 1; #X obj 223 185 mod 8; #X obj 224 298 s fd; #X obj 287 297 s rv; #X obj 223 93 f; #X obj 223 145 spigot; #X obj 223 47 metro 200; #X obj 221 11 bng 15 250 50 0 empty empty osc_run 17 7 0 10 -262144 -1 -1; #X obj 336 114 tgl 15 0 empty empty start/stop 17 7 0 10 -262144 -1 -1 0 1; #X connect 4 0 5 0; #X connect 5 0 9 0; #X connect 6 0 10 1; #X connect 7 0 4 0; #X connect 7 0 8 0; #X connect 10 0 6 0; #X connect 10 0 11 0; #X connect 11 0 7 0; #X connect 12 0 10 0; #X connect 13 0 12 0; #X connect 14 0 11 1;
v(h)radioへの接続は、空中配線と言うかステルス配線にしてみた。多用するとわけわかめ になる事は、長年の経験で身をもって苦労してるから程ほどに、しましょう。
使い方は、osc runで、発信器を動かしておいてから、start/stopのチェックボックスで コントロールするだけです。発信器を直接に起動/停止というのも出来るけど、発信器は 動かしたままの方が安定するんで、こうしています。ああ、これは、VFOとか作った時の 昔の経験ですから、直接PureDataとは関係ありません。
シンセサイザー
6300円 のセンセサイザーです。4月末から売り出すそうです。 KORG DS-10 PLUSこちらは、 もう売り出されています。遊ぶには良さそうですね。
PureDataで、どうやってシンセサイザーを作ればいいのだろう? 周波数減算方式? それとも加算方式? サンプリング方式? 音のプログラミングなんて本を開いて みるかな?
それとも、Help の所から参照出来るサンプルでも見るか。3.audio.examplesの中に ある、just.say.pdを実行してみた。面白い、お経を唱えているように聞こえるよ。 さて、どうやって発声?してるかだな。
pd freqってサブパッチだ。開いてみると、ゆらぎを持った2つの数値を作りだして いる。このうちの150-450という数値がメイン部で音声の元となる発信器に使われる。 右側の数字は、抑揚の制御に使うのか。結局これがフォルマントになるんだな。
メイン部の右側は、鋸歯状波を発生させて、それを元にして、AM変調を掛けているんだな。 この部分が声帯をシュミレートしてるのかな。よく、こんなの思いつくよね。
後もう一つ、面白そうなのが有ったよ、Single sideband modulation ハムの間では 通称、SSB。(Aka Frequency shifting)なんて言う注釈が有った。 確かにそうだよなあ。
こんなに簡単に 出来ちゃうんだ。hilbert変換(90度の位相シフター)した信号波に位相を90度ずらした搬送波を掛けてから差分を取る だけ。これで、信号波が周波数シフトする。信号波として鐘の音が使われていたけど、 遠くで聞く教会の鐘の音のように聞こえたよ。実世界でもSSBの変調環境が出来て いるって事だな。奥が深いな。
いろいろ試しているときりがないので、最後に 大OM(JA5FP)のページ を上げておこう。 負周波数と信号処理、なんて記事は最高!