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)のページ を上げておこう。 負周波数と信号処理、なんて記事は最高!