2014年4月26日土曜日

電子オカリナの製作 ─ iPhoneアプリでシミュレーション

RaspberryPiで何かを作るためには、プログラムを作って、RaspberryPi上で動作させねばなりません。
今回は、私独自のプログラム開発環境についてちょっと紹介しましょう。


通常ARMボード上でプログラム開発をする際は、ホストコンピュータにARMボードをマウントして、クロスコンパイルしボード上に実行ファイルを転送して動作チェックを行ないます。
当初私もその環境を構築しようとしたのですが、Linux関係の知識も乏しく、ホストがMacでうまくマウント出来なくて、いろいろ苦労はしたのですが、結局断念してしまいました。

そこで編み出したのは、Xcode上でiPhoneアプリとしてiPhone上でシミュレーション動作させて基本的なデバッグを済ませ、そのプログラムをGithubを中継させて、RaspberryPiに転送し、RaspberryPi上でコンパイル、実行させるという方法です。

Xcode上の開発は例えば以下のような感じです。

上の図は、XcodeでiPhoneの画面を設計しているところですが、この環境の中でプログラムを書き、コンパイルし、手元のiPhoneにプログラムを転送して動作させます。

ここで動作させたプログラムは、何とGithubを介してRaspberryPiに送ります。
この辺りは、もうちょっと何とかならないかというツッコミはたくさんありそうですが、MacからGithubにpushするのも、RaspberryPi上でGithubからpullするのも比較的簡単に出来るので、結局こんな形に陥ってしまいました。
なので、プログラム開発中は、すごいサイクルでpush, pullが回っていたりします。

GithubはWeb上でソースコードを管理するためのツールで、以下のようなページです。

完全にオープンにしてますので、興味のある方はご覧下さい。
場所はコチラ→ https://github.com/hasebems/Musical_Sound_Generator_Framework

上記の方法の最大の欠点は、RaspberryPiでしか動かないプログラムがデバッグ出来ないこと。
そりゃ環境が違うので、どうしてもiPhone上だけでしか動かないプログラムと、RaspberryPi上だけでしか動かないプログラムが出てくるのは当たり前。
Xcode上でRaspberryPi用のプログラムを書いてもコンパイルさえ通せないので、Githubを介して送った後、RaspberryPiでコンパイルするまでコンパイルエラーが分かりません。
もう、RaspberryPi用のプログラムは、push時のコメントとかもかなり悲惨ですので、この辺はあまり見ないでください。

あともう一つ、CPUの性能がかなり違うので、iPhone上で動いても、RaspberryPiではうまく動かないということも起こります。
その場合、結局はGithubで送ってRaspberryPiで動かしてみるまでは、修正した結果は分かりません。

私自身は、きれいな環境にあまりこだわらず、動けばいいやという感じでやってしまっているので、今のところこんな方法でやっています。
とは言え,洗練された環境の方が効率も良いですから、もっと詳しい方で適切なアドバイスを頂けると大変助かります。

2014年4月18日金曜日

ビッグの終焉

Kindle版で読みました。
もちろん、Kindleのハードを持っているわけでなく、読んだのはiPhoneやiPad上です。
iPhone上で読むのは、画面が小さ過ぎてややつらいものの、この本の内容の面白さに、ページをめくる指が止まりませんでした。
自分の気に入った本だと、やっぱり物理本のほうが良かったかも・・・

さて、なぜそんなに気に入った本だったかというと、それはやはり自分の興味を持っていることにストレートに答えてくれている内容だからでしょう。

これまでもこのブログで書いてきたように、時代が大きく変わりつつあり、大きな組織より、個人が活躍する時代になるだろうと私は言い続けてきました。
もちろん、私などが言うまでもなく、こういった言説は至る所で語られているわけですが、こうやっていろいろな事例がまとまって書いてあるとその説得力は数倍になります。

この本で語られる「終わりになるだろうビッグ」は、次のようなものです。
報道機関、政党や選挙、エンターテインメント、政府、軍隊、教育や権威、会社。
いずれも今の時代、大きな組織として君臨しているものですが、それらは今後規模が縮小し、個人に負け始めるという現象が起きるだろうと予想しているのです。

しかし、本書の面白いところはビッグが終焉を迎える、ということだけでなく、それによる負の側面もきっちりと描いているという点です。
例えば、エンタテインメントの世界において、音楽アーティストは自力で音楽を発信することが可能になり、また作家は自力で本を出版することも可能になりました。今まで彼らを支えていたレコード会社や出版社といったビッグな組織が非情に厳しい状況に陥っている半面、音楽はAppleがiTuneで抑えてしまったり、本はAmazonが抑えてしまったりしています。つまりビッグよりさらに大きなビッグの台頭を許してしまっているのです。

AppleやAmazonはプラットフォーム側にいるということを強く意識して行動しているので、私たちは彼らが重要なプラットフォーマーになっていることをあまり認識していません。
確かにアーティストも、それを享受するファンにも良い時代にはなったのですが、莫大な利益が実はプラットフォーマーに落ちており、彼らの気持ち一つで市場のルールは簡単に変えられます。しかし、それはあまり好ましいものではありません。

それから、教育や会社については、今後ますます個人が活躍するようになると、間違った言説や品質の悪いものが世に流通してしまうという問題が生じます。
大きな組織だったからこそ、品質とか、内容の正しさとか、ある種の倫理観にそって個々人が行動できていたのですが、そういうタガが外れると、巷には面白いかもしれないけれど粗悪なものが蔓延する可能性があります。

