Processing and ...
Pure Data 紹介(導入からFFTまで)なんてのをやってた 友人から、スマホのアプリを作りたいんだけど、開発用のアプリはどんなのがお勧めって聞かれた。スマホは何? アンドロドロイドだそうだ。
iphoneとかだと、macを持っていないと開発出来ないはずだから、少しは楽そう。いや、一択って言う制限が無いから、悩むんだろうね。と、えらそーに言ってるけど、オイラーはこの方面はからきし弱いのさ。
図書館から日経のムック本を借りてきた。 GUIもWebもAndroidも!『これならできる Java入門』。
これによると、JDKを突っ込んでから、ググル様製の Android Stadio ってのをかぶせればいいらしい。
Javaって言う一点をもって、オイラーは尻尾を巻いて逃げ出しますよ。ボラクルは不穏な動きをしてるし、XMLだとか筋が悪すぎ。まあ、みんなが踊るんで、教本には事かなないけどね。でも、こうします、ああしますって説明がダラダラ続くだけで、本質的な事は何も説明がない。素人が手を出すと、挫折するぞ、地獄へ落ちるぞ。(言いすぎた。反省)
広い視点でみると、ネイティブなアプリにするのかWebのアプリにするのかで、開発環境が違ったものになる(そうな)。
どんなアプリを作りたいの? って聞いてみると、自分の(英語の)発声を聞いて、ネイティブスピーカーの発声と比べたいとの事。
それなら、無料で録音アプリが山程あるでしょって返すと、リアルタイムにモニターしたいそうな。マイクで音を拾って、スピーカーに流すんだな。間に、スペクトラム表示器をかませたいと言う希望もあるそうな。
初心者がスマホアプリを開発する時にまず知っておきたい3つの事実
要求からすると、Javaは避けて通れそうにないな。頑張ってください。影ながら応援しております。
Processing
「数学嫌い」をゲームプログラミングで治す方法 なんてのを見てたら、オイラーも Processingしたくなった。
Processing入門!音楽と同期するデジタルアートを作ってみたとか 一般的な音楽ファイルを再生するを参考にやってみるか。(はい、ミーハーの極みであります)
Sound
音源が必要だなあ。WindowsにはCDからリッピングしたのが、わんさかと有るけど、皆M$仕様のフォーマットだから避けておこう。で、パッと思いついたのは下記のやつ。
懐しいな。とりあえずこの音源をDLして、cw.mp3と短かい名前にしておいた。
これをあちこちで提示されてるスクリプトに代入すると、 普通にsoundライブラリィーを使うとJavaが牙を向いて来るなあ。
(DirectAudioDevice.java:513) at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121) at com.jsyn.devices.javasound.JavaSoundAudioDevice$JavaSoundInputStream.start(Unknown Source) at com.jsyn.engine.SynthesisEngine$EngineThread.run(Unknown Source) ArrayIndexOutOfBoundsException: 3 ArrayIndexOutOfBoundsException: 3
あれ、オイラーはjavaなんて取ってきた覚えないんだけどな。
c:\app\processing-3.5.3\java\bin>java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
道理で起動が遅いのね。でも、JDKが無くても平気なの? そこん所は、clojureみたいな仕組みになってるんだろうね。深く追求するのは止しておこう。
別のサウンドライブラリィーを有志が提供してるので、 Class AudioPlayerを利用してみる。
import ddf.minim.*; // minimライブラリのインポート Minim minim; // Minim型変数であるminimの宣言 AudioPlayer player; // サウンドデータ格納用の変数 void setup(){ size(400, 400); minim = new Minim(this); // 初期化 player = minim.loadFile("cw.mp3"); //cw.mp3を読み込む player.play(); // 再生 } void draw(){ } void stop(){ player.close(); //サウンドデータを終了 minim.stop(); super.stop(); }
豊富なサンプルが有るので、迷う事は無いだろう。Minimのサンプルも沢山参照できたぞ。
etc
オーディオファイルをオンラインで変換する これを使うとWindowsの音形式 wma を、mp3とかに変換できるとな。便利な世の中になった事。
<P>練習用mp3音声ファイル集</P> <UL> <LI><A href="MorseAlphabet.mp3">モールスミュージック(読み上げあり)</A> <LI><A href="MorseAlphabetNoVoice.mp3">モールスミュージック(読み上げなし)</A>
そして、音をブラウザー上で鳴らせたのでどうなってるか調べたら、あっけないぐらい簡単に指定してあったので感嘆してる。
PDFファイルをブラウザー画面にドロップすると表示してくれる事は知ってたけど、音ファイルもそうなのね。
p5.jp
processingのホームページ最上段に、姉妹環境と言うか姉妹言語のリンクが配置されてる。 p5.js,Python.pyとかアンドロイド用とかだ。
Pythonと言えば、
世代交代のカウントダウンが表示されているし、一方
お手軽に試せる奴もある。でも、そんなのには見向きもしないのさ。 processingを収めた人なら容易に移行できるとな。
に、手を出してみる。これなら、多分ブラウザーだけ有れば済むでしょうからね。 やっぱりだね。 ブラウザー上で試す環境が用意されてて、ファイルメニューから、好きなexampleを実行できた。敷居を下げる戦略だな。 近頃のJavascriptは頑張っているのね。まあ、何でもWebの時代だと、そうなるわな。
サウンドでFFTのデモが有ったけど、マイクを有効にしろとか言われたので、手元で実験する。
p5.soundのFFTからコピペ(しろって言ってる)
cent:p5$ cat fft.html <html> <head> <script src="p5.min.js"></script> <script src="p5.sound.min.js"></script> <script src="fft.js"></script> </head> <body> </body> </html>
cent:p5$ cat fft.js function preload(){ sound = loadSound('cw.mp3'); } :
赤線で波形が出てきて、緑のバーでスペクトルが表示された。すんばらしいな。 ああ、黒い箱をクリックすれば、勝手に演劇が始まったわい。
但し、ブラウザーが動いているCPUは多忙しで、負荷率が急上昇したぞ。これって、勝手に金鉱を発掘させられる、アレと一緒だな。
おお、こんなのがあるな。processingとp5.jsの間を行ったり来たりする人なら読んでおけって記事だ。 ざっと見、processingの方が、手間要らずだな。
Processing Advent Calendar 2018
ちょいと面白い例を集めてみた。それぞれの*.htmlをクリックしてマウスでグリグリしてみて下さい。
ジェネレーティブアートめちゃ面白い。
こうしてみると、processingもp5.jsも、姉妹なんでお互いを尊重しましょって所かな。