それがどのように解決されるかはまだ著者にも私にも分かりません。
しかし、大きな組織が崩壊し、個々人は頑張れば報われるような社会こそ、私たちにとって理想なのであり、そういう価値観が社会に浸透するまでの期間、自分はどのような行動を取れば良いのだろうと考えさせられる一冊でもありました。。

2014年4月12日土曜日

電子オカリナの製作 ─3D CADに挑戦

メイカーズムーブメントの象徴といえば3Dプリンタ。
どんどん性能が向上しており、個人で十分手の届く範囲の値段になってきています。

私もオリジナルでオカリナを作るのであれば、3Dプリンタを使って好きな形でモノを作りたいと当初から思っていました。
とは言え、まだ自分自身が3Dプリンタを買って出力するには、使いこなすスキルも無いし、プリンタをおく場所もありません。
それに、まずは3Dで出力するためのデータを作る必要があります。そのためのソフトである3D CADを使いこなすこと自体、私には経験の無いことでした。

いろいろと調べた結果、私が選んだ3D CADはAutodesk 123D designというフリーのソフトです。サイトはコチラ

また、これを使いこなすために以下の本を買って参考にしました。初めて3D CADに挑戦するにはちょうど良いくらいの内容でした。これはおススメ。



このソフトを使って自分で作ってみたデータは例えば、以下のようなものです。


他のCADを使ってないので比較は出来ませんが、トラックパッドなどで自由自在に見る角度を変更でき、その質感を視覚的に把握できることに感動。
会社でもCADで筐体設計をしている人たちの仕事をちょっと覗いたことがありますが、それが自分でも操作出来るようになったと思えたことがとても嬉しかったです。
単純に何かモノを作る喜びを楽しめるソフトだと感じました。

とはいえ、なかなか思った通りのことをやるためには頭を使います。
特に気を使うのは寸法の数値。最初は適当にマウスでドラッグして「このくらいかな〜」とかやっていたのですが、だんだんそれでは収拾がつかなくなってきて、全ての大きさの処理に数値を入れるようになってきました。

自分で意識して数値を入れていかないと、後で連結したり削ったり変形したりするときに自由に制御が効きません。CADを使うということは、各サイズの寸法をきちんと制御することでもあると感じました。

まだ可動部分とか、合体機構とか、接合方法とか、触れば触るほど奥深い世界が待っています。
基本、ソフト屋なのでそれほどのめり込むつもりもないけれど、ちょっとしたデータを作って3Dプリンタで出力出来るくらいのスキルがあるととても便利だなとは感じています。


2014年4月5日土曜日

電子オカリナの製作 ─ オリジナル運指

電子オカリナを作る際にまず考える必要があるのは、音程指示のためのスイッチの配置です。
手元に本物のオカリナがありますが、左右両手の指10本分の穴があります。
もちろん、この穴と同じだけの数のスイッチを、同じ位置に配置すれば、既存のオカリナと全く同じ操作で演奏することが可能となります。

しかし、電子オカリナを作ろうとした当初より、本物のオカリナと同じ運指で演奏させようとは私は考えませんでした。それは以下の理由によります。
1.そもそも自分がオカリナがうまく吹けないのは、十本の指を自由自在に動かすのが難しかったため。(小指が動かない)
2.周りでオカリナを吹いている人は多くないから、生のオカリナと同じ運指だから得をする人は少ないと思われる。
3.オカリナの代替を目指しているわけではなく、今までに無い新しい楽器であることを目指しているから運指は独自で構わない。

ということで私は、片手3本、計6本指のみで演奏出来る運指を独自に考えてみることにしました。


まず6つのスイッチの使い道ですが、以下のように決めました。


ドからシまでの音程指定は右手の3本指で行ないます。2の3乗は8だから、ド〜シの音程指定は可能です。
左手は、人差し指がオクターブ指定、中指が#とbの切り替え、そして薬指がクロマティック(半音)指定です。中指と薬指の組み合わせで半音上がるか、半音下がるかの指定を行ないます。
ポイントは、ドのシャープ(#)とレのフラット(b)は別々に指定出来るという点です。これは後々何か使えるのではないかという予感でこうしてみました。

オクターブの指定があることで2オクターブの音域が演奏可能となります。
当初、単純に最低音ド、最高音ドの2オクターブを考えていましたが、音楽的には下のソがあると吹ける曲が拡がるような気がしたので、やや変則的ですがソから上のファまでの2オクターブとしてみました。

ということで私が考えた運指は以下になります。


なお、半音上げるときは、左手の中指と薬指を押さえます。
半音下げるときは、左手の中指を開けて、薬指を押さえます。


おかげさまで、小指を使わず3本指で演奏出来る運指が出来ました。
また、ここまでの説明で、音名ではなく階名(ド〜シ)を敢えて使ったことに気付いている人もいるかもしれません。
実はせっかくの電子楽器なのだから、全ての調に合わせることが可能な究極の移調楽器を目指しています。

しかし、吹いてみると分かりますが、笛の運指としてはかなり特異なので、やや感覚に反しており結構頭を使います。
別の見方をすれば、頭の体操には良さそうな楽器かもしれません。

この運指についてはいろいろ賛否はあると思いますし、今後も多少の変更はあるかもしれません。もし、ご意見などありましたら是非お知らせください。